發訊息控制其他進程

來源:互聯網
上載者:User

有時候我們想要通過發送訊息的方式控制其他進程,一般用到的知識點記錄如下:

1.  尋找視窗 可以用spy++工具觀察視窗的結構層次

1)HWND FindWindow(
  LPCTSTR lpClassName// pointer to class name
  LPCTSTR lpWindowName  // pointer to window name
);

用此函數來尋找頂層視窗,但是不能用此函數來找子視窗。返回的是視窗的控制代碼

2)HWND FindWindowEx(
  HWND hwndParent,     // handle to parent window
  HWND hwndChildAfter// handle to a child window
  LPCTSTR lpszClass,   // pointer to class name
  LPCTSTR lpszWindow   // pointer to window name
);

用此函數既可以尋找頂層視窗也可以尋找子視窗。第一個參數是要尋找視窗的父視窗的控制代碼,如果要尋找的是頂層視窗則將其置為NULL,第二個參數是表示從哪個視窗之後開始尋找,如果為NULL,則是從該父視窗的第一個子視窗開始尋找。第三個參數標示的是要尋找視窗的類名,最後一個參數標示的是要尋找視窗的視窗標題。

有時候運用此函數一些子視窗尋找不到不知道什麼原因,此時可以將父視窗的子視窗以及後代用遞迴的方式枚舉出來,然後判斷是否是自己要找的視窗。

枚舉視窗主要用到的函數為GetWindow。

2.  對菜單發送訊息

對菜單發送的訊息類型均為WM_COMMAND,可以通過spy++工具撲捉訊息迴圈,然後查看要發送訊息的wParam,以及lParam值。然後用SendMessage或者PostMessage函數發送訊息。這兩函數的區別是SendMessage函數發送訊息以後一直等到訊息處理完成之後返回,而PostMessage函數將訊息發送出去之後不管訊息是否被處理都立即返回。對按鈕發送點擊訊息和對菜單發送訊息差不多,都是用WM_COMMAND。

3.  對樹形控制項發送訊息

void CSendmessageDlg::SendMessageToTreeCtrl(HWND hTree)

{

if (!hTree)

{

       return;

}

//發訊息得到樹的根節點

HTREEITEM hItem = (HTREEITEM)::SendMessage(hTree,TVM_GETNEXTITEM,

       TVGN_ROOT, 0x0);

if (hItem)

{

       //發送訊息展開根節點

       ::SendMessage(hTree, TVM_EXPAND, TVE_EXPAND,(long)hItem);

       //發送訊息選中下一個可見的節點

       hItem = (HTREEITEM)::SendMessage(hTree, TVM_GETNEXTITEM,

              TVGN_NEXTVISIBLE, (long)hItem);

       if (hItem)

       {

              ::SendMessage(hTree, TVM_SELECTITEM, TVGN_CARET, (long)hItem);

       }

}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.