簡単に: WinApi によってウィンドウに送信されるメッセージを評価したい。このウィンドウは私のアプリケーションの一部ではありません。
したがって、メッセージがウィンドウに送信されたときに、
notepad
それらを読み、メモ帳プロセスの実際のウィンドウ proc に転送したいとします。正しいアプローチは何ですか?私はこれまでのところこれを持っています。しかし、うまくいかないようです:
private static IntPtr hook = IntPtr.Zero;
private static IntPtr callWndProc(int code, IntPtr wParam, IntPtr lParam)
{
Console.WriteLine("hello world");
CWPSTRUCT a = new CWPSTRUCT();
Marshal.PtrToStructure(lParam, a);
Console.WriteLine(a.message);
return Windows.CallNextHookEx(hook, code, wParam, lParam);
}
static void Main(string[] args)
{
Process[] procs = Process.GetProcessesByName("notepad");
if (procs.Length > 0)
{
hook = Windows.SetWindowsHookEx(WH_CALLWNDPROC, Marshal.GetFunctionPointerForDelegate((HookProc)callWndProc), procs[0].Handle, procs[0].Id);
// last result: (126) The specified module could not be found.
// hook == 0
}
Console.ReadKey();
}