Как отправлять нажатия клавиш / сообщения в Windows 7 с помощью C ++ и Windows API? - PullRequest
2 голосов
/ 08 февраля 2012

Может ли программа отправлять нажатия клавиш или сообщения в Windows 7 (в операционной системе, в которой она запущена), чтобы имитировать, например, эффект физического нажатия пользователем клавиши Windows на клавиатуре; в C ++, используя Windows API?

Ответы [ 3 ]

4 голосов
/ 08 февраля 2012

Начинающие часто пытаются отправить ключи в Windows, потому что они думают, что это самое простое решение. На это легко ответить, сказав, что это возможно. Часто, после того, как разработчик инвестирует значительное количество времени, это становится сложным. Одна из причин, по которой это сложно, заключается в том, что вы должны убедиться, что элемент управления (текстовое поле или что-то еще) имеет фокус. Затем вам нужно что-то сделать, чтобы обработать данные, например нажать кнопку. Возможно, вам придется прочитать окно, чтобы решить, что делать дальше.

Альтернативой является повышение уровня и попытка управления приложением путем доступа к элементам управления и их родительскому элементу (окну). Другими словами, вы можете поместить данные в текстовое поле непосредственно в виде строки, а не вводить в нее ключи. Вы можете отправить уведомление BN_CLICKED в Windows вместо того, чтобы посылать кнопку ввода для нажатия кнопки. Вы должны искать способы сделать это. Это вполне возможно.

Познакомьтесь со Spy ++; это инструмент, который действительно может помочь вам изучить элементы управления и окна и тому подобное.

4 голосов
/ 08 февраля 2012

Функция SendInput была доступна целую вечность и должна делать именно то, что вам нужно.

2 голосов
/ 08 февраля 2012

Вы можете сделать любой смоделированный ввод, используя SendInput , однако вы ограничены уровнем целостности приложения (то есть вы не можете вводить данные в приложения, которые имеют более высокий уровень, чем ваш).

...