很久沒有碰VB了(以前喜歡用),現在突然自己需要一個小程式,而且是實時監控,讓它幫我完成一個小功能:
如何自動幫我點擊彈出對話框里的確定按鈕?這些要求后臺完全,不影響正常的滑鼠、鍵盤的操作(如上網、娛樂等等)
uj5u.com熱心網友回復:
這跟“平臺”無關吧!各種編程環境中,思路都差不多。
如果是在“用戶操作”中彈出的訊息框,這個訊息應該都是處于“前臺”的活動視窗,
可以用 GetForegroundWindow( ) 獲取到訊息框句柄,
然后以此句柄值查找到“確定”按鈕的句柄,向它發送 WM_LBUTTONDBLCLK 就可以了。
如果是“后臺程式”運行之中,在某種情況下出現訊息提示,那就要按視窗類名、視窗標題來找視窗了。
要實作所謂的”實時監控“,一個是HOOK視窗創建相關的幾個API(難度較大),
這樣可以截獲創建的視窗是不是“被監控”的訊息框、它的句柄值是多少。
方法二,就容易實作了,就是用“定時器”事件,不停的“找”有沒有被監控視窗(訊息框)出現。
如果找到了(出現了),就再找它的“確定”按鈕的句柄,發送WM_LBUTTONDBLCLK訊息。
畢竟多數情況下,關閉“訊息框”實時性要求并不高,只要定時器的時鐘周期稍短點就行了。
uj5u.com熱心網友回復:
另外,如果訊息框是只有“確定”的那種,不用找“確定”按鈕的句柄,直接向訊息框發送 WM_CLOSE 就行了。uj5u.com熱心網友回復:
如何“按視窗類名、視窗標題來找視窗”?可否詳細說說,因為確實不懂,而目前僅僅需要這樣的一個小程式,所以很難做到再次系統的學習VB.net…………請大神指點。
uj5u.com熱心網友回復:
是用VS2010里自帶的SPY++嗎?
uj5u.com熱心網友回復:
會用Spy++嗎 ? (或者類似功能的別的工具)在你要“監控”的那個訊息框出現時,看看它的類名、標題文字啊!
如果是“看起來很普通”的那種訊息框,多半都是呼叫User32.dll中的 MessageBox實作的,
它的“類名”就是#32770, 標題文本就是標題欄上顯示的文字了。
如果是“自繪的訊息框”,就要用工具軟體來看類名和標題文本了。
比如數字流氓的訊息,它的類名是 Q360HIPSClass ,標題好像就是“看到”的標題(記不清楚了,我沒安裝數字流氓)。
再比如QQ,它“右下角彈窗”,訊息框類名是TXGuiFoundation,你可能“看到的標題”是五花八門的有很多不同;
但事實上,它的那個“真正標題文本”只有兩個:騰訊視頻 和 大成新聞網
無論VB6,還是VB.NET ,使用API的“原則”都是一樣的。
只是在“細節”上有一些差別而已:比如,如何宣告或參考dll匯出函式的“寫法”上有所不同。
你自己搜一下 FindWindow和FindWindowEx這兩個API的介紹吧,網上到處都是……
我再在這兒重復也沒有什么意義。
uj5u.com熱心網友回復:
我說的Spy++就是那個,VC、VS都帶著的,只要安裝時選擇了“工具”這個組件,它肯定就會被安裝。
畢竟對“編程”來說,只要牽涉到“要處理其它程式的視窗”,基本就離不開它(或類似的替代工具)。
uj5u.com熱心網友回復:
http://www.autohotkey.com轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/54322.html
標籤:API
