我想写一个虚拟键盘,就像触摸屏电脑的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");
}
Run Code Online (Sandbox Code Playgroud)
有没有办法可以做到这一点?有没有更好的方法让表格将键盘事件发送到正在使用的应用程序?
谢谢!!