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

回复
头像
PerlMonk
渐入佳境
渐入佳境
帖子: 49
注册时间: 2016年09月19日 10:20
联系:

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

帖子 PerlMonk »

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
渐入佳境
渐入佳境
帖子: 49
注册时间: 2016年09月19日 10:20
联系:

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

帖子 PerlMonk »

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
渐入佳境
渐入佳境
帖子: 49
注册时间: 2016年09月19日 10:20
联系:

对某个窗体进行截图

帖子 PerlMonk »

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
渐入佳境
渐入佳境
帖子: 49
注册时间: 2016年09月19日 10:20
联系:

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

帖子 PerlMonk »

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

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 访客