Perl: выбор элемента щелчком правой кнопки мыши по папке в Windows

#windows #perl #mouseevent #win32gui #win32ole

#Windows #perl #mouseevent #win32gui #win32ole

Вопрос:

В рамках моего теста автоматизации я должен щелкнуть правой кнопкой мыши по папке и выбрать один из вариантов с использованием Perl в Windows10.

Перейдите к ‘C:MyProject ‘, Щелкните правой кнопкой мыши по «журналам», присутствующим там, и выберите «Закрепить для запуска» (в качестве примера).

Я следовал некоторым из примеров, упомянутых здесь —https://www.perl.com/pub/2005/08/11/win32guitest.html / и здесь —https://metacpan.org/pod/Win32::GuiTest::Examples. Я пытался это сделать с помощью Win32 ::GuiTest.

Я могу открыть проводник с каталогом, выбрать папку и щелкнуть правой кнопкой мыши. Однако я не могу выбрать опцию после щелчка правой кнопкой мыши.

 use strict;
use warnings;
use Data::Dumper;

use Win32::GuiTest qw(:ALL);

$Win32::GuiTest::debug = 0;

sub bring_window_to_front {
     my $window  = shift;
     my $success = 1;

     if ( SetActiveWindow($window) ) {
         print "* Successfully set the window id: $window activen";
     }
     else {
         print "* Could not set the window id: $window activen";
         $success = 0;
     }
     if ( SetForegroundWindow($window) ) {
         print "* Window id: $window brought to foregroundn";
     }
     else {
         print "* Window id: $window could not be brought to foregroundn";
         $success = 0;
     }
     return $success;
}

my $explorer_path = "%windir%/explorer.exe";
my $folder_path = "C:\MyProject";

# Open the location
system ($explorer_path, $folder_path);
sleep 2;

my @whnds = FindWindowLike( undef, "^MyProject", "" );
if( !@whnds ){
    die "Cannot find window with title/caption MyProjectn";
}
else{
    printf( "Window handle of MyProject is %xn", $whnds[ 0 ] );
}

sleep 2;

# select the logs directory
SendKeys("logs");
# Send the right click button
SendKeys("{APP}");
sleep 2;

#### Till here everything is working fine
#### I am able to do right click, but unable to select any option. Hitting a road block here
#### Tried these but no result

# MouseClick('Pin to Start');
# MenuSelect('Pin to Start');
# PushChildButton($whnds[ 0 ],"Pin to Start");
  

Мне все еще интересно, двигаюсь ли я в правильном направлении.
Использую ли я правильный модуль или эта работа предназначена для некоторых других модулей (Win32:: GUI или Win32::OLE ?).

Комментарии:

1. Я не использую Perl, но в C / Win32 это делается с помощью SHILCreateFromPath и SHCreateDefaultContextMenu