鼠标左键单击并在屏幕键盘上

时间:2015-06-13 15:00:39

标签: c# .net wpf kinect on-screen-keyboard

我正在编写使用kinect for windows v2来显示和控制左手鼠标的应用程序。我写了一个调用鼠标左键单击的方法,一切都很好。

我有一个动作有问题。如果我启动屏幕键盘,我提到的点击方法不起作用。但是在OSK窗口之外,它仍然可以完美运行。你知道发生了什么吗?这是我的一些代码。

public static void PerformLeftClick()
{
    INPUT mouseDownInput = new INPUT();
    mouseDownInput.type = SendInputEventType.InputMouse;
    mouseDownInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTDOWN;
    SendInput(1, ref mouseDownInput, Marshal.SizeOf(new INPUT()));

    INPUT mouseUpInput = new INPUT();
    mouseUpInput.type = SendInputEventType.InputMouse;
    mouseUpInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTUP;
    SendInput(1, ref mouseUpInput, Marshal.SizeOf(new INPUT()));
}

private void ShowOnScreenKeyboard(object sender, RoutedEventArgs e)
{
    var keyBoardProccess = Process.GetProcessesByName("osk");
    if (keyBoardProccess.Length == 0)
    {
        Process.Start("C:\\Windows\\System32\\osk.exe");
    }
}

1 个答案:

答案 0 :(得分:1)

我预计这是因为Windows OSK以某些特权运行,这些特权阻止其他应用程序向其发送模拟输入。通过使用第三方屏幕阅读器,您可能无法解决问题。此外,根据您的目标,构建您自己的OSK可能相当简单(但根据您希望支持的语言数量,这可能会变得更具挑战性。)

谢谢,