首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么获取某个文件的路径

2012-03-05 
如何获取某个文件的路径请问应该如何才能获取某个执行文件的路径?比如我想知道IEXPLORE.EXE这个文件的具体

如何获取某个文件的路径
请问应该如何才能获取某个执行文件的路径?
比如我想知道IEXPLORE.EXE这个文件的具体位置,然后去调用它。
IEXPLORE只是举个例子,有些是自己安装的应用软件。

[解决办法]
http://topic.csdn.net/t/20050306/23/3829184.html
[解决办法]
uses
TlHelp32,psapi;
function GetPathFileofModule(ModuleName:String):String;
var
hProcSnap: THandle;
pProcess: THandle;
pe32: TProcessEntry32;
s: string;
buf:array[0..MAX_PATH] of char;
hMod:HMODULE;
cbNeeded:DWORD;
begin
hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
if hProcSnap = INVALID_HANDLE_VALUE then Exit;
pe32.dwSize := SizeOf(ProcessEntry32);
if Process32First(hProcSnap, pe32) = True then
while Process32Next(hProcSnap, pe32) = True do
begin
if uppercase(pe32.szExeFile)=uppercase(ModuleName) then
begin
pProcess:=OpenProcess(PROCESS_QUERY_INFORMATION or
PROCESS_VM_READ,
FALSE,
pe32.th32ProcessID);
if pProcess <> 0 then
begin
if EnumProcessModules( pProcess,@hMod,sizeof(hMod),cbNeeded) then
begin
ZeroMemory(@buf,MAX_PATH+1);
GetModuleFileNameEx(pProcess, hMod,buf,MAX_PATH+1);
Result:=strpas(buf);
end;
end;
end;
end;
CloseHandle(hProcSnap);
end;
------------------------------------
调用方法:
ShowMessage(GetPathFileofModule( 'program.exe '));
[解决办法]
浩方我不晓得你玩过没,比如说你进入的是星际,那点他的启动按纽,那就会运行你本地的星际游戏。
-----------------

没玩过。但我可以给你肯定地说:如果不是在注册表或INI或Recent等类似的特定位置储存该程序的信息,那它只有遍历整个硬盘!
并不是所有的程序都会为你留下这些信息的!
[解决办法]
Uses Registry;
.............
var
reg:Tregistry; //定义注册表类
qqpath,IEpath:string;
begin
reg:=Tregistry.Create;//创建注册表项
reg.RootKey:=HKEY_LOCAL_MACHINE;//定义主键所在的根键
reg.OpenKey( 'SOFTWARE\Classes\Applications\iexplore.exe\shell\open\command ',true);
IEpath:=reg.ReadString( ' ');//取IE路径,得到的是 c:\xxxx....\iexplorer.exe %1
IEpath:=copy(copy(IEpath,1,length(IEpath)-2);//去掉最后的 %1
IEpath:=ExtractFilePath(IEpath);//取路径
reg.CloseKey;
//用同样的方法取QQ路径
reg.OpenKey( 'software\Tencent\QQ ',true);
qqpath:=reg.ReadString( 'Install ');//取到路径
reg.CloseKey;
reg.Destroy;
end;

热点排行