1,221
社区成员
发帖
与我相关
我的任务
分享
HWND HelpHwnd = (void*)-1 ;
struct EnumParam
{
HWND hMainWnd;
DWORD dwProcessID;
};
BOOL CALLBACK EnumWinProc(HWND hwnd, LPARAM lParam)
{
DWORD dwID;
EnumParam* pep = (EnumParam*)lParam;
GetWindowThreadProcessId(hwnd, &dwID);
if (dwID == pep->dwProcessID)
{
pep->hMainWnd = hwnd;
return 0;
}
return TRUE;
}
void findWindow()
{
EnumParam ep;
STARTUPINFO si;
PROCESS_INFORMATION pi;
ep.hMainWnd = NULL;
memset(&si, 0, sizeof(si));
si.cb = sizeof(STARTUPINFO);
helpFile = "hh c:\\xx.chm";
if (CreateProcess(NULL, helpFile.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
Sleep(100);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
ep.dwProcessID = pi.dwProcessId;
EnumWindows((WNDENUMPROC)EnumWinProc, (long)&ep);
HelpHwnd = ep.hMainWnd; //为NULL,找不着它的窗口句柄
}
}