| 
| 
 | Вопрос # 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);
 Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |