高分求救呀!怎么能够得到其他进程的句柄??

endy_wqf 2002-09-05 05:49:55
如题!!
...全文
55 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ColdWolf 2002-09-07
  • 打赏
  • 举报
回复
ProcessEntry32 : 一个进程的结构体
CreateToolhelp32Snapshot:创建一个进程的快照,返回可以作为Process32First的第一个参数
Process32First:返回第一个进程的ID
返回的ProcessEntry32中,包含了程序名,你只要比较该程序名是不是你要的就行

Process32Next: 返回下一个进程个ID
CloseHandle:释放进程资源
句体的用法你自己找一下帮助


NeoNeo 2002-09-05
  • 打赏
  • 举报
回复
EnumProcesses
+
OpenProcess

具体信息看msdn
kingzai 2002-09-05
  • 打赏
  • 举报
回复
//Enum Process ID first,then use GetWindowThreadProcessId can get hwnd,these code may help you.
DWORD GetProcessId()
{
DWORD Pid=-1;
HANDLE hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0 PROCESSENTRY32 lPrs;
ZeroMemory(&lPrs,sizeof(lPrs));
lPrs.dwSize=sizeof(lPrs);
Process32First(hSnap,&lPrs);
if (strstr(targetFile,lPrs.szExeFile
{
Pid=lPrs.th32ProcessID;
return Pid;
}

while(1)
{
ZeroMemory(&lPrs,sizeof(lPrs));
lPrs.dwSize=(&lPrs,sizeof(lPrs));
if (!Process32Next(hSnap,&lPrs))//¼ÌÐøö¾Ù½ø³ÌÐÅÏ¢
{
Pid=-1;
break;
}
if (strstr(targetFile,lPrs.szExeFile))
{
Pid=lPrs.th32ProcessID;
break;
}
}

return Pid;

}
In355Hz 2002-09-05
  • 打赏
  • 举报
回复
没有所谓的“全局句柄”,你用 OpenProcess 取得的句柄可能不同于该Process内部得到的,而且每一个用 OpenProcess 打开的 HANDLE 都必须用 CloseHandle 关闭。
In355Hz 2002-09-05
  • 打赏
  • 举报
回复
然后调用OpenProcess(ProcessID)就能得到Process的句柄
In355Hz 2002-09-05
  • 打赏
  • 举报
回复
应该先能得到Process的ID,比如通过 FindWindow(Ex) 找到另一进程的窗口,然后利用 GetWindowThreadProcessId
Rodgu 2002-09-05
  • 打赏
  • 举报
回复
最简单的是用FindWindow(classname,windowtitle)
endy_wqf 2002-09-05
  • 打赏
  • 举报
回复
我要得到的是其他进程的全局句柄!!!!!!
KennyYuan 2002-09-05
  • 打赏
  • 举报
回复
Toolhelp函数族

BoYang2002 2002-09-05
  • 打赏
  • 举报
回复
假定另一进程的文件名(.exe)为texe.exe:

HANDLE hModule=GetModuleHandle("text.exe");

15,471

社区成员

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

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