我想写一个虚拟键盘,比如用于触摸屏电脑的 Windows 屏幕键盘。但是我的虚拟键盘从正在使用的应用程序中窃取焦点时遇到问题。即使用户单击它,Windows 屏幕键盘也会将焦点保持在当前应用程序上。有没有办法在 C# 中对 windows 窗体做同样的事情?
我现在唯一能做的就是将键盘事件发送到特定的应用程序,例如以下代码中的记事本。如果我可以使表单不可聚焦,我可以使用 GetForegroundWindow 获得当前聚焦的窗口。
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
IntPtr calculatorHandle = FindWindow("notepad", null);
SetForegroundWindow(calculatorHandle);
SendKeys.SendWait("111");
}
有没有办法做到这一点?关于让表单将键盘事件发送到正在使用的应用程序的更好方法的任何建议?
谢谢!!