鼠标左键单击和屏幕键盘
Mouse left click and On-Screen-Keyboard
我正在编写应用程序,它使用 windows v2 的 kinect 来用左手显示和控制鼠标。我编写了调用鼠标左键单击的方法,一切正常。
我有一个动作有问题。如果我启动屏幕键盘,我提到的点击方法不起作用。但在 OSK windows 之外,它仍然可以完美运行。你知道这是怎么回事吗?这是我的一些代码。
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 方屏幕 reader,您就不会遇到这个问题。此外,根据您的目标,构建您自己的 OSK 可能相当简单(但这可能会变得更具挑战性,具体取决于您要支持的语言数量。)
谢谢,
家伙
我正在编写应用程序,它使用 windows v2 的 kinect 来用左手显示和控制鼠标。我编写了调用鼠标左键单击的方法,一切正常。
我有一个动作有问题。如果我启动屏幕键盘,我提到的点击方法不起作用。但在 OSK windows 之外,它仍然可以完美运行。你知道这是怎么回事吗?这是我的一些代码。
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 方屏幕 reader,您就不会遇到这个问题。此外,根据您的目标,构建您自己的 OSK 可能相当简单(但这可能会变得更具挑战性,具体取决于您要支持的语言数量。)
谢谢,
家伙