HelloWorld 善戰(zhàn)者,求之于勢,不責(zé)于人;故能擇人而任勢。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁 ::  :: 聯(lián)系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks
          提供了一個(gè)Robot類,在java.awt.*包下面。這個(gè)類在jdk中描述如下:

          此類用于為測試自動(dòng)化、自運(yùn)行演示程序和其他需要控制鼠標(biāo)和鍵盤的應(yīng)用程序生成本機(jī)系統(tǒng)輸入事件。Robot 的主要目的是便于 Java 平臺(tái)實(shí)現(xiàn)自動(dòng)測試。

          使用該類生成輸入事件與將事件發(fā)送到 AWT 事件隊(duì)列或 AWT 組件的區(qū)別在于:事件是在平臺(tái)的本機(jī)輸入隊(duì)列中生成的。例如,Robot.mouseMove 將實(shí)際移動(dòng)鼠標(biāo)光標(biāo),而不是只生成鼠標(biāo)移動(dòng)事件。

          注意,某些平臺(tái)需要特定權(quán)限或擴(kuò)展來訪問低級輸入控件。如果當(dāng)前平臺(tái)配置不允許使用輸入控件,那么試圖構(gòu)造 Robot 對象時(shí)將拋出 AWTException。例如,如果 X 服務(wù)器不支持(或沒有啟用)XTEST 2.2 標(biāo)準(zhǔn)擴(kuò)展,則 X-Window 系統(tǒng)會(huì)拋出異常。

          出于自測試之外的目的而使用 Robot 的應(yīng)用程序應(yīng)妥善處理這些錯(cuò)誤條件。


          這個(gè)類除了模擬鼠標(biāo)鍵盤操作以外,還可以用來截取屏幕,只演示一下怎么模擬鼠標(biāo)鍵盤操作,具體api參考javadoc。這個(gè)演示完成了彈出QQ和移動(dòng)窗口的功能。代碼如下:

          import java.awt.AWTException;
          import java.awt.Robot;
          import java.awt.event.KeyEvent;
          /**
          * @author bean
          *
          */
          public class RobotDemo {

          private Robot robot = null;

          public RobotDemo() {
             try {
              robot = new Robot();
             } catch (AWTException e) {
              e.printStackTrace();
             }
          }
          /** 可以彈出QQ */
          public void keyBoardDemo() {
             robot.keyPress(KeyEvent.VK_ALT);
             robot.keyPress(KeyEvent.VK_CONTROL);
             robot.keyPress(KeyEvent.VK_Z);
             robot.keyRelease(KeyEvent.VK_Z);
             robot.keyRelease(KeyEvent.VK_CONTROL);
             robot.keyRelease(KeyEvent.VK_ALT);
          }
          /** 前提是有個(gè)最大化的窗口,功能是移動(dòng)到標(biāo)題欄,然后拖拽到600,600的位置*/
          public void mouseDemo(){
             robot.mouseMove(80, 10);
             robot.mousePress(KeyEvent.BUTTON1_MASK);
             try {
              Thread.sleep(20);
             } catch (InterruptedException e) {
              e.printStackTrace();
             }
             robot.mouseMove(600, 600);
             robot.mouseRelease(KeyEvent.BUTTON1_MASK);
          }
          /**
             * @param args
             */
          public static void main(String[] args) {
             RobotDemo demo=new RobotDemo();
             demo.keyBoardDemo();
             demo.mouseDemo();
          }

          }

          </script>

          posted on 2011-06-09 09:54 helloworld2008 閱讀(379) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 正镶白旗| 图木舒克市| 喀喇沁旗| 绥滨县| 家居| 武冈市| 岳普湖县| 富源县| 普兰县| 卫辉市| 赤峰市| 嵩明县| 凭祥市| 嘉义县| 烟台市| 康平县| 开封市| 华池县| 龙游县| 南郑县| 牙克石市| 北海市| 岑巩县| 晋州市| 隆尧县| 友谊县| 安达市| 周口市| 武穴市| 建始县| 宁德市| 金川县| 上思县| 崇州市| 永春县| 汤阴县| 古交市| 鞍山市| 梓潼县| 塔河县| 普定县|