EnumThreadWindows - EnumThreadWndProc does not get called
I am using EnumThreadWindows to enumerate all windows of newly created
process using CreateProcess. EnumThreadWndProc gets called for notepad
but does not get called for MS Word. I am not able to figure out why it
is happening, Here is piece of code.
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( TEXT("C:\\Program Files\\Microsoft
Office\\OFFICE11\\winword.exe"), NULL,NULL,NULL,FALSE,FALSE,0,NULL,NULL,&si,&pi
)
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}
Sleep(10000);
WaitForInputIdle(pi.hProcess,10000);
// Enumerate all threads of Windows
BOOL bRetVal =
EnumThreadWindows(pi.dwThreadId,EnumThreadWndProc,(LONG)this);
if(! this->m_hWnd )
return;
BOOL CALLBACK EnumThreadWndProc(HWND hwnd,LPARAM lParam)
{
CMainFrame *pFrameWnd = (CMainFrame*)lParam;
if(GetMenu(hwnd) != NULL)
{
pFrameWnd->m_hWnd = hwnd;
return FALSE;
}
return TRUE;
}
Thanks ,
Ajay