UWP mouse_event функцию от User32.dll не нажимают - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть приложение в WPF, которое отлично работает (его имитатор ввода для тестирования), по некоторым причинам я должен преобразовать его в UWP ver 18362.

Я обнаружил, что mouse_event из User32.dll не работает. Я могу переместить мышь за пределы окна, но не могу никуда щелкнуть. А когда окно выгружено, движение событий не работает. Есть ли какие-то возможности, которые мне не хватает или что?

[DllImport("User32.dll")]
private static extern bool SetCursorPos(int x, int y);

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, UIntPtr dwExtraInfo);
private const uint MOUSEEVENTF_LEFTDOWN = 0x02;
private const uint MOUSEEVENTF_LEFTUP = 0x04;
private const uint MOUSEEVENTF_RIGHTDOWN = 0x08;
private const uint MOUSEEVENTF_RIGHTUP = 0x10; 

...

        void Click(int x, int y){
            SetCursorPos(_random.Next(x + 0, x + 100), _random.Next(y + 0, y + 100));
            mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, new UIntPtr());
        }

В результате мышь перемещается в нужное положение, а не щелкает.

1 Ответ

0 голосов
/ 22 апреля 2020

Это ожидаемое поведение, при котором метод mouse_event не работает в приложениях UWP. Поскольку на основе этой статьи мы видим, что mouse_event поддерживается только в приложениях для настольных ПК, но не поддерживается в приложениях UWP.

>> У меня есть приложение в WPF, который работает нормально (симулятор ввода для тестирования)

Если вы хотите реализовать симуляцию пользовательского ввода в UWP, пожалуйста, проверьте следующую статью:

Имитация ввода пользователя с помощью ввода ввода :

https://docs.microsoft.com/en-us/windows/uwp/design/input/input-injection.

...