如何用Perl、Python或Ruby编写程序在定时点击屏幕?
我可以用Perl、Python或Ruby写一个程序吗?这个程序可能会调用Win32 API,定时在屏幕上“点击”,比如每小时点击一次?
具体情况:
这是为了实验——这个点击能否对Flash内容和屏幕上的任何元素有效?如果这个程序能记录点击应该发生的位置,或者至少在屏幕上画一个红点来显示点击的位置,那就太好了。
这个点击能否针对某个窗口,还是只能点击屏幕上的某个像素?如果有个病毒扫描程序弹出来,挡住了应该点击的地方怎么办?(不过如果程序先点击窗口的空白区域,就可以把那个窗口调到最前面)。
顺便问一下,Grease Monkey或者任何Firefox的插件能否也做到这一点?
5 个回答
6
要回答这个问题,在Perl语言中,你可以使用一个叫做 Win32::GuiTest 的模块里提供的SendMouse(还有相关的函数)。
#!/usr/bin/perl
use strict;
use warnings;
use Win32::GuiTest qw( MouseMoveAbsPix SendMouse );
MouseMoveAbsPix(640,400);
SendMouse "{LEFTCLICK}";
__END__
更新:
如果有个病毒扫描程序弹出来,挡住了你要点击的地方怎么办?
这种情况下,你可以用 FindWindowLike
来找到那个窗口,然后用 MouseClick
给那个特定的窗口发送一个点击。
7
在Python中,有一个叫做 ctypes 的模块,而在Perl中,有一个叫做 Win32::API 的模块。
ctypes 示例
from ctypes import *
windll.user32.MessageBoxA(None, "Hey MessageBox", "ctypes", 0);
Win32::Api 示例
use Win32::GUI qw( WM_CLOSE );
my $tray = Win32::GUI::FindWindow("WindowISearchFor","WindowISearchFor");
Win32::GUI::SendMessage($tray,WM_CLOSE,0,0);
8
如果你想在网站上自动化一些任务,可以看看 WWW::Selenium
。它和 Selenium Remote Control 一起,可以让你远程控制一个网页浏览器。