UWP:在 Windows IoT 上模拟点击特定坐标
UWP: Simulate click at specific coordinates on Windows IoT
有没有办法在 Windows IoT 上模拟特定坐标处的点击?
我试过 mouse_event:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
但是,我得到这个错误:
System.EntryPointNotFoundException: 'Unable to find an entry point named 'mouse_event' in DLL 'user32.dll'.'.
难道物联网版Windows没有那个功能?
我看到有 SendInput,但文档中的唯一语法是 C++。是否可以在 Windows IoT 上的 C# 中使用它?如果可以,如何使用?如果您有一个示例,将其链接起来会很有帮助。我四处搜索,但找不到可以在 UWP 上运行的东西。
这是我用于 mouse_event:
的代码
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetCursorPos")]
private static extern bool SetCursorPos(int X, int Y);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
public const int MOUSEEVENTF_RIGHTDOWN = 0x08;
public const int MOUSEEVENTF_RIGHTUP = 0x10;
//...
public void Click(int x, int y)
{
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
}
mouse_event nor SendInput 都不能在 UWP 应用程序中使用。如文件所述,这些 API 用于
desktop apps only
如果您 运行 来自 UWP 应用程序(显然您是),则无法自动执行另一个 UWP 应用程序。沙盒不允许这样做。这包括 UI Automation.
自 Windows IOT(SDK 版本 16299)的秋季创意者更新发布起,您可以在 UWP 应用程序中使用 InputInjector API:https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Input.Preview.Injection.InputInjector
API 允许在其他输入类型中注入鼠标输入。
有没有办法在 Windows IoT 上模拟特定坐标处的点击?
我试过 mouse_event:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
但是,我得到这个错误:
System.EntryPointNotFoundException: 'Unable to find an entry point named 'mouse_event' in DLL 'user32.dll'.'.
难道物联网版Windows没有那个功能?
我看到有 SendInput,但文档中的唯一语法是 C++。是否可以在 Windows IoT 上的 C# 中使用它?如果可以,如何使用?如果您有一个示例,将其链接起来会很有帮助。我四处搜索,但找不到可以在 UWP 上运行的东西。
这是我用于 mouse_event:
的代码[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetCursorPos")]
private static extern bool SetCursorPos(int X, int Y);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
public const int MOUSEEVENTF_RIGHTDOWN = 0x08;
public const int MOUSEEVENTF_RIGHTUP = 0x10;
//...
public void Click(int x, int y)
{
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
}
mouse_event nor SendInput 都不能在 UWP 应用程序中使用。如文件所述,这些 API 用于
desktop apps only
如果您 运行 来自 UWP 应用程序(显然您是),则无法自动执行另一个 UWP 应用程序。沙盒不允许这样做。这包括 UI Automation.
自 Windows IOT(SDK 版本 16299)的秋季创意者更新发布起,您可以在 UWP 应用程序中使用 InputInjector API:https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Input.Preview.Injection.InputInjector
API 允许在其他输入类型中注入鼠标输入。