|
Вопрос # 2 562/ вопрос открыт / |
|
Здравствуйте уважаемые эксперты!
Каким образом можно реализовать захват окна (например блокнот1), чтобы моя программа отправляла нажатие клавиши только этому окну, даже если оно будет неактивно и если будет открыто второе такое же окно (например блокнот2)?
 |
Вопрос задал: scream (статус: Посетитель)
Вопрос отправлен: 25 марта 2009, 15:10
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 26 марта 2009, 11:57; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 25 марта 2009, 16:00 [#1]:
есть несколько способов отправить нажатия клавиш. Если через посылку сообщения WM_CHAR - то тут достаточно найти хендл нужного окна. (это FindWindow).
Но есть другие способы. Например симуляция клавиатуры. Тут уже нужно обязательно, что бы окно было в фокусе.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
scream (статус: Посетитель), 25 марта 2009, 16:10 [#2]:
но если открыто 2 одинаковых окна, тогда у них хендл будет одинаковый. Как моя программа поймёт какому именно окну нужно послать нажатие?
|
|
Вадим К (статус: Академик), 25 марта 2009, 16:46 [#3]:
у них не может быть одинаковый хендл. никак. Если это и случиться, то это уже будет не важно, так как скорее всего после этого последует синенький экран.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
scream (статус: Посетитель), 26 марта 2009, 11:27 [#4]:
Я получаю хендл активного окна (header:=GetForegroundWindow). Переменную header объявляю глобальной (var header: HWND;....implementation), чтобы её значения передавались во все процедуры. Но как мне потом отправить нажатие клавиши окну, чей хендл хранится в переменной header? После получения хендла окно становится неактивным.
|
|
Вадим К (статус: Академик), 26 марта 2009, 11:57 [#5]:
а главное хендл получить. потом уже не принципиально, активно оно или нет. клавиши можно посылать через посылку WM_CHAR. только в случае блокнота, надо не окну посылать, а окну ввода (то, что обычно называем Memo)
сама посылка будет где то такой
SendMessage(header, WM_CHAR, ord('A'), 0);
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|