我想得到一个应用程序的主窗口,这个窗口无标题,类就是普通的client,用FindWindow找不出来。
我就按以前一位大侠说的用EnumWindow,可是现在出现一些问题,不知如何解决。
我有一段源代码如下://自定义的数据结构,在函数中使用
typedef struct tagWNDINFO
{
   DWORD dwProcId;
   HWND hWnd;
} WNDINFO, *LPWNDINFO;//EnumWindow使用的回调函数
BOOL CALLBACK MyEnumProc(HWND hWnd,LPARAM lParam)
{
        DWORD dwProcId;
        
        GetWindowThreadProcessId(hWnd, &dwProcId);//
       
        LPWNDINFO pInfo = (LPWNDINFO)lParam;
        
        if(dwProcId == pInfo->dwProcId)
        {

            pInfo->hWnd = hWnd;//这里我主要想返回和一个进程ID相关联的主窗口
            return FALSE;
        }
       
        return TRUE;
}//FindDataWindow函数在主函数中被调用
HWND FindDataWindow(LPCTSTR  ClassName,LPCTSTR  TitleName)
{
    WNDINFO  wi;
    PROCESS_INFORMATION  processInfo;
    STARTUPINFO siStartInfo;
    siStartInfo.cb = sizeof(STARTUPINFO); 
    siStartInfo.lpReserved = NULL;
    siStartInfo.lpReserved2 = NULL; 
    siStartInfo.cbReserved2 = 0;
    siStartInfo.lpDesktop = NULL; 
    siStartInfo.dwFlags = 0;    CreateProcess("C:\\Program Files\\BusHound\\bushound.exe",//我在这里随便用的一个程序
 NULL,
                   NULL,
 NULL,
  0,
  0,
  NULL,
  NULL,
  &siStartInfo,
  &processInfo);
   if(processInfo.dwProcessId)
   {
       wi.dwProcId=processInfo.dwProcessId;
       wi.hWnd=NULL;
       EnumWindows(MyEnumProc,(LPARAM)&wi);
       return wi.hWnd;
   }
   else
   {
return NULL;
   }
}我发现在回调函数中并不能把我想要的窗口枚举出来,总是返回空。不知哪位大侠了解是不是像我这样处理?
请指点?