已知进程句柄,如何知道此进程的主窗口句柄
2008-06-11 13:06
435 查看
已知进程句柄,如何知道此进程的主窗口句柄,在此说明两种方法:
1. 调用FindWindow(),前提是必须知道该进程中窗口类名和窗口名,返回后的句柄可以通过IsWindow()函数来验证是否是有效的窗口句柄.
2.先枚举全部窗口,再枚举回调函数中调用GetWindowThreadProcessID()得到窗口得进程ID,再与以前得到得ID比较.如果不一致,不处理,若一致,循环调用GetParent()一直到返回NULL, 最后得hwnd即为顶层窗口句柄
以上内容参考:http://topic.csdn.net/t/20050612/13/4076646.html
1. 调用FindWindow(),前提是必须知道该进程中窗口类名和窗口名,返回后的句柄可以通过IsWindow()函数来验证是否是有效的窗口句柄.
HWND hWnd = ::FindWindow(szClassName, szWndName); if(::IsWindow(hWnd)) { // 处理该窗口 }
2.先枚举全部窗口,再枚举回调函数中调用GetWindowThreadProcessID()得到窗口得进程ID,再与以前得到得ID比较.如果不一致,不处理,若一致,循环调用GetParent()一直到返回NULL, 最后得hwnd即为顶层窗口句柄
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam ) { unsigned long id; HWND thwnd; id=GetWindowThreadProcessId(hwnd,NULL); if (id==lParam) { while((thwnd=GetParent(hwnd))!=NULL) hwnd=thwnd; CString x; x.Format("HWND = %x",hwnd); MessageBox(NULL,x,NULL,MB_OK); return false; } return true; } void CMt2Dlg::OnButton1() { // TODO: Add your control notification handler code here STARTUPINFO StartInfo; PROCESS_INFORMATION ProceInfo; ZeroMemory(&StartInfo,sizeof(StartInfo)); StartInfo.cb=sizeof(StartInfo); CreateProcess(NULL, //lpApplicationName: PChar "calc.exe", //lpCommandLine: PChar NULL, //lpProcessAttributes: PSecurityAttributes NULL, //lpThreadAttributes: PSecurityAttributes true, //bInheritHandles: BOOL CREATE_NEW_CONSOLE, NULL, NULL, &StartInfo, &ProceInfo); Sleep(100); //这是必须的,因为 CreateProcess 不能马上Active windows EnumWindows(EnumWindowsProc,ProceInfo.dwThreadId); }
以上内容参考:http://topic.csdn.net/t/20050612/13/4076646.html
相关文章推荐
- 已知进程句柄,如何知道此进程的主窗口句柄
- 已知道 一个窗口的句柄, 如何扑捉该窗口的onresize 事件,并在onresize 事件中写入自己的代码?
- 知道窗口句柄如何知道文件名?
- 已知IWebBrowser2接口,如何获得其Internet Explorer_Server窗口句柄?
- 转:VC:如何根据文件名来获取程序进程和窗口句柄的代码(转载)
- Process 后, 如何获取打开窗口的句柄(根据进程句柄获取窗口句柄)
- 如何在其它程序窗口(已知窗口的句柄)加上一个按钮
- 如何隐藏已知句柄的窗口
- 已知IE窗口的句柄,如何由此得到IHTMLdocument2接口?
- 如何根据进程id获取该进程的主窗口句柄
- 如何获取某个进程的主窗口以及创建进程的程序名(进程映像名)
- 通过进程名获取窗口句柄
- 根据句柄如何获取该进程的所有线程(转)
- NT/XP 下如何知道系统从一开始起动总共运行了多少进程?
- 如何获得窗口句柄(HWND )和改变窗口属性
- Linux 有问必答:如何知道进程运行在哪个 CPU 内核上?
- 获取进程名,获取进程路径,获取当前进程的窗口句柄。
- WIN API-VFP获取第三方窗体的控件信息(句柄,窗口ID,进程ID,类名,标题)
- 通过进程ID获得该进程主窗口的句柄
- 如何捕捉窗口句柄