枚举窗口的两种方法

来源:互联网 发布:windows xp 纯净版下载 编辑:程序博客网 时间:2024/06/05 09:39
  1. 方法一:
  2. void CFindWindow1113Dlg::OnButton4() 
  3. {
  4.   HWND hwnd = ::FindWindow("窗口类型""窗口名称");
  5.   if ( hwnd )
  6.   {
  7.      HWND hBtnEnum = ::FindWindowEx(hwnd,0, "Button""EnumWindows");
  8.      if ( hBtnEnum )
  9.      {
  10.         ::EnableWindow(hBtnEnum, TRUE);
  11.      }
  12.   }
  13. )
  14. 方法二:
  15. EnumWindows();
  16. BOOL CALLBACK EnumChildProc(
  17.   HWND hwnd,      // handle to child window
  18.   LPARAM lParam   // application-defined value
  19. )
  20. {
  21.   CString Cshwnd;
  22.   Cshwnd.Format(_T("0x%0x"),hwnd);
  23.   if ( hwnd ==(HWND)0x000606FC)
  24.   {
  25.     AfxMessageBox("sdf");
  26.   }
  27.   TRACE("SubWindow: " + Cshwnd + "/n");
  28.   return TRUE;
  29. }
  30. BOOL CALLBACK EnumWindowsProc(
  31.   HWND hwnd,      // handle to parent window
  32.   LPARAM lParam   // application-defined value
  33. )
  34. {
  35.   CString Cshwnd;
  36.   Cshwnd.Format(_T("0x%0x"),hwnd);
  37.   TRACE(Cshwnd + "/n");
  38.   if ( hwnd ==(HWND)0x001506A6)
  39.   {
  40.     AfxMessageBox("aaa");
  41.   }
  42.   EnumChildWindows(hwnd,EnumChildProc,NULL);
  43.   return TRUE;
  44. }
  45. void CFindWindow1113Dlg::OnButton2() 
  46. {
  47.     // TODO: Add your control notification handler code here
  48.     EnumWindows(EnumWindowsProc, NULL);
  49. }