Sering kali, kami berharap dapat mengimplementasikan pengujian otomatis, fungsi demonstrasi otomatis, atau aplikasi kontrol mouse dan keyboard lainnya (seperti membantu orang mengklik iklan untuk menghasilkan keuntungan, dll.). Untuk tujuan ini, sejak JDK1.3, ini telah memberi kami robot yang menghasilkan acara input asli - Java.awt.robot.
Di bawah ini saya akan memperkenalkan fungsi robot dan contoh aplikasi secara rinci:
1. Fungsi utama robot
1. BufferedImage CreateScReencapture (Rectangle Screenrect)
CATATAN: Metode ini menyediakan fungsi yang mirip dengan kunci layar print pada keyboard, menyalin piksel layar di area persegi panjang yang ditentukan untuk menghasilkan bufferedImage.
Aplikasi: Kami dapat menggunakan metode ini dalam program grafik, atau menggunakannya untuk mewujudkan transmisi layar jarak jauh, yang dapat dibuat menjadi program pemantauan komputer jarak jauh, dll.
2. Void Delay (int MS)
Deskripsi: Digunakan untuk tidur program saat ini (utas) selama beberapa milidetik (MS).
Aplikasi: Dapat digunakan untuk mengontrol penundaan program. Ini umumnya diperlukan karena Anda pasti akan memiliki keterlambatan dalam dua operasi interval.
3. Color getPixelColor (int x, int y)
Deskripsi: Dapatkan nilai warna dari posisi piksel dari koordinat layar yang diberikan.
Aplikasi: Ambil saja nilai RGB warna, jadi saya tidak akan banyak bicara.
4. Void Keypress (Int Keycode)
void keyrelease (kode kunci int)
Catatan: Anda dapat melihat fungsi dari kedua metode ini secara sekilas. Tindakan tekan dan pengangkatan tombol yang digunakan untuk menghasilkan tombol yang ditentukan setara dengan fungsi KEYB_EVEN dari API Win32, yaitu, untuk mensimulasikan operasi keyboard. Nilai kode kunci spesifik adalah keyevent.vk_c, keyevent.vk_d, keyevent.vk_control, dll. Saat menerapkan aplikasi spesifik, Anda akan mengetahuinya dengan melihat prompt eclipse.
Aplikasi: Ini dapat digunakan untuk demonstrasi otomatis, pengujian, dll. Program, yang sangat berguna.
5. void mousemove (int x, int y)
Deskripsi: Pindahkan kursor mouse ke koordinat layar yang ditentukan.
Aplikasi: Ini dapat digunakan untuk demonstrasi otomatis, pengujian, dll. Dari program, dan sangat diperlukan untuk digunakan dengan metode lain.
6. void mousepress (tombol int)
void mouserelease (tombol int)
void mousewheel (int wheelamt)
Catatan: Tiga metode di atas menghasilkan gerakan tekan, angkat, dan gulir dari tombol mouse yang ditentukan, yang mensimulasikan operasi mouse. Nilai tombol spesifik termasuk inputEvent.button1_mask (tombol mouse kiri), inputEvent.button3_mask (tombol mouse kanan, jika itu adalah mouse kunci ganda, silakan gunakan inputEvent.button2_mask sebagai gantinya).
Aplikasi: Ini juga dapat digunakan untuk demonstrasi otomatis, pengujian, dll. Dari program. Sangat penting untuk menggunakannya bersama dengan metode lain.
2. Contoh aplikasi
Saya telah menulis dua contoh aplikasi yang relatif kecil, satu adalah tes simulasi sederhana, dan yang lainnya adalah untuk secara otomatis mengklik iklan untuk menghasilkan keuntungan. Berikut ini adalah demonstrasi.
Pertama tulis beberapa metode umum umum.java
paket com.alexa; impor java.awt.rectangle; impor java.awt.robot; impor java.awt.toolkit; impor java.awt.event.inputevent; impor java.awt.event.keyevent; impor java.awt.image.bufferedimage; impor javax.swing.icon; impor javax.swing.imageicon; /** * @Description Robot Help Class untuk mengimplementasikan fungsi dasar * @Author Alexia * @Date 2013/5/18 * */Kelas Publik Umum {/** * Klik Mouse (Klik Kiri), dan jika Anda ingin mengklikir dua kali, Anda akan menghubungi Stasia * @param r * @param x * x Posisi koordinat * @param y y * y * yed y * yed y * ye. clicklmouse (robot r, int x, int y, int delay) {r.mousemove (x, y); r.mousepress (inputevent.button1_mask); R.Delay (10); r.mouserelease (inputevent.button1_mask); R.Delay (Delay); } / ** * Klik kanan mouse, dan jika Anda ingin mengklik dua kali, hubungi terus menerus * * @param r * @param x * x Posisi koordinat * @param y * y Posisi koordinat * @param tunda * waktu tunda setelah operasi ini * / r.moid static clickrmouse (robot r, int x, int y, int delay) {r.mouseMous r.mousepress (inputevent.button3_mask); R.Delay (10); r.mouserelease (inputevent.button3_mask); R.Delay (Delay); } / ** * Input keyboard (hanya satu karakter yang dapat dimasukkan pada satu waktu) * * @param r * @param ks * array karakter yang dimasukkan oleh keyboard * @param tunda * waktu tunda setelah memasukkan kunci * / public static void presskeys (robot r, int [] ks, int delay) {for (int i = 0; i <ks. R.Delay (10); r.keyrelease (ks [i]); R.Delay (Delay); }} / ** * Salin * * @param r * @throws InterruptedException * / void docopy (robot r) melempar interruptedException {thread.sleep (3000); R.SetAutodelay (200); r.keypress (keyevent.vk_control); r.keypress (keyevent.vk_c); r.keyrelease (keyevent.vk_control); r.keyrelease (keyevent.vk_c); } / ** * Tempel * * @param r * @throws InterruptedException * / void doparse (robot r) melempar interruptedException {r.setautodelay (500); 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); } / ** * Tangkap layar penuh moo * * @param r * @return * / ikon publik captureFullScreen (robot r) {bufferedImage fullscreenimage = r.createScreencapture (rectangle baru (toolkit.getDefaultToolKit (). GetScreensize ()); ImageIcon Icon = ImageIcon baru (FullScreeNimage); Ikon Return; } / ** * Tangkap area ortopedi layar * * @param r * @param x * x Posisi koordinat * @param y * y Posisi koordinat * @param lebar * Lebar persegi panjang * @param tinggi * tinggi, int x, int y, int y, int y, int y, int y, int y, int y, int y, int y, int y, int y, int y, int x, int x, int x, int y, int y, int y, int x, int x, int x, int x, int x, int x, int x, int x, int x, int x, int x, int x, y, int x, BufferedImage fullscreenimage = r.createScreencapture (persegi panjang baru (lebar, tinggi)); ImageIcon Icon = ImageIcon baru (FullScreeNimage); Ikon Return; }}Sebelum contoh, harap perhatikan cara menentukan posisi koordinat layar. Saya mengunduh gadget, yang sangat nyaman digunakan. Disarankan agar Anda menggunakannya.
1. Tes tiruan sederhana
paket com.alexia; impor java.awt.*; impor java.awt.event.*; impor javax.swing.joptionpane; kelas publik sederhana {public static void main (string [] args) melempar Exception {final robot rb = robot baru (); utas baru () {public void run () {rb.delay (2000); // simulasikan carriage return rb.keypress (keyevent.vk_enter); rb.keyrelease (keyevent.vk_enter); } }.awal(); RB.Delay (3000); // atur perkiraan posisi menu start int x = 40; int y = toolkit.getDefaultToolKit (). getscreensize (). tinggi - 10; // pindahkan mouse ke menu start, rb.mousemove (x, y); RB.Delay (500); // Klik Mulai Menu Common.ClicklMouse (RB, X, Y, 500); RB.Delay (1000); // Jalankan perintah 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); // Jalankan perintah dir Dir masukkan ks = int baru [] {keyevent.vk_d, keyevent.vk_i, keyevent.vk_r, keyevent.vk_enter}; Common.presskeys (RB, KS, 500); RB.Delay (1000); // Jalankan perintah cls cls masukkan ks = int int [] {keyevent.vk_c, keyevent.vk_l, keyevent.vk_s, keyevent.vk_enter}; Common.presskeys (RB, KS, 500); RB.Delay (1000); // Jalankan perintah EXIT EXIT ENTER 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); // Klik kanan untuk menguji x = toolkit.getDefaultToolKit (). GetScreensize (). Lebar - 50; Common.Clickrmouse (RB, X, Y, 500); utas baru () {public void run () {rb.delay (1000); // masukkan rb.keypress (keyevent.vk_enter); rb.keyrelease (keyevent.vk_enter); } }.awal(); JOPTIONPANE.SHOWMESSADEIALOG (NULL, "DEMO Are Over!"); }} 2. Klik iklan netease untuk mendapatkan keuntungan yang sedikit
paket com.alexia; impor java.awt.awtexception; impor java.awt.desktop; impor java.awt.robot; impor java.awt.event.keyevent; impor java.io.ioException; impor java.net.uri; impor java.util.random; AutoClickads kelas publik {robot robot pribadi; Private Volatile Boolean Stop = false; / ** membuat instance baru dari*/ autoclickads publik () {coba {robot = robot baru (); } catch (AwtException ex) {ex.printstacktrace (); }} public void init () {robot.delay (3000); System.out.println ("Klik ADS Start"); // Buka URL yang ditentukan di jendela browser baru atau jendela browser yang ada (JDK 1.6 atau lebih tinggi) desktop desktop = desktop.getdesktop (); if (desktop.isdesktopsupported () && desktop.issupported (desktop.action.browse)) {uri uri = uri.create ("http://lanxuezaipiao.blog.163.com/"); coba {desktop.browse (uri); } catch (ioException e) {// TODO AUTO-ENCEALATED Catch Block E.PrintStackTrace (); }} coba {run (); } catch (InterruptedException E) {// TODO Auto-Encanerated Catch Block E.PrintStackTrace (); } berhenti(); System.out.println ("Klik Iklan Berhenti"); } public void run () melempar InterruptedException {int count = 1; while (! Stop) {robot.delay (8000); int x = 576; int y = 567; Acak r = acak baru (); Common.Clicklmouse (robot, x, y, 3000); // Masukkan panah bawah untuk mewujudkan halaman Turn int [] ks = {keyevent.vk_down}; untuk (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 (robot, x, y, 1000); // Masukkan panah bawah untuk mencapai halaman giliran untuk (int i = 0; i <500; i ++) common.presskeys (robot, ks, 0); // Masukkan panah bawah untuk mencapai halaman belok int [] kups = {keyevent.vk_up}; untuk (int i = 0; i <3; i ++) common.presskeys (robot, kups, 0); x = 900; y = 210; Common.Clicklmouse (robot, x, y, 3000); x = 1090; y = 15; Common.Clicklmouse (robot, x, y, 3000); x = 900; y = 135; Common.Clicklmouse (robot, x, y, 3000); System.out.println ("berhasil diklik" + hitungan + "iklan!"); }} public disinkronkan void stop () {stop = true; } / ** * * @param Args Argumen baris perintah * * @throws InterruptException * / public static void main (string [] args) melempar interruptedException {autoclickads mc = autoclickads baru (); mc.init (); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.