如果知道一个进程的句柄,如何得到它的id?

111 2001-03-06 08:04:00
ast
...全文
121 点赞 收藏 7
写回复
7 条回复
panda_w 2001年03月06日
看看这两个贴子
http://www.csdn.net/expert/Topic/40582.shtm
http://www.csdn.net/expert/Topic/8453.shtm
回复 点赞
DataBind 2001年03月06日
为什么要这么做,CreateProcess的参数中
BOOL CreateProcess(
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId; //就是他
DWORD dwThreadId;
} PROCESS_INFORMATION;
回复 点赞
herohowk 2001年03月06日
如果你要的不是当前进程的, 只有枚举所有的进程ID, 在比较每一个ID的handle是否与你的handle相等, 要注意id与handle的生存周期
回复 点赞
herohowk 2001年03月06日
如果你要的不是当前进程的, 只有枚举所有的进程ID, 在比较每一个ID的handle是否与你的handle相等, 要注意id与handle的生存周期
回复 点赞
111 2001年03月06日
可是Shellexecuteex只返回了进程句柄,怎么得到进程ID呢?
回复 点赞
herohowk 2001年03月06日
你没理解CreateProcess(...).
information是生成的参数
回复 点赞
herohowk 2001年03月06日
有两条路线
1, 枚举进程或快照进程(得到所有进程ID),再由ID得到handle(openprocess or toolhelp32)
2, 先由id得到window, 再由window得到handle
回复 点赞
发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6376

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告