繁体   English   中英

鼠标左键单击和屏幕键盘

[英]Mouse left click and 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");
    }
}

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

谢谢,

盖伊

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM