現在、EasyHook を使用して user32.dll の「MessageBeep」関数をフックしようとしています。[この例][1] を実行している場合、すべて正常に動作しているようです。しかし、52 行目と 60 行目のスレッド ID をテスト アプリケーションのスレッド ID に置き換えると、他のプログラムにはフックが適用されません。
SetExclusiveACL-Method が他のスレッド ID を受け入れないのはなぜですか? 例えば
hook.ThreadACL.SetExclusiveACL(new int[] { 8788 });
次のコードを使用して、テスト アプリケーションのスレッド ID を取得し、フックが MessageBeep 関数で機能するかどうかを確認しています。
Sub Main()
While True
Console.WriteLine(GetCurrentThreadId().ToString)
MessageBeep(&H40)
If Console.ReadKey().KeyChar = "c"c Then
Console.Clear()
End If
End While
End Sub