#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