Имитация нажатия клавиш в windows№ 1
Автор: Эдисон Женя
Дата : 17-08-04, Втр, 04:37:25

Всем Привет!
У меня вопрос:
Как можно имитировать нажатие клавиш юзером (под windows) в коде, так чтобы другая программа поймала и отреагировала, на пример на сочетание клавиш ctrl+enter или alt+s.

Я знаю что это возможно, но как не знаю.
Помогите пожалуйста кто может - очень важно для проекта.

Спасибо
Профиль 

Имитация нажатия клавиш в windows№ 2
Автор: Большой Грызь
Дата : 17-08-04, Втр, 04:41:39

Мммм.. еще раз.. ты хочешь, чтобы одна програма послала другой команде сообщение, как будто юзер нажал в той проге какую-то кнопку?
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Имитация нажатия клавиш в windows№ 3
Автор: Edison
Дата : 17-08-04, Втр, 04:46:42

Да, я вычитал в мсдн что можно это делать только надо (на Visual C++) сделать include winuser.h и windows.h
Но примеров не нашёл
Профиль 

Имитация нажатия клавиш в windows№ 4
Автор: Большой Грызь
Дата : 17-08-04, Втр, 04:47:33

По идее можно послать этой апликации сообщения WM_CHAR или WM_SYSCHAR (Для АЛТ+ - точно WM_SYSCHAR, для Стрл+Ентер - возможно WM_CHAR).

С соответствующими параметрами разумеется (как то код нажатой клавиши).

Также может быть, что апликация зарегистрировала указанные сочетания, как HotKey. Тогда, наверное, нужно послать сообщение WM_HOTKEY.

Еще вариант - апликация реагирует не на WM_CHAR (или WM_SYSCHAR), а на WM_KEYDOWN/WM_KEYUP (WM_SYSKEYDOWN/WM_SYSKEYUP)
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Имитация нажатия клавиш в windows№ 5
Автор: Edison
Дата : 17-08-04, Втр, 04:52:17

А можешь подсказать как посылать эти сообщения например для HotKey(на C++),
Профиль 

Имитация нажатия клавиш в windows№ 6
Автор: Большой Грызь
Дата : 17-08-04, Втр, 04:54:33

Смотри.. поэтапно..

1) Для начала надо найти hWnd target-апликации.
2) Вызвать SendMessage(hWnd, WM_msg, wParam, lParam) чтобы послать само сообщение.

Сейчас попытаюсь расписать подробнее
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Имитация нажатия клавиш в windows№ 7
Автор: Большой Грызь
Дата : 17-08-04, Втр, 05:02:26

1-е.. Найти hWnd таргет-апликации можно с помощью FindWindow, которая принимает два параметра:
lpClassName - название класса окошка
lpWindowName - название объекта окошка

Но тут проблема - если не сам писал таргет-апликацию, то можешь не знать этих параметров.

Есть другой вариант - использовать EnumWindows, c помощью которой можно получить список всех открытых тор-level окон - и найти то, которое подходит (по тайтлу, например).

Более подробно - смотри хелп по этой команде.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Имитация нажатия клавиш в windows№ 8
Автор: Edison
Дата : 17-08-04, Втр, 05:07:34

Спасибо Огромное, попытаюсь.
если будут ещё идеи - приму с удовольствием
Профиль 

Имитация нажатия клавиш в windows№ 9
Автор: Большой Грызь
Дата : 17-08-04, Втр, 05:11:47

Что касается отправки сообщения - погляди хелп по SendMessage. Параметры я написал выше. Один из них - это hWnd - который находишь, как описано в постинге №7

WM_cmd - это экспериментируй.. может быть любое из сообщений из постинга №4. Зависит от того, как написана таргет-апликация. Насколько я понял тебе не нужно нечто универсальное, а нечто под данный конкретный случай? Если так - то просто почитай хелп по каждому из сообщений (WM_CHAR, WM_SYSCHAR, WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP, WM_HOTKEY) - там подробно описано какие wParam и lParam (которые указываются в SendMessage) с этими сообщениями идут.

Будут конкретные вопросы - попытаюсь найти, если время будет

Не за что.
Жизнь человека немного стоит по сравнению с его делом.
Но чтобы делать дело, надо жить.
(Э. Хемингуэй)
Профиль 

Имитация нажатия клавиш в windows№ 10
Автор: BlackChaos
Дата : 17-08-04, Втр, 05:17:58

Зайди сюда! Очень толково, доступно и с хорошими исходниками. Думаю не разочаруешься!
Но, если что... пиши попробую помочь.
Я скромен, потому что я гений.
                         (Наум Каштаньер)

[ 17-08-04, Tue, 12:18:46 Отредактировано: BlackChaos ]
Профиль 

Имитация нажатия клавиш в windows№ 11
Автор: Edison
Дата : 17-08-04, Втр, 05:43:16

Ещё раз спасибо, как только будут более конкретние вопросы обращусь
Профиль 

Имитация нажатия клавиш в windows№ 12
Автор: lopolik
Дата : 17-08-04, Втр, 13:42:55

ждемс...
Lopolik
Профиль 


Вы не зарегистрированы либо не вошли в портал!!!
Регистрация или вход в портал - в главном меню.



 Просмотров:   004410    Постингов:   000012