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

111 2001-03-06 08:04:00
ast
...全文
247 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧