Имитация перемещения мыши / нажатия / нажатия клавиш в приложении, которое не активно - PullRequest
1 голос
/ 30 апреля 2009

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

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

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

Ответы [ 2 ]

3 голосов
/ 30 апреля 2009

Вы можете сделать следующее:

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

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

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

0 голосов
/ 30 апреля 2009

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

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

Класс Java-роботов

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

...