如果我运行了一个名为program.exe的文件,如何根据program.exe这个进程名来获取这个文件的路径?望各位高手赐教!谢谢!
解决方案 »
- 这个XML文件要怎么读取出来
- 请问,如何用程序封掉端口
- 请教 odac 中 StoredProcName 做什么用的?????
- 学delphi好找工作吗?
- 请教!在com+的服务端如何取得客户端的ip地址,急用!! 高手们帮帮我
- 能否给我一个DELPHI下的与ADO可以绑定的表格控件,要漂亮一些的,只要能显示数据就行
- 100块大洋寻求我的问题.我真的要吐血了!!!UP有分.
- 过几天要出去玩,但是老板交待的任务没有完成怎么办,那只有清兄弟们帮忙了!
- 如何用函数返回一个记录集集?
- 关于object pascal的类的几个基本问题请您解答
- ORALCE中BLOB字段问题
- 如何导出别的程序里DBGRID中的数据??
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'));
的方法在98系统下测试未通过,怎么办
我的Blog都有的9X?一早就淘汰了http://lysoft.7u7.net
我一直对你有种疑惑,大部分的帖子都有你的口水。俺要登录了你的http://lysoft.7u7.net看了,也看了你的简历,你的技术水平让俺刮目相看。
可是象你这样的高水平的人怎么会有这么多的时间来灌水呢,你的简历里写道:
-----------月薪要求: 全职:使用期4000,正式不低于5000 ----------------------------
你这样的水平还没找到如此好薪水的工作,我们这些虾米怎么混呀
var
vProcSnap: THandle;
vProcess: THandle;
vProcessEntry32: TProcessEntry32;
vBuffer: array[0..MAX_PATH] of char;
T: string;
L: Integer;
begin
Result := '';
vProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
mModuleName := UpperCase(mModuleName);
vProcessEntry32.dwSize := SizeOf(ProcessEntry32);
if Process32First(vProcSnap, vProcessEntry32) then
while Process32Next(vProcSnap, vProcessEntry32) do
begin
vProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
False, vProcessEntry32.th32ProcessID);
try
if GetModuleFileNameEx(vProcess, 0, vBuffer, SizeOf(vBuffer)) <> 0 then
T := vBuffer
else T := vProcessEntry32.szExeFile;
L := Length(mModuleName);
if FileExists(T) and
(Pos(mModuleName, UpperCase(T)) = Length(T) - L + 1) and
(Copy(T, Length(T) - L, 1) = '\') then
begin
Result := T;
Break;
end;
finally
CloseHandle(vProcess);
end;
end;
CloseHandle(vProcSnap);
end; { GetPathFileOfModule }