已知一个进程的ProcessID,如何得到ExeFileName?
我现在是用进程快照CreateToolhelp32Snapshot,然后一个一个判断与指定的ProcessID是否相等,这样的话可能要遍历所有的进程。我觉得这个方法的效率比较低,有没有更好一些的方法? 问题点数:20、回复次数:8Top
1 楼titi_lima(titilima(李马)的马甲.net)回复于 2003-02-04 12:34:38 得分 10
你可以用OpenProcess取得进程句柄,然后使用GetModuleFileName取得exe文件名。Top
2 楼BirDEY()回复于 2003-02-04 23:37:25 得分 0
请问如何由Process handle得到hmodule?Top
3 楼kingcom_xu(冷羽)回复于 2003-02-04 23:43:51 得分 10
http://www.csdn.net/develop/Read_Article.asp?Id=3073可以借鉴Top
4 楼kingcom_xu(冷羽)回复于 2003-02-04 23:45:16 得分 0
回复人: BirDEY() ( ) 信誉:100 2003-02-04 23:37:00 得分:0
请问如何由Process handle得到hmodule?
-----------
用GetModuleFileNameEx吧Top
5 楼BirDEY()回复于 2003-02-05 10:46:25 得分 0
多谢了,但还有一些问题。
DWORD GetModuleFileNameEx(
HANDLE hProcess, // handle to the process
HMODULE hModule, // handle to the module
LPTSTR lpFilename, // buffer that receives the path
DWORD nSize // size of the buffer
);
hProcess用Process的handle,但我并不知道hModule啊。用NULL吗?
另外我看msdn.microsoft.com中这个函数的例子,好像是包括在psapi.h中的,但我没有这个include文件。我用的是vc6.0Top
6 楼kingcom_xu(冷羽)回复于 2003-02-05 11:23:21 得分 0
是,就是用null,你可以去下载最新的SDK...
但win9x下没有这个函数...
你可以用http://www.csdn.net/develop/Read_Article.asp?Id=3073中的方法Top
7 楼qrlvls( 空 气 )回复于 2003-02-07 20:44:26 得分 0
多谢了,但还有一些问题。
DWORD GetModuleFileNameEx(
HANDLE hProcess, // handle to the process
HMODULE hModule, // handle to the module
LPTSTR lpFilename, // buffer that receives the path
DWORD nSize // size of the buffer
);
hProcess用Process的handle,但我并不知道hModule啊。用NULL吗?
另外我看msdn.microsoft.com中这个函数的例子,好像是包括在psapi.h中的,但我没有这个include文件。我用的是vc6.0
Top
8 楼BirDEY()回复于 2003-02-08 09:36:47 得分 0
我使用的是win2000啊,不过还是多谢kingcom的解答。Top




