如何将外部窗口模拟为聚焦窗口? 我需要这个,因为我想将密钥发送到记事本窗口,它只有在记事本窗口具有焦点时才有效。但我不想把注意力放在我自己的窗户上。
public IntPtr Find(string taskName, string windowName)
{
return Fenster.FindWindow(taskName, windowName);
}
public void Send(IntPtr hwnd, string text)
{
if (!hwnd.Equals(IntPtr.Zero))
{
SendKeys.Send(text);
}
}
public bool SetForeground(IntPtr hwnd)
{
return SetForegroundWindow(hwnd);
}
[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lp1, string lp2);
[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetForegroundWindow(IntPtr hWnd);
非常感谢!
答案 0 :(得分:1)
最佳解决方案是获取您要控制的窗口的HWND
并发送密钥消息(WM_KEY_DOWN
和WM_KEY_UP
或WM_CHAR
- 可能取决于应用和目的)直接通过SendMessage
或PostMessage
。