Конференция "WinAPI" » Как послать нажатие клавиши F2 а затем клавишу "A" [D7, WinXP]
 
  • trix (23.09.09 18:25) [0]
    Как послать нажатие клавиши F2 а затем клавишу "A" стороннему приложению. Приложение со скрытой формой, знаю только хендл заголовка, разные keybd_event не подходят. Если можно пример для F2, дальше сам справлюсь.
  • trix (23.09.09 18:29) [1]
    пробовал так
    SendMessage(h, wm_char, 121, 0);

    не работает.
  • Leonid Troyanovsky © (23.09.09 18:46) [2]

    > trix   (23.09.09 18:29) [1]

    > SendMessage(h, wm_char, 121, 0);

    Скрытые окна, во-ще, не обязаны обрабатывать клавиатурный ввод.

    Если это, дейс-но, скрытое окно, то, вероятно, на F2 оно срабатывает
    через RegisterHotKey, и, сл-но, keybd_event вполне уместен.

    Подозрительно лишь то, что F2 vs Ctrl+Shift+Alt+F2, бо конфликт
    слишком вероятен.

    Поэтому, лучше неторопливо рассказать, про приложение
    и что за окна оно скрывает.

    --
    Regards, LVT.
  • trix (23.09.09 18:52) [3]
    keybd_event не подходит ввиду того, что оконо не активно!

    все равно как-то можно, так как
     PostMessage(cwnd, WM_LBUTTONDOWN, 0, 0);
     PostMessage(cwnd, WM_LBUTTONUP, 0, 0);



    прекрасно работает и на приложениях со скрытой формой.
  • Leonid Troyanovsky © (23.09.09 19:00) [4]

    > trix   (23.09.09 18:52) [3]

    > keybd_event не подходит ввиду того, что оконо не активно!

    Значит, RegisterHotKey можно исключить.

    Партизанство, IMHO, неуместно.
    У приложения есть другие (нескрытые) окна?
    Скрытое окно есть child?

    > прекрасно работает и на приложениях со скрытой формой.

    Это свезло.

    --
    Regards, LVT.
  • trix (23.09.09 19:10) [5]
    WM_SYSKEYDOWN   79 440001
    WM_SYSKEYUP  79 C0440001

    при нажатии в любой открытой форме, пытаюсь сделать вот так, чтобы повторить это нажатие в любой форме.

    PostMessage(h,WM_SYSKEYDOWN,79,440001);
    PostMessage(h,WM_SYSKEYUP,79,$C0440001);

    хендл окна получаю верный, но ничего не происходит.
  • Leonid Troyanovsky © (23.09.09 19:14) [6]

    > trix   (23.09.09 19:10) [5]

    > PostMessage(h,WM_SYSKEYDOWN,79,440001);
    > PostMessage(h,WM_SYSKEYUP,79,$C0440001);

    > хендл окна получаю верный, но ничего не происходит.

    Ерундой болтаешь.

    Я ж, вроде, понятно спросил.

    И с чего это вдруг WM_SYSKEY.

    --
    Regards, LVT.
  • trix (23.09.09 19:15) [7]
    Хорошо, как вообще послать нажатие клавиши любому приложению. Клавиша F2, приложение неактивно, знаем только хендл заголовка.
  • trix (23.09.09 19:22) [8]
    обычный notepad
  • trix (23.09.09 19:32) [9]
    для нотепада работает
     PostMessage(h, WM_keydown, vk_f2, 0);
     PostMessage(h, WM_keyUP, vk_f2, 0);

    но этоне для всех приложений, для других просто нет такой обработки
  • Leonid Troyanovsky © (23.09.09 19:36) [10]

    > trix   (23.09.09 19:15) [7]

    > Хорошо, как вообще послать нажатие клавиши любому приложению.
    >  Клавиша F2, приложение неактивно, знаем только хендл заголовка.

    Считай, что никак.

    > обычный notepad

    А чего такого notepad делает по F2?

    Впрочем, notepad проcт:
    http://groups.google.com/group/fido7.ru.delphi/msg/925bebee0309bec9

    --
    Regards, LVT.
 
Конференция "WinAPI" » Как послать нажатие клавиши F2 а затем клавишу "A" [D7, WinXP]
Есть новые Нет новых   [134433   +24][b:0][p:0.001]