Windows API一日一練(41)FindWindowEx函數

來源:互聯網
上載者:User
 

當你想控制一個現有的視窗程序時,就需要擷取那個程式的視窗控制代碼。比如有一些駭客軟體需要尋找到視窗,然後修改視窗的標題。在外掛流行的今天,驚奇地發現它們也可以修改輸入視窗的文字。這其中,就需要使用到FindWindowEx函數來錨定視窗。下面就來使用這個函數來實現控制Windows裡帶的計算機程式。開啟計算機程式,最小化在狀態下面,運行本例子,點擊建立按鈕後,就可以點按鈕,就會把計算機顯示在最前面。

函數FindWindowEx聲明如下:

#if(WINVER >= 0x0400)
WINUSERAPI
HWND
WINAPI
FindWindowExA(
    __in_opt HWND hWndParent,
    __in_opt HWND hWndChildAfter,
    __in_opt LPCSTR lpszClass,
    __in_opt LPCSTR lpszWindow);
WINUSERAPI
HWND
WINAPI
FindWindowExW(
    __in_opt HWND hWndParent,
    __in_opt HWND hWndChildAfter,
    __in_opt LPCWSTR lpszClass,
    __in_opt LPCWSTR lpszWindow);
#ifdef UNICODE
#define FindWindowEx FindWindowExW
#else
#define FindWindowEx FindWindowExA
#endif // !UNICODE
hWndParent是找查視窗的父視窗控制代碼,如果父視窗是案頭,就可以設定為NULL。
hWndChildAfter是子視窗開始位置。
lpszClass是視窗註冊的類型。
lpszWindow是視窗的標題。

調用這個函數的例子如下:

#001 //
#002 // 響應命令.
#003 // 蔡軍生 2007/09/20 QQ:9073204
#004 //
#005 LRESULT CCaiWinMsg::OnCommand(int nID,int nEvent)
#006 {
#007  // 菜單選項命令響應:
#008  switch (nID)
#009  {
#010  case IDC_CREATEBTN:
#011        //顯示一個按鈕。
#012        if (!m_hBtn)
#013        {
#014                m_hBtn = CreateWindow(_T("BUTTON"),_T("按鈕"),
#015                    WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
#016                    50,50,100,32,
#017                    m_hWnd,(HMENU)IDC_BTN,m_hInstance,NULL);
#018        }                                         
#019        break;
#020  case IDC_BTN:
#021        {
#022              //尋找計算機的視窗。
#023              HWND hWnd = FindWindowEx(NULL, NULL,NULL,_T("計算機"));
#024              if (hWnd != NULL)
#025              {
#026                    //視窗是否最小化。
#027                    if (IsIconic(hWnd))
#028                    {
#029                          //恢複視窗。
#030                          ShowWindow(hWnd,SW_RESTORE);                         
#031                    }
#032                    else
#033                    {
#034                          //顯示視窗。
#035                          ShowWindow(hWnd,SW_SHOWNORMAL);                       
#036                    }             
#037
#038                    //把視窗顯示到最前面。
#039                    BringWindowToTop(hWnd);
#040
#041                    OutputDebugString(_T("按鈕按下/r/n"));
#042              }             
#043        }       
#044        break;
#045  default:
#046        return CCaiWin::OnCommand(nID,nEvent);
#047  }
#048
#049  return 1;
#050 }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.