はあなたがフックしたい場合は:私は私のテストアプリケーションのスレッドIDを取得し、フックがのMessageBeep関数に動作するかどうかを確認するには、次のコードを使用してい
hook.ThreadACL.SetExclusiveACL(new int[] { 8788 });
ターゲットプロセス、あなたのターゲットプロセスにあなたのDLLを注入する必要がある、EasyHookはすでにそれを行う方法を提供しています。その注入されたDLLの中で、MessageBeepのLocalHookを設定することができます。以下はRemoteHooking.Inject
更新
//create channel to send text data and log
RemoteHooking.IpcCreateServer<LogChannel>(ref _logChannelName, WellKnownObjectMode.Singleton);
RemoteHooking.IpcCreateServer<TextDataChannel>(
ref _textDataChannelName, WellKnownObjectMode.Singleton);
CommandChannel = new Common.IPC.CommandChannel();
string filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + INJECT_DLL_NAME;
RemoteHooking.Inject(processID,InjectionOptions.DoNotRequireStrongName,
filePath,
filePath,
_logChannelName, _textDataChannelName, CommandChannel.PipeName, _pendingMsgType);
を使用して注入を行うためのサンプルコードです:あなたが「他のプログラム」によって何を意味していますこのリンクにhttps://www.codeproject.com/Articles/27637/EasyHook-The-reinvention-of-Windows-API-hooking
を参照することができますか? –
私は2つのアプリケーションを持っています: 1. EasyHook開発者が提供する例 2.上記のコードを持つvb.netの私のテストプログラム 元の例では、スレッドIDがSetExclusiveACL(new int [] { 0}); ist 0(フックが現在のスレッドに適用されることを意味します)。私は任意のスレッドIDにフックを適用したいが、私はこの作業を行うことはできない – user4841702
つまり、アプリケーションAでMessageBeepのフックを設定するあなたはアプリケーションBでMessageBeepを呼び出します。そして、アプリケーションAのフック関数が実行されると思いますか? –