2

次の AHK スクリプトは、システム タスクバー トレイの uTorrent アイコンを右クリックすると通常表示されるメニューを自動的に表示します。

DetectHiddenWindows, On
Process, Exist, utorrent.exe
WinGet, W, List, ahk_pid %ErrorLevel%
Loop %W%
 {
 WinGetClass, Class, % "ahk_id" W%A_Index%
 If InStr( Class, "µTorrent" ) {
   hWnd := W%A_Index%
   Break
 }}
PostMessage, 0x8001, 0,0x204,, ahk_id %hWnd% ; Right Click down
PostMessage, 0x8001, 0,0x205,, ahk_id %hWnd% ; Right Click Up

最後の 2 行を除いて、ほとんど理解できました。0x8001 は WM_APP+1 です。WM_APP 範囲のメッセージが使用される理由と、これら 2 つのメッセージが発行されると正確に何が起こるのですか? 説明ありがとうございます。

4

3 に答える 3

1

MSDNによると(http://msdn.microsoft.com/en-us/library/windows/desktop/ms644927(v=vs.85).aspx#system_defined

アプリケーションがバージョン4.0とマークされている場合、プライベートメッセージには0x8000(WM_APP)から0xBFFFの範囲のメッセージ識別子の値を使用できます。

したがって、これは、0x8001がutorrentがメッセージ用に選択した識別子であることを示します。0x204と0x205の値は、それぞれ右クリックの[下]イベントと[上]イベント用です。私の推測では、このコードは、Windowsトレイにあるutorrentのアイコンを右クリックすることをシミュレートすることを目的としています。

また、Autohotkey_Lを使用している場合、コードはおそらく3行に簡略化され、同じように実行できます。

DetectHiddenWindows, On
PostMessage, 0x8001, 0,0x204,, ahk_exe utorrent.exe ahk_class µTorrent ; Right Click down
PostMessage, 0x8001, 0,0x205,, ahk_exe utorrent.exe ahk_class µTorrent ; Right Click Up
于 2012-09-27T15:15:17.510 に答える
1

何かを右クリックすると、コンテキスト メニューが表示されます。コンテキスト メニューは、キーボードのアプリ キー ボタンを押して表示することもできます。これを押すと、Windows はアプリケーションにメッセージ、つまり WM_APP メッセージを送信します。ほとんどのアプリケーションは、コンテキスト メニューを表示して応答します。トレイ アイコンの場合、応答は右クリックに対する応答と同じです。

于 2012-09-17T03:48:48.350 に答える
0

WM_APP+1 メッセージ番号は、アプリケーション (この場合は utorrent) の開発時に選択されたようです。別のメッセージ # だった可能性がありますが、何も魔法ではありません。私が提示したコード (AHK フォーラムからのもの) は、リバース エンジニアリングによって送信するメッセージを理解したと思います。

于 2012-09-18T19:40:43.350 に答える