Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.09;
Скачать: CL | DM;

Вниз

Эмуляция нажатия клавиши в окне.   Найти похожие ветки 

 
Ламерок   (2007-03-05 14:39) [0]

Подскажите пожалуйста как можно программно нажать клавишу F12 в чужом окне ?


 
Сергей М. ©   (2007-03-05 14:45) [1]

Послать ему WM_KEYDOWN c кодом VK_F12


 
Leonid Troyanovsky ©   (2007-03-05 14:50) [2]


> Ламерок   (05.03.07 14:39)  

> Подскажите пожалуйста как можно программно нажать клавишу
> F12 в чужом окне ?

Если чужое окно активно, то SendInput, keybd_event.

--
Regards, LVT.


 
Ламерок   (2007-03-05 15:20) [3]

на  SendMessage(h,WM_KEYDOWN, VK_F12,0); окно никак не реагирует, будь оно активно или не активно... SendInput тоже что то не пашет, потому что окно никак не реагирует ((


 
Leonid Troyanovsky ©   (2007-03-05 15:24) [4]


> Ламерок   (05.03.07 15:20) [3]

>  будь оно активно или не активно... SendInput тоже что то
> не пашет, потому что окно никак не реагирует ((


Показывай код и откуда посылешь.

--
Regards, LVT.


 
Ламерок   (2007-03-05 15:28) [5]

Не знаю как послать SendInput конкретному окну, поэтому послаю просто так :
var
Inp: TInput;
I: Integer;
begin
Inp.Itype := INPUT_KEYBOARD;
Inp.ki.wVk := VK_F12;
Inp.ki.dwFlags := 0;
SendInput(1, Inp, SizeOf(Inp));

Inp.Itype := INPUT_KEYBOARD;
Inp.ki.wVk := VK_F12;
Inp.ki.dwFlags := KEYEVENTF_KEYUP;
SendInput(1, Inp, SizeOf(Inp));


ЗЫ. keybd_event(VK_F12, MapVirtualKey(VK_F12, 0), 0, 0);
keybd_event(VK_F12, MapVirtualKey(VK_F12, 0), KEYEVENTF_KEYUP, 0);

Тоже не помогает.


 
Сергей М. ©   (2007-03-05 15:28) [6]


> на  SendMessage(h,WM_KEYDOWN, VK_F12,0); окно никак не реагирует


А обязано ?)


 
Ламерок   (2007-03-05 15:30) [7]

Я пытаюсь написать некого так скажем "бота" для лентяев, чтобы не тыкать все время нужные кнопки в окне - моя программа будет их наживать сама. Но, пока ничего не получается(


 
Ламерок   (2007-03-05 15:35) [8]

Помогите с решением проблемы пожалуйста)


 
Leonid Troyanovsky ©   (2007-03-05 15:39) [9]


> Ламерок   (05.03.07 15:28) [5]

> Не знаю как послать SendInput конкретному окну, поэтому

Она и посылет конкретному - тому, которое в данный момент
имеет фокус ввода (см. также GetForegrondWindow).

Т.е., вопрос - откуда, потому, как из обработчика кнопки
не выйдет, нужен, хотя бы, таймер.

--
Regards, LVT.

PS MapVirtualKey сейчас не пишут, т.е. 0


 
Сергей М. ©   (2007-03-05 15:40) [10]


> Ламерок   (05.03.07 15:30) [7]


Ты, ""ламерок", не ответил на вопрос в [6])...


 
Ламерок   (2007-03-05 15:45) [11]

>Leonid Troyanovsky ©
>Она и посылет конкретному - тому, которое в данный момент
В таком  случае она не работает на этом окне. Потому что я послал по таймеру и активнм окном у меня было именно то злополучное окно в которое и надо посылать...

>Сергей М. ©
>А обязано ?)
А почему не обязано ?) Все по моему правильно написано)


 
Сергей М. ©   (2007-03-05 15:49) [12]


> А почему не обязано ?


А почему обязано-то ?)

Мож оно, то самое окно того самого приложения, видимым образом реагирует только на "клавишу нажал + клавишу отпустил" ?

Об этом твоя светлая голова не дотумкала, так надо понимать ?)


 
Leonid Troyanovsky ©   (2007-03-05 15:50) [13]


> Ламерок   (05.03.07 15:45) [11]

> >Она и посылет конкретному - тому, которое в данный момент
> В таком  случае она не работает на этом окне. Потому что
> я послал по таймеру и активнм окном у меня было именно то
> злополучное окно в которое и надо посылать...

Что за окно-то? И точно ли оно было foreground?
На дельфи срабатывает? Должна форма переключаться
между текстом и формой.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-03-05 15:51) [14]


> Сергей М. ©   (05.03.07 15:49) [12]

> А почему обязано-то ?)

На SendMessage уж точно не обязано.

--
Regards, LVT.


 
Сергей М. ©   (2007-03-05 15:58) [15]


> Leonid Troyanovsky ©   (05.03.07 15:51) [14]


?


 
Leonid Troyanovsky ©   (2007-03-05 16:07) [16]


> Сергей М. ©   (05.03.07 15:58) [15]

WM_KEYDOWN c PostMessage еще можно как-то представить.
Но не Send.

--
Regards, LVT.


 
Сергей М. ©   (2007-03-05 16:15) [17]


> Leonid Troyanovsky ©   (05.03.07 16:07) [16]


Ах ты вон о чем) ..

Ну да фих с ним - пусть будет асинхронно, согласен без возражений.

В дан.случае это НЕпринципиально - либо целевой обработчик дожидается KEYUP-сообщения, прежде чем что-то "чудить" на экране, либо не дожидается и творит на экране некое действо сразу по получению KEYDOWN .. Сие только автору ведомо)...


 
Ламерок   (2007-03-05 16:29) [18]

>Сие только автору ведомо)...
Сие автору ведомо. Окно отказывается реагировать на эти команды, будь то PostMessage или SendMessage.

Можете на примере показать как правильно "нажимать кнопки" в чужом окне?


 
Leonid Troyanovsky ©   (2007-03-05 16:32) [19]


> Ламерок   (05.03.07 16:29) [18]

> Можете на примере показать как правильно "нажимать кнопки"
> в чужом окне?

Пример чужого окна в студию.

--
Regards, LVT.


 
Сергей М. ©   (2007-03-05 16:41) [20]


> Ламерок   (05.03.07 16:29) [18]


Ты вообще-то понимаешь разницу между "нажать", "отжать" и "нажать+отжать" ?


 
Ламерок   (2007-03-05 16:45) [21]

>Ты вообще-то понимаешь разницу между
Вообще то да.

>Пример чужого окна в студию.
Каким образом пример в студию? Название окна сказать ?)


 
Сергей М. ©   (2007-03-05 17:01) [22]


> Ламерок   (05.03.07 16:45) [21]


> Вообще то да.
>


Вообще-то и вопрос твой по-иному тогда должен был быть задан.


 
Ламерок   (2007-03-05 17:06) [23]

>Вообще-то и вопрос твой по-иному тогда должен был быть задан.
Подскажите, как можно программно эмулировать нажатия клавиш в чужом окне?
Так?

ЗЫ.
Так вы мне поможете или нет ?


 
Сергей М. ©   (2007-03-05 17:11) [24]


> Ламерок   (05.03.07 17:06) [23]

ЧТО тебе не понятно ?

Ведь все уже разжевано ...


 
Leonid Troyanovsky ©   (2007-03-05 17:12) [25]


> Ламерок   (05.03.07 16:45) [21]

> Каким образом пример в студию? Название окна сказать ?)

Название программы, окна и т.п.

Кстати, я спрашивал насчет дельфи и F12 на дизайнере.

--
Regards, LVT.


 
Ламерок   (2007-03-05 17:24) [26]

>ЧТО тебе не понятно ?
>Ведь все уже разжевано ...
Мне не понятно КАК сделать так чтобы окно реагировало. Ни одним методом которым я пробовал не получилось. Покажите рабочий примерчик например...

>Название программы, окна и т.п.
Сетевая игра Lineage II.    Название окна -  " Lineage II ".  )


 
Leonid Troyanovsky ©   (2007-03-05 17:30) [27]


> Ламерок   (05.03.07 17:24) [26]

> Сетевая игра Lineage II.    Название окна -  " Lineage II

Ну, это может быть и вовсе не окно (в интересующем нас смысле).
Попробуй натравить на него winsight / spy++ и кинь сюда
протокол происходящего при нажатии F12.

--
Regards, LVT.


 
имя   (2007-03-24 20:54) [28]

Удалено модератором


 
имя   (2007-03-25 15:47) [29]

Удалено модератором


 
имя   (2007-04-20 00:55) [30]

Удалено модератором


 
имя   (2007-07-16 22:19) [31]

Удалено модератором


 
имя   (2007-07-16 22:20) [32]

Удалено модератором


 
имя   (2007-07-17 07:53) [33]

Удалено модератором


 
имя   (2007-07-17 07:54) [34]

Удалено модератором


 
имя   (2007-07-17 07:54) [35]

Удалено модератором



Страницы: 1 вся ветка

Текущий архив: 2008.03.09;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.013 c
2-1202659042
Strate
2008-02-10 18:57
2008.03.09
Скрыть вкладки в TPageControl


15-1202060677
Kostafey
2008-02-03 20:44
2008.03.09
С днем рождения ! 3 февраля


3-1192988935
Николай Валуев
2007-10-21 21:48
2008.03.09
обновление данных


15-1202066898
Чародей
2008-02-03 22:28
2008.03.09
Программный 3д ускоритель


4-1184173897
kernel
2007-07-11 21:11
2008.03.09
Работа с HDD