Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
Ламерок   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.042 c
15-1201840674
Ивриил
2008-02-01 07:37
2008.03.09
Может ли бог так разогреть курицу, что не сможет ее съесть?


11-1185096701
Dy1
2007-07-22 13:31
2008.03.09
Посоветуйте плз компонент для печати


6-1182092002
Степан
2007-06-17 18:53
2008.03.09
Узнать название подключения по IP


15-1201789120
Oleg_teacher
2008-01-31 17:18
2008.03.09
InnoSetup


10-1132058772
ForgotPass
2005-11-15 15:46
2008.03.09
COM-объект FlashGet ("JetCar.Netscape")





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский