Много раз мы надеемся реализовать автоматическое тестирование, автоматические демонстрационные функции или другие приложения для управления мышью и клавиатурой (например, помогают людям нажимать на рекламу, чтобы получить прибыль и т. Д.). Для этого, со времен JDK1.3, он предоставил нам робота, который генерирует нативные события ввода - java.awt.robot.
Ниже я подробно расскажу о функциях робота и приложениях применения:
1. Основные функции робота
1. BufferedImage CreateScreencapture (прямоугольный экран)
ПРИМЕЧАНИЕ. Этот метод предоставляет функцию, аналогичную клавишу отпечатки на клавиатуре, копируя пиксели экрана в указанной прямоугольной области для генерации буферизации.
Приложение: мы можем использовать этот метод в графической программе или использовать его для реализации удаленной передачи экрана, которая может быть превращена в программу удаленного мониторинга компьютера и т. Д.
2. void задержка (int ms)
Описание: используется для сна текущую программу (поток) для нескольких миллисекунд (мс).
Приложение: можно использовать для управления задержкой программы. Это обычно необходимо, потому что у вас обязательно будет задержка в двух интервальных операциях.
3. color getPixelColor (int x, int y)
Описание: Получите значение цвета позиции пикселя заданных координат экрана.
Приложение: просто возьмите цветное значение RGB, поэтому я не скажу много.
4. void keypress (int key -код)
void -keyrelease (int key -код)
Примечание. Вы можете увидеть функции этих двух методов с первого взгляда. Нажатие клавиши и подъемные действия, используемые для генерации указанной клавиши, эквивалентны функции keyb_event в API win32, то есть для моделирования операций клавиатуры. Конкретные значения KeyCode являются keyevent.vk_c, keyevent.vk_d, keyevent.vk_control и т. Д. При применении конкретного приложения вы узнаете его, посмотрев на подсказку Eclipse.
Приложение: его можно использовать для автоматической демонстрации, тестирования и т. Д. Программ, что очень полезно.
5. void mouseMove (int x, int y)
Описание: Переместите курсор мыши в указанные координаты экрана.
Применение: его можно использовать для автоматической демонстрации, тестирования и т. Д. Программы и необходимо для использования с другими методами.
6. void mousepress (кнопки int)
void mouserelease (кнопки int)
пустое мышиное колесо (int whelamt)
ПРИМЕЧАНИЕ. Вышеуказанные три метода генерируют движение нажатия, подъем и прокрутки указанной кнопки мыши, которая имитирует работу мыши. Специальные значения кнопок включают inputevent.button1_mask (кнопка левой мыши), inputevent.button3_mask (правая кнопка мыши, если это мышь с двойным ключом, используйте вместо этого inputeentent.button2_mask).
Приложение: его также можно использовать для автоматической демонстрации, тестирования и т. Д. Программы. Очень важно использовать его в сочетании с другими методами.
2. Примеры приложения
Я написал два относительно небольших примера приложения, один из них - это простой тест на моделирование, а другой - автоматически нажать на рекламу, чтобы получить прибыль. Ниже приведены демонстрации.
Сначала напишите некоторые общие методы.
пакет com.alexa; импортировать java.awt.rectangle; импортировать java.awt.robot; импортировать java.awt.toolkit; Импорт java.awt.event.inputeVent; импортировать java.awt.event.keyevent; Импорт java.awt.image.bufferedImage; импортировать javax.swing.icon; Импорт javax.swing.imageicon; /** * @Description Robot справочник для реализации основных функций * @author alexia * @date 2013/5/18 * */public class common {/** * chlic clicklmouse (robot r, int x, int y, int dellow) {r.mousemove (x, y); R.mousepress (inputevent.button1_mask); Р.Делай (10); r.mouserelease (inputevent.button1_mask); Р.Делай (задержка); } / ** * щелкните правой кнопкой мыши мышь, и если вы хотите дважды щелкнуть, непрерывно звоните * * @param r * @param x * x Положение координат * @param y * y Положение координаты * @param задержка * задержка после этой операции * / public void clickrmouse (robot r, int x, int y, int delay) {r.mousemove (x, y); R.mousePress (inputevent.button3_mask); Р.Делай (10); r.mouserelease (inputevent.button3_mask); Р.Делай (задержка); } / ** * Ввод клавиатуры (можно ввести только одного символа за раз) * * @param r * @param ks * массив символов, введенных клавиатурой * @param задержка * задержка после входа в ключ * / public void preskeys (robot r, int [] ks, int задержка) {int i = 0; i <ks.lengh; Р.Делай (10); R.KeyRelease (KS [i]); Р.Делай (задержка); }} / ** * Copy * * @param r * @Throws прерывание. R.SetAutodelay (200); R.KeyPress (keyEvent.vk_control); R.KeyPress (keyEvent.vk_c); R.KeyRelease (KeyEvent.vk_control); R.KeyRelease (KeyEvent.vk_c); } / ** * Вставьте * * @param r * @Throws прерывание. Thread.sleep (2000); R.MouseMove (300, 300); R.mousepress (inputevent.button1_mask); r.mouserelease (inputevent.button1_mask); R.KeyPress (keyEvent.vk_control); R.KeyPress (keyEvent.vk_v); R.KeyRelease (KeyEvent.vk_control); R.KeyRelease (KeyEvent.vk_V); } / ** * Захват полноэкранного moo * * @param r * @return * / public icon capturellscreen (robot r) {bufferemage fullscreenimage = r.createscreencapture (новый прямоугольник (toolkit.getdefaulttoolkit (). Getscreensize ())); ImageICon Icon = New ImageICon (полноценное); Вернуть иконку; } / ** * Захватить ортопедическую область экрана * * @param r * @param x * x Положение координат * @param y * y Положение координат * @param Ширина * Ширина прямоугольника * @param Высота * Высота прямоугольника * @return * / public icon captureScreen (robot r, int x, int y, int width, int {r. BufferedImage FullScreenImage = R.CreatesCreenCapture (новый прямоугольник (ширина, высота)); ImageICon Icon = New ImageICon (полноценное); Вернуть иконку; }}Перед примером обратите внимание на то, как определить положение координат экрана. Я скачал гаджет, который очень удобен в использовании. Рекомендуется использовать его.
1. Простой критерий
пакет com.alexia; Импорт java.awt.*; импортировать java.awt.event.*; импортировать javax.swing.joptionpane; открытый класс SimpleTest {public static void main (string [] args) бросает исключение {final robot rb = new Robot (); new Thread () {public void run () {rb.delay (2000); // Смодели по перевозке возврата rb.keypress (keyevent.vk_enter); rb.keyrelease (keyevent.vk_enter); } }.начинать(); RB.Delay (3000); // Установить приблизительное положение меню начала int x = 40; int y = toolkit.getDefaulttoolkit (). getScreensize (). Высота - 10; // переместить мышь в меню «Пуск», RB.MouseMove (x, y); RB.Delay (500); // Нажмите на меню «Пуск» Common.ClicklMouse (RB, X, Y, 500); RB.Delay (1000); // запустить команду cmd cmd enter int [] ks = {keyevent.vk_c, keyevent.vk_m, keyevent.vk_d, keyevent.vk_enter,}; Common.presskeys (RB, KS, 500); RB.MouseMove (400, 400); RB.Delay (500); // запустить команду DIR DIR Введите ks = new int [] {keyevent.vk_d, keyevent.vk_i, keyevent.vk_r, keyevent.vk_entter}; Common.presskeys (RB, KS, 500); RB.Delay (1000); // запустить команду CLS CLS Enter KS = new int [] {keyEvent.vk_c, keyevent.vk_l, keyevent.vk_s, keyevent.vk_enter}; Common.presskeys (RB, KS, 500); RB.Delay (1000); // запустить Exit Command Exit Exit Ext ks = new int [] {keyEvent.vk_e, keyevent.vk_x, keyevent.vk_i, keyevent.vk_t, keyevent.vk_enter}; Common.presskeys (RB, KS, 500); RB.Delay (1000); // щелкните правой кнопкой мыши, чтобы проверить x = toolkit.getDefaulttoolkit (). GetScreensize (). Ширина - 50; Common.clickrmouse (rb, x, y, 500); new Thread () {public void run () {rb.delay (1000); // введите rb.keypress (keyevent.vk_enter); rb.keyrelease (keyevent.vk_enter); } }.начинать(); Joptionpane.showmessageDialog (null, "Демо закончилась!"); }} 2. Нажмите на рекламу Netease, чтобы получить скудную прибыль
пакет com.alexia; импортировать java.awt.awtexception; импортировать java.awt.desktop; импортировать java.awt.robot; импортировать java.awt.event.keyevent; импортировать java.io.ioexception; Импорт java.net.uri; импортировать java.util.random; открытый класс Autoclickads {Private Robot Robot; Частная летучая логическая остановка = false; / ** Создает новый экземпляр Main*/ public autoclickads () {try {robot = new Robot (); } catch (awtexception ex) {ex.printstacktrace (); }} public void init () {robot.delay (3000); System.out.println («Нажмите на рекламу Start»); // Откройте указанный URL -адрес в новом окне браузера или в существующем окне браузера (JDK 1.6 или выше). if (desktop.isdesktopsupported () && desktop.issupported (desktop.action.browse)) {uri uri = uri.create ("http://lanxuezaipiao.blog.163.com/"); try {desktop.browse (uri); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} try {run (); } catch (прерванная экспрессия e) {// todo автоматически сгенерированный блок e.printstacktrace (); } останавливаться(); System.out.println («Нажмите на рекламу остановлена»); } public void run () бросает прерванные эктриэлексии {int count = 1; while (! Stop) {robot.delay (8000); int x = 576; int y = 567; Случайный r = new Random (); Common.clicklmouse (робот, х, y, 3000); // Введите стрелку вниз, чтобы реализовать страницу Turn int [] ks = {keyEvent.vk_down}; для (int i = 0; i <10; i ++) common.presskeys (robot, ks, 0); int[][] a = { { 500, 103 }, { 500, 163 }, { 500, 223 }, { 500, 283 }, { 500, 343 }, { 500, 403 }, { 500, 463 }, { 500, 523 }, { 500, 583 }, { 500, 643 }, }; int b = r.nextint (5); x = a [b] [0]; y = a [b] [1]; Common.clicklmouse (робот, х, y, 1000); // Введите стрелку вниз, чтобы достичь поворота страницы для (int i = 0; i <500; i ++) common.presskeys (robot, ks, 0); // Введите стрелку вниз, чтобы достичь страницы Turn int [] kups = {keyEvent.vk_up}; для (int i = 0; i <3; i ++) common.presskeys (робот, куп, 0); x = 900; y = 210; Common.clicklmouse (робот, х, y, 3000); x = 1090; y = 15; Common.clicklmouse (робот, х, y, 3000); x = 900; y = 135; Common.clicklmouse (робот, х, y, 3000); System.out.println ("успешно щелкнуть" + count + "реклама!"); }} public synchronized void stop () {stop = true; } / ** * * * @param аргументы командной строки * * @Throws прерывание. mc.init (); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.