好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 77341991 于 2014-4-28 15:15 编辑
//方法一 SendMessage WM_CLOSE 无效
HWND GetProcessIdToHand(DWORD dwProcessID)
{
HWND hWnd = FindWindowEx(HWND_MESSAGE,0,NULL,0); //HWND_MESSAGE 仅查找所有消息窗口
int nCount = 0;
while(hWnd)
{
DWORD pid = 0;
DWORD dwTheardId = GetWindowThreadProcessId(hWnd,&pid);
//OutputDebugString(sPath+"\r\n");
if(dwProcessID == pid)
break;
hWnd = GetNextWindow(hWnd,GW_HWNDNEXT); //同级别下一个
}
return hWnd;
}
//方法2 使用SendMessage有效 建议用这个
HWND GetProcessIdToHand(DWORD dwProcessId)
{
HWND _hWnd = FindWindow(0,0);
_hWnd = GetNextWindow(_hWnd,GW_HWNDLAST); //同级别最后一个
while(_hWnd)
{
DWORD lpdwProcessId;//标识地址符
DWORD tid=::GetWindowThreadProcessId(_hWnd,&lpdwProcessId);//取进程ID
//CString strName = GetProcessExeName(lpdwProcessId);
if(lpdwProcessId == dwProcessId)
{
TCHAR lpClassName[MAX_PATH] = {0};
GetClassName(_hWnd,lpClassName,MAX_PATH);
if(stricmp(lpClassName,"这里填写你要查找的主窗体类名") == 0) //
{
return _hWnd;
}
}
_hWnd = GetNextWindow(_hWnd,GW_HWNDPREV); //同级别上一个
}
return 0;
}
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|