Используя Perl, Python или Ruby, могу ли я написать программу, возможно, вызывая Win32 API, до "click" на экране в запланированное время, например, каждые 1 час?
Детали:
Это для экспериментов - и может ли щелчок быть эффективным на Flash-содержимом, а также на любом элементе на экране? Это может быть хорошо, если программа может записывать, где на экране должен появиться щелчок, или хотя бы нарисовать красную точку на экране, чтобы показать, на что она нажимает.
Может ли клик быть нацелен на окно или это только общий пиксель на экране? Что делать, если какая-то программа сканирования вирусов всплывает, закрывая место, где должен произойти щелчок? (хотя, если программа сначала нажимает на белое пространство окна, то оно может перенести это окно на первый план).
Кстати, можно ли использовать Grease Monkey или любое дополнение Firefox для этого?
Если вы пытаетесь автоматизировать некоторые задачи на веб-сайте, вы можете посмотреть WWW::Selenium
. Он, наряду с Selenium Remote Control, позволяет удаленно управлять веб-браузером.
В 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);
Чтобы ответить на реальный вопрос, в Perl вы должны использовать SendMouse (и связанные функции), предоставленные Win32:: GuiTest модуль.
#!/usr/bin/perl
use strict;
use warnings;
use Win32::GuiTest qw( MouseMoveAbsPix SendMouse );
MouseMoveAbsPix(640,400);
SendMouse "{LEFTCLICK}";
__END__
UPDATE:
Что делать, если какая-то программа сканирования вирусов всплывает, закрывая место где должен произойти щелчок?
В этом случае вы должны использовать FindWindowLike
, чтобы найти окно и MouseClick
, чтобы отправить клик на это конкретное окно.
Если разрешено использование другого инструмента, вы должны взглянуть на AutoHotkey или AutoIt. Эти инструменты были сделаны для такого рода вещей, и я всегда старался использовать правильные инструменты для правильной работы.
AutoHotkey основан на AutoIt, я верю, и это мои личные предпочтения. Вам действительно нужны только две функции для того, чего вы пытаетесь достичь, MouseMove и MouseClick.
Я нахожу, что это проще подходить в Java или С++. Java имеет класс робота, который позволяет просто передать координаты x, y и щелкнуть где-нибудь. Используя С++, вы можете достичь той же функциональности, используя mouse_event()
или SendMessage()
с флагом WM_MOUSE_DOWN
. SendMessage более технический, но он позволяет использовать FindWindow()
и отправлять клики мыши в определенное окно, даже если оно сведено к минимуму.
Используя язык сценариев, такой как Python или Ruby, я бы предположил, что вы в конечном итоге подключаетесь к одной из этих функций Windows API.