使用Perl,Python或Ruby,如何编写程序以在预定时间"点击"屏幕?

nop*_*ole 1 ruby python perl winapi

使用Perl,Python或Ruby,我可以编写一个程序,可能调用Win32 API,在预定的时间点击屏幕,就像每1小时一样?

细节:

这是为了实验 - 点击对Flash内容以及屏幕上的任何元素都有效吗?如果程序可以记录点击需要在屏幕上显示的位置,或者至少在屏幕上绘制一个红点以显示点击的位置,那就太好了.

点击是针对窗口还是只是屏幕上的一般像素?如果弹出一些病毒扫描程序覆盖点击发生的地方怎么办?(尽管如果程序首先点击窗口的空白区域,那么它可以首先将该窗口带到前台).

顺便说一句,Grease Monkey或任何Firefox附加组件也可以用来做这个吗?

Cha*_*ens 8

如果您尝试在网站中自动执行某些任务,则可能需要查看WWW::Selenium.它与Selenium Remote Control一起允许您远程控制Web浏览器.


jit*_*ter 7

在Python中有ctypes,在Perl中有Win32 :: API

ctypes例子

from ctypes import *
windll.user32.MessageBoxA(None, "Hey MessageBox", "ctypes", 0);
Run Code Online (Sandbox Code Playgroud)

Win32 :: Api示例

use Win32::GUI qw( WM_CLOSE );
my $tray = Win32::GUI::FindWindow("WindowISearchFor","WindowISearchFor");
Win32::GUI::SendMessage($tray,WM_CLOSE,0,0);
Run Code Online (Sandbox Code Playgroud)


Sin*_*nür 6

要回答实际问题,在Perl中,您将使用Win32 :: GuiTest模块提供的SendMouse(和相关函数).

#!/usr/bin/perl

use strict;
use warnings;

use Win32::GuiTest qw( MouseMoveAbsPix SendMouse );

MouseMoveAbsPix(640,400);
SendMouse "{LEFTCLICK}";

__END__
Run Code Online (Sandbox Code Playgroud)

更新:

如果弹出一些病毒扫描程序覆盖点击发生的地方怎么办?

在这种情况下,您将使用FindWindowLike查找窗口MouseClick并向该特定窗口发送单击.