Имитировать перемещение мыши / щелчок / нажатие клавиши в приложении, которое не активно

StackOverflow https://stackoverflow.com/questions/806376

  •  03-07-2019
  •  | 
  •  

Вопрос

Я знаю, как имитировать события мыши и клавиатуры, но они действуют так, как если бы их создал пользователь, поэтому они повлияют на активное окно.Что мне нужно, так это смоделировать один из этих входных данных, но в окне, которое не активно.

Я не говорю, что он сведен к минимуму, представьте, например, что у вас есть MSPaint и notepad.Блокнот лежит перед краской.И вы хотите имитировать щелчки мыши в определенных координатах окна paint, но без установки его активным, что позволит пользователю продолжать использовать блокнот, который находится рядом с paint.

Возможно ли это вообще?Спасибо!

Это было полезно?

Решение

Вы могли бы сделать следующее:

1) получить HWND окна, внутри которого вы хотите смоделировать события.Для того чтобы сделать это, вы можете использовать FindWindow функция, которая принимает два параметра, одним из которых является имя класса window (вы можете использовать NULL), а другой - название окна (подробности см. В документации MSDN).;

2) отправьте сообщение в нужное окно, используя SendMessage функция.Параметрами являются:предыдущий полученный дескриптор окна (HWND), сообщение (которое может быть, например WM_KEYDOWN, или WM_MOUSEMOVE, WM_LBUTTONDOWN и т.д.), то WPARAM сообщения (которое в случае WM_KEYDOWN является виртуальным ключевым кодом ключа) и, наконец, LPARAM сообщения (которое в случае WM_KEYDOWN является довольно сложным, и вам следует проверить MSDN для получения подробной информации).

На мой взгляд, этого достаточно для того, что вы намерены сделать.

Другие советы

Ну, если бы вы знали JAVA, вы могли бы использовать класс robots.

Этот класс используется для генерации собственных системных событий ввода в целях автоматизации тестирования, автономных демонстраций и других приложений, где требуется управление мышью и клавиатурой

Класс Java robots

Может быть, в .net есть что-то похожее?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top