[Moscow.pm] Win32::GuiTest Open Context Menu Key

Nikolay Mishin mi на ya.ru
Вт Ноя 29 06:02:51 PST 2011


Спасибо Дим, криво, но прошло с Win32::GuiTest::GetWindowRect:

  SetForegroundWindow($w);
    my ( $x, $y ) = Win32::GuiTest::GetWindowRect($w);
    Win32::GuiTest::MouseMoveAbsPix( $x + 242, $y + 613 );

    sleep 1;
    for ( 1 .. 4 ) {
        SendKeys("{DOWN}");
    }

    SendRButtonDown();
    SendRButtonUp();

итоговый скрипт (запуска воркфлоуменеджера информатики):

https://gist.github.com/1384894

игрушки , конечно, приукольные, но нужно быть аккуратным,
очень жаль что нельзя посылать сигнал именно окну по его id
, а нужно его предварительно сделать 
  SetForegroundWindow($w);
ну такая уж, видимо, событийная модель виндоуз
22.11.2011, 08:56, "Dmitry Karasik" <dmitry на karasik.eu.org>:
>>  14 строка посылает enter SendKeys("~");
>>  , в notepad это работает, а вот
>>  в java-приложении у меня будет работать, если я
>>  дважды кликну (или 1 раз) на пункт этого меню (понятно, что там и контекстное меню другое)
>>  как вычислить координату этого меню и послать туда сигнал мыши
>>
>>  MouseMoveAbsPix( ( $x, $y);
>>       sleep(1);
>>  SendMouse("{LeftClick}");
>>
>>  как вычислить $x и $y ?
>>
>>  p.s. здесь http://www.perl.com/pub/2005/08/11/win32guitest.html еще хорошо написано, но это не помогает
>>  help!
>
> Если EnumWindows или как там его не помогает на явовских приложениях ( в чем я очень сомневаюсь, т.к. контекстное
> меню как ни крути, а будет иметь системный HWND, а значит его можно найти ), то можно на самый худой конец
> анализировать пиксели с помощью Win32::GUIRobot
>
> --
> Sincerely,
> Dmitry Karasik
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org

--
Nikolay Mishin


Подробная информация о списке рассылки Moscow-pm