如何用Perl、Python或Ruby编写程序在定时点击屏幕?

1 投票
5 回答
5276 浏览
提问于 2025-04-15 12:18

我可以用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 一起,可以让你远程控制一个网页浏览器。

撰写回答