日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

獲得桌面所有窗口句柄的方法總結

 @IT小小鳥@ 2012-02-17
第一種方法:
  1.先獲得桌面窗口
  CWnd* pDesktopWnd = CWnd::GetDesktopWindow();
  2.獲得一個子窗口
  CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD);
  3.循環(huán)取得桌面下的所有子窗口
  while(pWnd != NULL)
  {
      //獲得窗口類名
      CString strClassName = _T("");//應該用TCHAR,用CStrting沒有測試通過.
      ::GetClassName(pWnd->GetSafeHwnd(),strClassName.GetBuffer(256),256);
      //獲得窗口標題
      CString strWindowText = _T("");
      ::GetWindowText(pWnd->GetSafeHwnd(),strWindowText.GetBuffer(256),256);
      //繼續(xù)下一個子窗口
      pWnd = pWnd->GetWindow(GW_HWNDNEXT);
   }
 
第二種方法:
    1.定義存放窗口句柄變量,和下標計數(shù)器
      HWND m_hWndFind[1000]; int m_Index;
    2.先寫一個BOOL CALLBACK EnumWndProc(HWND hwnd,LPARAM lParam) 的回調函數(shù).
    BOOL  CAllwindowsDlg::EnumWindowsProc(HWND hWnd, LPARAM lParam)
    {
      //查找可見的窗口
      if(::GetWindowLong(hWnd,GWL_STYLE)& WS_VISIBLE)
      {
        m_hwndFind[m_Index] = hWnd;//record the HWND handle into array
        m_Index++;//count start
       }
       return 1;
     }
     3.調用(這個回調函數(shù)回自動遞歸的便利所有可見窗口,直到完畢)
     ::EnumWindows(CAllwindowsDlg::EnumWindowsProc,NULL);
     4.取得窗口名稱和類名
     for(int i = 0;i <=m_Index;i++)
     {
        HWND m_wnd = m_hwndFind[i];
        ::GetWindowText(m_wnd,m_store,128);
        ::GetClassName(m_wnd,m_strClass,MAX_PATH-1);
        //獲得窗口類名
        CString strClassName = _T("");
        ::GetClassName(m_wnd,strClassName.GetBuffer(256),256);
        //獲得窗口標題
        CString strWindowText = _T("");
        ::GetWindowText(m_wnd,strWindowText.GetBuffer(256),256);
     }

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多