Visual Studio Tools - Spy++
Spy++來顯示執行中的程式的各項資訊,包括執行緒、開啟的視窗,以及隱藏的視窗等等。有了這些資訊我們可以透過API呼叫的方式來控制應用程式,不需要了解應用程式如何implement.
以Windows Media Player為例:
開啟Spy++,選擇紀錄檔訊息.
將搜尋工具的準星移到目標程式上的最外框.訊息中的"文字"與"類別"是我們需要的.
先清除全部,再選擇WM_COMMAND.按下確定後開始監控.
執行想擷取的動作,如"播放/暫停".Spy++會收到訊息.
訊息欄位說明:第一欄-訊息編號. 第二欄-視窗代碼. 第三欄-訊息代碼:S(代表送出),R(代表收到),P(代表posted),S(代表訊息已送出,但是安全管制設定禁止你取用傳回值). 第四欄-訊息、參數和傳回值選擇訊息的屬性.
選擇屬性.
wParam的16進位值是我們需要的參數.
開啟VB.Net專案,宣告參數及Function.Public WM_MCOMMAND As Integer = Val("&H111")
Public WM_KEYDOWN As Integer = Val("&H100")
Public WM_CHAR As Integer = Val("&H102")
Public WM_KEYUP As Integer = Val("&H101")
Declare Auto Function FindWindow Lib "USER32.DLL" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr
Declare Auto Function SendMessage Lib "USER32.DLL" _
(ByVal hWnd As IntPtr, ByVal Msg As Integer, _
ByVal wParam As Integer, ByVal lParam As Integer) As Integer
開啟WMP後,Call Function來執行播放/暫停的功能.Dim wmplayerHandle As IntPtr = FindWindow("WMPlayerApp", "Windows Media Player")
SendMessage(wmplayerHandle, WM_MCOMMAND, Val("&H4978"), 0)
範例程式下載
Ref:
HOW TO:以程式碼模擬滑鼠和鍵盤事件
WM_COMMAND Notification
5 意見:
感謝大大無私分享
我以前一直都想要寫控制程式的程式。有點類似middleware的東西。不過在GUI上一直不曉得怎麼做,像是鍵盤精靈之類的東西根本無法有效操控應用程式,看起來用spy++是個好方法。
期待你的新作阿~
請問在2008上是否有相同或類似的工具? 我一直找不到!
如否,是否齊其他的網路工具可以使用,十分感謝
張貼留言