使用Perl、Python或Ruby,如何将程序编写到;点击";按预定时间在屏幕上显示?

使用Perl、Python或Ruby,如何将程序编写到;点击";按预定时间在屏幕上显示?,python,ruby,perl,winapi,Python,Ruby,Perl,Winapi,使用Perl、Python或Ruby,我可以编写一个程序(可能调用Win32 API)在预定时间(比如每1小时)在屏幕上“单击”吗 详细信息: 这是为了实验——点击可以对Flash内容以及屏幕上的任何元素有效吗?如果程序能在屏幕上记录点击需要发生的位置,或者至少在屏幕上画一个红点来显示点击的位置,那就太好了 点击的目标是窗口还是屏幕上的普通像素?如果某个病毒扫描程序突然出现,覆盖了应该点击的地方,该怎么办?(尽管如果程序首先单击窗口的空白区域,那么它可以首先将该窗口置于前台) 顺便问一下,是否可

使用Perl、Python或Ruby,我可以编写一个程序(可能调用Win32 API)在预定时间(比如每1小时)在屏幕上“单击”吗

详细信息:

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

点击的目标是窗口还是屏幕上的普通像素?如果某个病毒扫描程序突然出现,覆盖了应该点击的地方,该怎么办?(尽管如果程序首先单击窗口的空白区域,那么它可以首先将该窗口置于前台)

顺便问一下,是否可以使用Sleef Monkey或任何Firefox插件来实现这一点?

在Python中有,在Perl中有

c类型示例

from ctypes import *
windll.user32.MessageBoxA(None, "Hey MessageBox", "ctypes", 0);
use Win32::GUI qw( WM_CLOSE );
my $tray = Win32::GUI::FindWindow("WindowISearchFor","WindowISearchFor");
Win32::GUI::SendMessage($tray,WM_CLOSE,0,0);
Win32::Api示例

from ctypes import *
windll.user32.MessageBoxA(None, "Hey MessageBox", "ctypes", 0);
use Win32::GUI qw( WM_CLOSE );
my $tray = Win32::GUI::FindWindow("WindowISearchFor","WindowISearchFor");
Win32::GUI::SendMessage($tray,WM_CLOSE,0,0);
在Python中有,在Perl中有

c类型示例

from ctypes import *
windll.user32.MessageBoxA(None, "Hey MessageBox", "ctypes", 0);
use Win32::GUI qw( WM_CLOSE );
my $tray = Win32::GUI::FindWindow("WindowISearchFor","WindowISearchFor");
Win32::GUI::SendMessage($tray,WM_CLOSE,0,0);
Win32::Api示例

from ctypes import *
windll.user32.MessageBoxA(None, "Hey MessageBox", "ctypes", 0);
use Win32::GUI qw( WM_CLOSE );
my $tray = Win32::GUI::FindWindow("WindowISearchFor","WindowISearchFor");
Win32::GUI::SendMessage($tray,WM_CLOSE,0,0);

如果你想在一个网站上自动化一些任务,你可能想看看。此外,它还允许您远程控制web浏览器。

如果您试图自动执行网站中的某些任务,您可能需要查看这些任务。它可以让你远程控制Web浏览器。

我发现java或C++中更容易接近。Java有一个函数,允许您传递x,y坐标并单击某个地方。使用C++,可以使用<代码>鼠标事件()/<代码>或<代码> sEnMeXAGE()/<代码>,使用<代码> WMyMousEXDROW/<代码>标志实现相同的功能。SendMessage更具技术性,但它允许您使用

FindWindow()
并将鼠标单击发送到特定窗口,即使它已最小化


使用像Python或Ruby这样的脚本语言,我猜你最终会陷入这些Windows API函数中的一个。

< P>我发现这更容易在java或C++中使用。Java有一个函数,允许您传递x,y坐标并单击某个地方。使用C++,可以使用<代码>鼠标事件()/<代码>或<代码> sEnMeXAGE()/<代码>,使用<代码> WMyMousEXDROW/<代码>标志实现相同的功能。SendMessage更具技术性,但它允许您使用
FindWindow()
并将鼠标单击发送到特定窗口,即使它已最小化


使用Python或Ruby之类的脚本语言,我猜您最终还是会连接到这些Windows API函数中的一个。

要回答实际问题,在Perl中,您可以使用模块提供的SendMouse(以及相关函数)

更新:

如果某个病毒扫描程序突然出现,覆盖了这个地方怎么办 点击应该发生在哪里


在这种情况下,您可以使用
FindWindowLike
查找窗口,然后单击
MouseClick
向该特定窗口发送单击。

要回答实际问题,在Perl中,您可以使用模块提供的SendMouse(以及相关函数)

更新:

如果某个病毒扫描程序突然出现,覆盖了这个地方怎么办 点击应该发生在哪里


在这种情况下,您可以使用
FindWindowLike
查找窗口,然后单击
MouseClick
向该特定窗口发送单击。

如果允许使用其他工具,您应该查看或。这些工具是为这类事情而设计的,我一直热衷于使用合适的工具来完成合适的工作


我相信自动热键是基于自动热键的,这也是我个人的喜好。对于您想要实现的功能,您只需要两个函数。

如果允许使用其他工具,您应该查看或。这些工具是为这类事情而设计的,我一直热衷于使用合适的工具来完成合适的工作


我相信自动热键是基于自动热键的,这也是我个人的喜好。您只需要两个函数就可以实现您想要实现的功能。

它甚至可以单击Flash内容吗?它可以单击浏览器中的任何内容。它甚至可以单击Flash内容吗?它可以单击浏览器中的任何内容。哦,我安装了草莓Perl,但上面的程序无法运行。。。是否需要安装某些模块?它说:在try2.pl第1行的@INC(@INC包含:C:/草莓/perl/lib C:/草莓/perl/site/lib.)中找不到Win32::GUI.pm。从中获取Win32::GUI请按照相应的说明进行操作,我想您指的是Python,而不是perl。。。我为您修复了它。哦,我安装了草莓Perl,但是上面的程序无法运行。。。是否需要安装某些模块?它说:在try2.pl第1行的@INC(@INC包含:C:/草莓/perl/lib C:/草莓/perl/site/lib.)中找不到Win32::GUI.pm。从中获取Win32::GUI请按照相应的说明进行操作,我想您指的是Python,而不是perl。。。我为您修复了它。Win32::GuiTest的+1。这是一个很棒的工具。我编写了一个机器人(App::SweeperBot,可从中编译为.exe),用它来玩扫雷游戏,所以我不再需要自己玩它了Win32::GuiTest还提供屏幕捕获功能,Win32::GUIRobot(构建在顶部)提供在屏幕上查找图像的专用例程。@pjf谢谢。我记得读过你的文章。好主意,好实现。+1用于Win32::GuiTest。这是一个很棒的工具。我编写了一个机器人(App::SweeperBot,可从中编译为.exe),用它来玩扫雷游戏,所以我不再需要自己玩它了Win32::GuiTest还提供屏幕捕获功能,Win32::GUIRobot(构建在顶部)提供在屏幕上查找图像的专用例程。@pjf谢谢。我记得读过你的文章。好主意,好实施。有进展吗