怎样获取当前具有输入焦点控件的窗口句柄?
WindowAPI那里发帖没人理
其中 _p 是目标程序的 Process 实例,selfPID 是 创建前者进程 的 主程序进程ID。。获取到的 focusdhandle 一直是 0
我是想监控程序收到的按键消息,同时也可以发送消息给目标进程有焦点的控件
之前给目标窗体发消息,在目标进程的 WndProc 截获到了发送过去的消息,然而里面仅有的一个文本框句柄竟然获取不到。。
至于监控目标程序收到的消息,我想用钩子来做但是失败了,无法获取ModelHandle
常见的单机游戏如果全屏运行的话,是不是只要给这个主窗体发消息就可以了?
整理一下我想问的:怎样给另一个程序中当前焦点控件比如文本框之类的发送按键消息?

WinAPI.AttachThreadInput((uint)_p.Id, (uint)selfPID, true);
IntPtr focusdhandle = WinAPI.GetFocus();
WinAPI.AttachThreadInput((uint)_p.Id, (uint)selfPID, false);
Console.WriteLine(focusdhandle);
其中 _p 是目标程序的 Process 实例,selfPID 是 创建前者进程 的 主程序进程ID。。获取到的 focusdhandle 一直是 0
我是想监控程序收到的按键消息,同时也可以发送消息给目标进程有焦点的控件
之前给目标窗体发消息,在目标进程的 WndProc 截获到了发送过去的消息,然而里面仅有的一个文本框句柄竟然获取不到。。
Process _p = Process.GetProcessById(pInfo.dwProcessId);
while (!_p.HasExited)
{
if (_p.MainWindowHandle.ToInt32() != 0)
{
mainWindowHandle = _p.MainWindowHandle;
break;
}
}
_p.WaitForInputIdle();
WinAPI.PostMessageSafe(mainWindowHandle, 0x0100, 0x41, 0);
_p.WaitForExit();
至于监控目标程序收到的消息,我想用钩子来做但是失败了,无法获取ModelHandle
private static void SetHook(PROCESS_INFORMATION pInfo)
{
WinAPI.HookProc hook = myHookProc;
Process p = Process.GetProcessById(pInfo.dwProcessId);
IntPtr modelhandle = WinAPI.GetModuleHandle(p.MainModule.ModuleName);//获取不到,一直返回 0
curHook = WinAPI.SetWindowsHookEx(HookType.WH_KEYBOARD, myHookProc, modelhandle, (uint)pInfo.dwThreadId);
int error = Marshal.GetLastWin32Error();
if (error != 0)
{
throw new Win32Exception(error);
}
}
private static IntPtr myHookProc(int code, IntPtr wParam, IntPtr lParam)
{
Keys key = (Keys)wParam.ToInt32();
Console.WriteLine(key);
return WinAPI.CallNextHookEx(IntPtr.Zero, code, wParam, lParam);
}
常见的单机游戏如果全屏运行的话,是不是只要给这个主窗体发消息就可以了?
整理一下我想问的:怎样给另一个程序中当前焦点控件比如文本框之类的发送按键消息?
...全文


