多くの場合、自動テスト、自動デモンストレーション機能、またはその他のマウスおよびキーボード制御アプリケーション(人々が広告をクリックして利益を上げるなど)を実装したいと考えています。この目的のために、JDK1.3以来、ネイティブの入力イベントを生成するロボットjava.awt.robotを提供してくれました。
以下に、ロボットの機能とアプリケーションの例を詳細に紹介します。
1。ロボットの主な機能
1. bufferedimage createscreencapture(rectangle screenRect)
注:この方法は、キーボードのプリントスクリーンキーと同様の関数を提供し、指定された長方形領域の画面ピクセルをコピーして、緩衝液を生成します。
アプリケーション:グラフィックプログラムでこの方法を使用するか、リモート画面の送信を実現するために使用できます。これは、リモートコンピューター監視プログラムなどになります。
2。ボイド遅延(int ms)
説明:現在のプログラム(スレッド)を数ミリ秒(MS)の睡眠に使用します。
アプリケーション:プログラムの遅延を制御するために使用できます。これは、2つのインターバル操作が間違いなく遅延があるため、一般的に必要です。
3。色getpixelcolor(int x、int y)
説明:指定された画面座標のピクセル位置の色値を取得します。
アプリケーション:色のRGB値を取得するだけなので、あまり言いません。
4。void keypress(int keycode)
void keyrelease(int keycode)
注:これら2つの方法の関数を一目で確認できます。指定されたキーを生成するために使用されるキープレスおよびリフティングアクションは、Win32 APIのkeyB_event関数、つまりキーボード操作をシミュレートすることと同等です。特定の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ボタン)
void mousewheel(int wheelamt)
注:上記の3つの方法では、指定されたマウスボタンのプレス、リフト、およびスクロールホイールの動きを生成し、マウスの動作をシミュレートします。特定のボタン値には、inputevent.button1_mask(左マウスボタン)、inputevent.button3_mask(右マウスボタン、ダブルキーマウスの場合、inputevent.button2_maskを使用してください)。
アプリケーション:プログラムの自動デモンストレーション、テストなどにも使用できます。他の方法と組み合わせて使用することが非常に重要です。
2。アプリケーションの例
比較的小さなアプリケーションの例を2つ書きました。1つは簡単なシミュレーションテストで、もう1つは自動的に広告をクリックして利益を上げることです。以下はデモンストレーションです。
最初にいくつかの一般的な方法を書きます。Java
パッケージ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ロボットクラスが基本機能を実装するのに役立つ * @author alexia * @date 2013/5/18 * */public class common {/** *マウスクリック(左クリック)(左クリック)を使用する場合、継続的に * @param r * @param r * @param x * x @param y * y coordinate aftiac beod deated deated deate deate * @param r * @param r * @param r * @param 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(遅延); } / ** *マウスを右クリックします。ダブルクリックする場合は、継続的に電話をかけます * * @param r * @param r * @param x * x座標位置 * @param y * y座標位置 * @param遅延 *この操作の遅延 * / public static void clickrmouse(robot r、int x、int y、int y、int R.MousePress(inputevent.button3_mask); R.Delay(10); R.MouserElease(inputevent.button3_mask); R.Delay(遅延); } / ** *キーボード入力(一度に1つの文字のみを入力できます) R.Delay(10); R.Keyrelease(KS [i]); R.Delay(遅延); }} / ** * copy * * @param r * @throws arturnedexception * / void docopy(robot r)throws arturtedexception {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); } / ** * PASTE * * @PARAM R * @Throws arturnedexception * / void doparse(robot r)throws arturtedexception {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); } / ** *キャプチャフルスクリーンMOO * * @param R * @return * / publicアイコンCaptureFullscreen(Robot R){BufferedImage FullScreenImage = R.CreateScreencapture(new Rectangle(Toolkit.getDefaultToolkit()。GetScreensize()); ImageIcon Icon = new ImageIcon(FullScreenImage);返品アイコン; } / ** *画面の整形外科領域をキャプチャ * * * @param R * @param X * X座標位置 * @param y * y座標位置 * @param width * @param width * @recturn *の高さ * @return * / public capturepartscreen(robot r、int x、int x、int y、width、r.mausemave); bufferedimage fullscreenimage = r.createscreencapture(new Rectangle(width、height)); ImageIcon Icon = new ImageIcon(FullScreenImage);返品アイコン; }}例の前に、画面の座標位置を決定する方法に注意してください。ガジェットをダウンロードしましたが、これは非常に便利です。使用することをお勧めします。
1.単純なモックテスト
パッケージcom.alexia; java.awt。*; java.awt.event。*; javax.swing.joptionpaneをインポートします。 public class simpleTest {public static void main(string [] args)throws exception {final robot rb = new robot(); new shood(){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を実行します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_enter}; 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コマンドExitを実行します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()。width -50; Common.ClickrMouse(RB、X、Y、500); new shood(){public void run(){rb.delay(1000); // rb.keypress(keyevent.vk_enter); rb.keyrelease(keyevent.vk_enter); } }。始める(); joptionpane.showmessagedialog(null、 "demo is over!"); }} 2. Netease Advertisingをクリックして、わずかな利益を得る
パッケージ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 {プライベートロボットロボット;プライベート揮発性ブール止めストップ= false; / **メインの新しいインスタンスを作成します*/ public Autoclickads(){try {robot = new robot(); } catch(awtexception ex){ex.printstacktrace(); }} public void init(){robot.delay(3000); system.out.println( "ads startをクリックします"); //指定されたURLを新しいブラウザウィンドウまたは既存のブラウザウィンドウ(jdk 1.6以降)で開きますdesktop desktop = desktop.getdesktop(); 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 auto-fenated catch block e.printstacktrace(); }} try {run(); } catch(arturnedexception e){// todo auto-fenated catch block e.printstacktrace(); } 停止(); system.out.println( "[広告を停止]をクリックします"); } public void run()throws arturtedexception {int count = 1; while(!stop){robot.delay(8000); int x = 576; int y = 567;ランダムr = new Random(); Common.ClicklMouse(Robot、X、Y、3000); //ダウン矢印を入力してページを実現しますint [] ks = {keyevent.vk_down}; for(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、500、523}、{500、583}、{500、583}、{500、643}、 int b = r.nextint(5); x = a [b] [0]; y = a [b] [1]; Common.ClicklMouse(Robot、X、Y、1000); //ダウン矢印を入力して、(int i = 0; i <500; i ++)common.presskeys(robot、ks、0)のページターンを達成します。 // [下]矢印を入力してページターンint [] kups = {keyevent.vk_up}; for(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( "" + count + "Advertisements!"); }} public synchronized void stop(){stop = true; } / ** * * @param argsコマンドラインの引数 * * @throws arturnedexception * / public static void main(string [] args)throws interruptedexception {autoclickads mc = new autoclickads(); mc.init(); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。