欢迎来到天天文库
浏览记录
ID:50588979
大小:28.00 KB
页数:3页
时间:2020-03-12
《VC由进程ID获取窗口句柄的各种方法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、VC++通过进程名或进程ID获取进程句柄HANDLEGetProcessHandle(intnID)//通过进程ID获取进程句柄{returnOpenProcess(PROCESS_ALL_ACCESS,FALSE,nID);}HANDLEGetProcessHandle(LPCTSTRpName)//通过进程名获取进程句柄{HANDLEhSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);if(INVALID_HANDLE_VALUE==hSnapshot){returnNULL;}PR
2、OCESSENTRY32pe={sizeof(pe)};BOOLfOk;for(fOk=Process32First(hSnapshot,&pe);fOk;fOk=Process32Next(hSnapshot,&pe)){if(!_tcscmp(pe.szExeFile,pName)){CloseHandle(hSnapshot);returnGetProcessHandle(pe.th32ProcessID);}}returnNULL;}VC由进程ID获取窗口句柄HWNDGetWindowHandleByPID(DWORDdwProcessID
3、){HWNDh=GetTopWindow(0);while(h){DWORDpid=0;DWORDdwTheardId=GetWindowThreadProcessId(h,&pid);if(dwTheardId!=0){if(pid==dwProcessID/*yourprocessid*/){//herehisthehandletothewindowreturnh;}}h=GetNextWindow(h,GW_HWNDNEXT);}returnNULL;}HWNDGetHwndByPid(DWORDProcessId)//进程ID取窗口句柄{W
4、INDOWINFOWinInfo1[255];HWND_hwnd=0;DWORDaa=EnumWindowInfo(WinInfo1);for(inti=0;i5、FO{DWORD dwProcessId;HWND hWnd;} WNDINFO, *LPWNDINFO;BOOL CALLBACK YourEnumProc(HWND hWnd,LPARAM lParam){DWORD dwProcessId;GetWindowThreadProcessId(hWnd, &dwProcessId);LPWNDINFO pInfo = (LPWNDINFO)lParam;if(dwProcessId == pInfo->dwProcessId){pInfo->hWnd = hWnd;return FALSE;}re6、turn TRUE;}HWND GetProcessMainWnd(DWORD dwProcessId){WNDINFO wi;wi.dwProcessId = dwProcessId;wi.hWnd = NULL;EnumWindows(YourEnumProc,(LPARAM)&wi);return wi.hWnd;}
5、FO{DWORD dwProcessId;HWND hWnd;} WNDINFO, *LPWNDINFO;BOOL CALLBACK YourEnumProc(HWND hWnd,LPARAM lParam){DWORD dwProcessId;GetWindowThreadProcessId(hWnd, &dwProcessId);LPWNDINFO pInfo = (LPWNDINFO)lParam;if(dwProcessId == pInfo->dwProcessId){pInfo->hWnd = hWnd;return FALSE;}re
6、turn TRUE;}HWND GetProcessMainWnd(DWORD dwProcessId){WNDINFO wi;wi.dwProcessId = dwProcessId;wi.hWnd = NULL;EnumWindows(YourEnumProc,(LPARAM)&wi);return wi.hWnd;}
此文档下载收益归作者所有