有两个问题,都是关于查找窗口的,只是两种方法一:比如有10个程序标题都是为:地球,如果循环查找出这10个句柄,好象用个FindWindowEx方法吧?
CString str="地球";
HWND hwnd=::FindWindow(NULL,str);
二:枚举所有窗口句柄,并且查找标题,好象用的下面两个函数,可否举例说明
EnumWindows
GetWindowText

解决方案 »

  1.   

    http://blog.csdn.net/bluesky_03/archive/2008/04/22/2314978.aspx
      

  2.   

      //EnumWindowsProc是回调函数   
      回调函数EnumWindowsProc为:   
      BOOL   CALLBACK   EnumWindowsProc(HWND   hwnd,LPARAM   lparam)   
      {   
      CString   strPrompt;   
      DWORD   ProcId;   
      DWORD   ThreadId;   
      ThreadId=GetWindowThreadProcessId(hwnd,&ProcId)   
      if(ProcId==ProcessInfo.dwProcessId)   
      {   
      HWND   targetWin;   
      targetWin=hwnd;   
      while(true)   
      {   
      HWND   hTemp;   
      hTemp=GetParent(targetWin);   
      if(hTemp==NULL)   
      break;   
      else   
      targetWin=hTemp;   
      }   
      char   szTemp[255];   
      sprintf(szTemp,"%x",ProcId);   
      CString   strTemp=szTemp;   
      GetWindowText(targetWin,strTemp.GetBuffer(255),255);   
      return   FALSE;   
      }   
      else   
      return   true;   
      }   
      

  3.   

    感谢~~~不过都没提到FindWindowEx函数呀?是不是这个不能用在循环中呢?
      

  4.   

    FinWindow效率有问题的,如果有几个一样的窗口,那它始终只能找到最上面一个窗口,下面的同名同类窗口都找不到,要想查找所有窗口就得用EnumWindows
      

  5.   

    枚举窗口吧 记得findwindow不太好用