Win32::GuiTest - Perl版按键精灵,GUI自动化模块 以及示例

头像
PerlMonk
渐入佳境
渐入佳境
帖子: 51
注册时间: 2016年09月19日 10:20
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 3 times
联系:

Win32::GuiTest - Perl版按键精灵,GUI自动化模块 以及示例

帖子 #1 PerlMonk » 2017年06月17日 10:01

Win32::GuiTest - Perl版按键精灵,鼠标按键模拟、GUI自动化操作
编辑: 523066680
转载请注明出处

Strawberry Perl V5.24 Portable+PDL 版自带 Win32::GuiTest 模块,但缺少示例代码,建议到 metacpan 下载模块安装包
Meta::Cpan Win32-GuiTest-1.63

部分示例代码在win7和中文环境不适用,参考回帖。
上次由 PerlMonk 在 2017年06月17日 10:24,总共编辑 2 次。

头像
PerlMonk
渐入佳境
渐入佳境
帖子: 51
注册时间: 2016年09月19日 10:20
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 3 times
联系:

示例代码 PushButton.pl - 打开记事本输入并保存

帖子 #2 PerlMonk » 2017年06月17日 10:03

Win32-GuiTest-1.63/eg/pushbutton.pl 修改 (保存为utf8编码格式):
use utf8;
use Encode;
use strict;
use Win32::GuiTest qw/:ALL/;

# 删除旧文件(如果有)
unlink("D:\\PushButton.txt");

system("start notepad.exe");
my @windows = WaitWindow(encode('gbk', "无标题 - 记事本"));
die unless scalar @windows == 1 && IsWindow($windows[0]);
SetForegroundWindow($windows[0]);

SendKeys("Sample Text\n");
SendKeys("%{F4}");

#出现提示框询问是否保存,按保存
PushButton( encode('gbk' , "保存") );
sleep 1;

#输入文件名
SendKeys("D:\\PushButton.txt");

# 确认保存
PushButton("&S");
上次由 PerlMonk 在 2017年06月17日 10:24,总共编辑 4 次。

头像
PerlMonk
渐入佳境
渐入佳境
帖子: 51
注册时间: 2016年09月19日 10:20
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 3 times
联系:

对某个窗体进行截图

帖子 #3 PerlMonk » 2017年06月17日 10:17

use utf8;
use Encode;
use Win32::GuiTest qw(:ALL);

system("start calc");
sleep 1;
my ($w) = FindWindowLike(0, encode('gbk', "计算器"));

$ds = new Win32::GuiTest::DibSect;
$ds->CopyWindow($w);

SendKeys('%{F4}');

#保存到文件
$ds->SaveAs("bla.bmp");

#保存到剪切板
$ds->ToClipboard();

头像
PerlMonk
渐入佳境
渐入佳境
帖子: 51
注册时间: 2016年09月19日 10:20
拥有现金: 锁定
Has thanked: 4 times
Been thanked: 3 times
联系:

Selecttabitem.pl - 打开系统属性并选择不同的标签/项目栏

帖子 #4 PerlMonk » 2017年06月17日 16:53

备注:该脚本应该在管理员的权限下运行

runas /user:Administrator "perl \"%cd%\selecttabitem.pl\""

use Win32::GuiTest qw(GetWindowID GetChildWindows GetWindowText
GetForegroundWindow PostMessage PushButton SendKeys SelectTabItem);

use Win32::GuiTest::Cmd qw(System);

# 打开系统属性栏
System();

#system('start RunDLL32.exe shell32,Control_RunDLL sysdm.cpl,\@0,2');
#该命令可以打开系统属性窗口并选择第二项标签 ( 通过 \@0,2 )

sleep(2);
# 选择不同标签
# 使用 Window ID
SelectTabItem(12320, 0);
sleep(1);
SelectTabItem(12320, 2);
sleep(1);
SelectTabItem(12320, 1);
sleep(1);
#PushButton("^Cancel");
SendKeys("{ESC}");


回到 “模块”

在线用户

用户浏览此论坛: 没有注册用户 和 0 访客