Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Отправить нажатие клавиши


Автор: Perl_sapiens 22.8.2008, 02:20
Приветствую всех читающих smile 

Задача такова: надо чтобы програмка на перле находила окно другого приложения по его заголовку и именно ей(т.е. чтобы другие, третьи, программы не среагировали на это событие) отправляла  нажатие определенной клавиши(в моём случае это клавиши F1-10). И всё это в WindowsXP
Как это можно реализовать?

Спасибо

---
Проще говоря Как отправить в чужое окно нажатие клавиш?

Автор: shamber 22.8.2008, 08:32
Уважаемый Perl_sapiens, читайте про winApi.
Есть там SendMessage и PostMessage. Они Вам помогут кнопочки жмякать.

Есть еще чудный модуль на cpan, который делает именно то что Вам нужно.

http://search.cpan.org/~karasik/Win32-GUIRobot-0.05/lib/Win32/GUIRobot.pm

Или же http://search.cpan.org/~karasik/Win32-GuiTest-1.54/lib/Win32/GuiTest.pm

Автор: Perl_sapiens 22.8.2008, 15:06
Про Жмякать: там не то, увы

Автор: shamber 22.8.2008, 15:44
Цитата(Perl_sapiens @  22.8.2008,  02:20 Найти цитируемый пост)
Задача такова: надо чтобы програмка на перле находила окно другого приложения по его заголовку и именно ей(т.е. чтобы другие, третьи, программы не среагировали на это событие) отправляла  нажатие определенной клавиши(в моём случае это клавиши F1-10).


из описания модуля

Win32::GUIRobot - send keyboard and mouse input to win32.
Сам модуль не использовал, потому наверняка не знаю, какую функцию использовать.
Добавлено @ 15:46
А по второй ссылке, даже дан пример того как послать нажатие кнопки активному окну

Код

use Win32::GuiTest qw(FindWindowLike GetWindowText 
    SetForegroundWindow SendKeys);

  $Win32::GuiTest::debug = 0; # Set to "1" to enable verbose mode

  my @windows = FindWindowLike(0, "^Microsoft Excel", "^XLMAIN\$");
  for (@windows) {
      print "$_>\t'", GetWindowText($_), "'\n";
      SetForegroundWindow($_);
      SendKeys("%fn~a{TAB}b{TAB}{BS}{DOWN}");
  }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)