FindWindow使用方法

2021-09-06 20:31:54 字數 1136 閱讀 2209

函式功能:該函式獲得乙個頂層窗體的控制代碼,該窗體的類名和窗體名與給定的字串相匹配。這個函式不查詢子窗體。在查詢時不區分大寫和小寫。

函式型:hwnd findwindow(lpctstr ipclassname,lpctstr ipwindowname);

引數:ipclassname :指向乙個指定了類名的空結束字串,或乙個標識類名字串的成員的指標。假設該引數為乙個成員,則它必須為前次呼叫theglobafaddatom函式產生的全域性成員。該成員為16位,必須位於ipclassname的低 16位,高位必須為 0。

ipwindowname:指向乙個指定了窗體名(窗體標題)的空結束字串。假設該引數為空,則為全部窗體全匹配。

返回值:假設函式成功,返回值為具有指定類名和窗體名的窗體控制代碼;假設函式失敗,返回值為null。

c#中使用該函式首先匯入命名空間:

using system.runtime.interopservices;

然後寫api引用部分的**,放入 class 內部

[dllimport("user32.dll", entrypoint = "findwindow")] private extern static intptr findwindow(string lpclassname, string lpwindowname);

這個函式有兩個引數,第乙個是要找的窗體的類,第二個是要找的窗體的標題。在搜尋的時候不一定兩者都知道,但至少要知道當中的乙個。有的窗體的標題是比較easy得到的,如"計算器",所以搜尋時應使用標題進行搜尋。但有的軟體的標題不是固定的,如"記事本",假設開啟的檔案不同,窗體標題也不同,這時使用窗體類搜尋就比較方便。假設找到了滿足條件的窗體,這個函式返回該窗體的控制代碼,否則返回0。比如:

intptr hwnd = findwindow(null, "計算器"); if (hwnd != intptr.zero) else hwnd = findwindow("notepad", null); if (hwnd != intptr.zero) else

從上面的討論中能夠看出,假設要搜尋的外部程式的窗體標題比較easy得到,問題是比較簡單的。可假設窗體的標題不固定或者根本就沒有標題,怎麼得到窗體的類呢?這時我們可使用microsoft spy++,執行spy++,按alt+f3,在彈出的介面中拖動目標圖示到程式上就可以。

FindWindow使用方法

函式功能 該函式獲得乙個頂層窗體的控制代碼,該窗體的類名和窗體名與給定的字串相匹配。這個函式不查詢子窗體。在查詢時不區分大寫和小寫。函式型 hwnd findwindow lpctstr ipclassname,lpctstr ipwindowname 引數 ipclassname 指向乙個指定了類...

pythonpip使用方法 pip使用方法整理

匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...

盡量不要使用FindWindow

盡量不用 findwindow 最近發現 se6和 se5程序共存時視窗名稱一樣引起的 bug。原因是我們經常使用 findwindow 來獲得視窗控制代碼,然後進行訊息通訊,這樣呼叫簡單,但增加了不同模組之間的依賴性,比如同時有兩個程序時,就可能會找錯視窗。而如果靠人去維護這個視窗名稱,在程式工程...