<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    illusionist

    好好學(xué)習(xí)...天天向上

    鼠標(biāo)模擬和鍵盤映射測(cè)試

    因?yàn)楫厴I(yè)設(shè)計(jì)需要,做了一點(diǎn)點(diǎn)鼠標(biāo)和鍵盤模擬的測(cè)試,收獲了一點(diǎn)關(guān)于Robot知識(shí),這是一個(gè)非常有趣的類,此類用于測(cè)試自動(dòng)化,自運(yùn)行演示程序和其他需要控制鼠標(biāo)和鍵盤的應(yīng)用程序生成本機(jī)系統(tǒng)輸入事件。Robot類主要目的是便于java平臺(tái)實(shí)現(xiàn)自動(dòng)測(cè)試。主要方法如下:動(dòng)作都在java.awt.event包中的KeyEvent和MouseEvent中定義
    • void keyPress(int keycode)按下給定的鍵
    • void keyRelease(int keycode)釋放給定的鍵
    • void mouseMove(int x, int y)將鼠標(biāo)指針移動(dòng)到給定屏幕坐標(biāo)
    • void mousePress(int buttons)按下一個(gè)或多個(gè)鼠標(biāo)按鈕
    • void mouseRelease(int buttons)釋放一個(gè)或多個(gè)鼠標(biāo)按鈕
    • void mouseWheel(int wheelAmt)在配有滾輪的鼠標(biāo)旋轉(zhuǎn)滾輪
    • BufferedImage createScreenCapture(Rectangle screenRect)創(chuàng)建包含從屏幕中讀取的像素的圖像
    第一個(gè)例子是鼠標(biāo)模擬測(cè)試,在多線程中每隔1s隨機(jī)移動(dòng)鼠標(biāo),一共隨機(jī)6次鼠標(biāo)閃爍,源碼如下:
    /*
     * MouseSimulate.java
     * 
     * Created on 2007-5-7, 4:03:04
     * 
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     
    */

    package cn.edu.yutao;

    import java.awt.AWTException;
    import java.awt.Dimension;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.event.InputEvent;
    import java.util.Random;

    /**
     *
     * 
    @author Aslan
     
    */
    public class MouseSimulate implements Runnable{
        
        
    private volatile boolean isRunning = false;
        
        
    private Robot robot;
        
    private Dimension dim;
        
    private Random random;

        
    public MouseSimulate() {
            random 
    = new Random();
            dim 
    = Toolkit.getDefaultToolkit().getScreenSize();
            
            
    try{
                robot 
    = new Robot();
            }
    catch(AWTException e){
                e.printStackTrace();
            }
        }

        
    public void run() {
            
    while(isRunning){
                
    int x = random.nextInt((int)dim.getWidth());
                
    int y = random.nextInt((int)dim.getHeight());
                System.out.println(
    "the mouse located in (" + x + "," + y + ")");
                
                robot.mouseMove(x, y);
                robot.mousePress(InputEvent.BUTTON1_MASK);
                
                
    try{
                    Thread.sleep(
    1000);
                }
    catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
        }
        
        
    public synchronized void start(){
            isRunning 
    = true;
        }
        
        
    public synchronized void stop(){
            isRunning 
    = false;
        }
        
        
    public static void main(String[] args){
            MouseSimulate test 
    = new MouseSimulate();
            
            test.start();
            System.out.println(
    "-----------time start-------------");
            Thread thread 
    = new Thread(test);
            thread.start();
            
            
    try{
                Thread.sleep(
    10000);
            }
    catch(InterruptedException e){
                e.printStackTrace();
            }
            
            test.stop();
            System.out.println(
    "-----------time stop--------------");
        }

    }

    Robot類的方法createScreenCapture可以簡(jiǎn)單的用于抓取屏幕圖片,可以在java應(yīng)用程序中直接調(diào)用該方法抓取屏幕,檢測(cè)遠(yuǎn)程電腦屏幕狀態(tài),這里參考了java社區(qū)的例子,默認(rèn)構(gòu)造函數(shù)生成后綴為png的文件,可以在第二個(gè)構(gòu)造函數(shù)傳入其他名稱,支持gif和jpg。截圖程序源碼如下:
    /*
     * GuiCamera.java
     * 
     * Created on 2007-5-7, 4:18:46
     * 
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     
    */

    package cn.edu.yutao;

    import java.awt.Dimension;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import javax.imageio.ImageIO;

    /**
     *
     * 
    @author Aslan
     
    */
    public class GuiCamera {
        
        
    private String fileName;
        
    private final String defaultFileName = "camera";
        
        
    private String format;
        
    private final String defaultFormat = "png";
        Dimension dim 
    = Toolkit.getDefaultToolkit().getScreenSize();
        

        
    public GuiCamera() {
            
    this.fileName = defaultFileName;
            
    this.format = defaultFormat;
        }

        
    public GuiCamera(String fileName, String format) {
            
    this.fileName = fileName;
            
    this.format = format;
        }
        
        
    public void capture() throws Exception{
            BufferedImage imageScreen 
    = (new Robot()).createScreenCapture(new Rectangle((int)dim.getWidth(), (int)dim.getHeight()));
            String imageName 
    = this.fileName + "." + this.format;
            File file 
    = new File(imageName);
            System.out.println(
    "Save file " + imageName);
            ImageIO.write(imageScreen, format, file);
            System.out.println(
    "Finished!!");
        }
        
        
    public static void main(String[] args){
            GuiCamera camera 
    = new GuiCamera("hello""jpg");
            
    try{
                camera.capture();
            }
    catch(Exception e){
                e.printStackTrace();
            }
        }
        
        

    }
    以上程序都在mac os 10.4.8下測(cè)試,截圖為  很漂亮~ 出現(xiàn)警告是因?yàn)槟承゛pi在jdk6中已經(jīng)標(biāo)記為廢棄。

    posted on 2007-05-09 21:44 伽藍(lán) 閱讀(2128) 評(píng)論(5)  編輯  收藏 所屬分類: Java SE

    Feedback

    # re: 鼠標(biāo)模擬和鍵盤映射測(cè)試 2007-05-10 04:02 黑蝙蝠

    恩 頂一下 不錯(cuò)這樣看來可以用Robot類做一個(gè)類似按鍵精靈的軟件
    學(xué)習(xí)...  回復(fù)  更多評(píng)論   

    # re: 鼠標(biāo)模擬和鍵盤映射測(cè)試 2007-05-10 08:03 BeanSoft

    還可以做遠(yuǎn)程控制, 跨平臺(tái)的... 我做過, 但是功能比較弱... 主要是不支持組合鍵. http://gro.clinux.org/frs/?group_id=740&release_id=887  回復(fù)  更多評(píng)論   

    # re: 鼠標(biāo)模擬和鍵盤映射測(cè)試 2007-05-10 08:59 Swing

    @BeanSoft
    遠(yuǎn)程控制怎么做的 一個(gè)什么思路?  回復(fù)  更多評(píng)論   

    # re: 鼠標(biāo)模擬和鍵盤映射測(cè)試 2007-05-10 09:27 BeanSoft

    就是個(gè)C/S模式的服務(wù)器, 客戶端再服務(wù)器發(fā)回的截屏上點(diǎn)擊按鍵和鼠標(biāo), 然后把事件發(fā)會(huì)給服務(wù)器端, 服務(wù)器端呢再用 Robot 模擬按鍵和鼠標(biāo).
    詳細(xì)使用說明:
    http://gro.clinux.org/forum/forum.php?forum_id=2597  回復(fù)  更多評(píng)論   

    # re: 鼠標(biāo)模擬和鍵盤映射測(cè)試 2007-05-10 16:25 伽藍(lán)

    可以在服務(wù)端寫一個(gè)servlet,將response返回流設(shè)置為image,這樣可以在客戶端查看服務(wù)器屏幕狀態(tài)  回復(fù)  更多評(píng)論   



    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费a级毛片无码av| 免费福利视频导航| 亚洲高清国产拍精品青青草原| 精品无码一区二区三区亚洲桃色 | 国产又黄又爽又猛免费app| 亚洲午夜久久久影院| 亚洲AV无码国产精品永久一区| 1000部国产成人免费视频| 亚洲一区二区成人| 24小时免费看片| 亚洲一卡2卡3卡4卡国产网站| 91高清免费国产自产拍2021| 亚洲精品国产精品乱码不卡| 亚洲中文字幕无码久久2020| 99精品免费观看| 亚洲va在线va天堂成人| 亚洲人成网站免费播放| 亚洲不卡影院午夜在线观看| 57pao一国产成永久免费| 亚洲欧洲春色校园另类小说| 99re这里有免费视频精品| 91亚洲国产成人精品下载| xxxx日本免费| 亚洲av无码专区亚洲av不卡 | 免费观看美女裸体网站| 亚洲a∨无码精品色午夜| 免费在线观看理论片| 国产精品美女免费视频观看| 亚洲精品成a人在线观看| 久久久WWW成人免费精品| 亚洲AV日韩精品久久久久| 18禁成人网站免费观看| 亚洲精品天堂在线观看| 日韩免费观看视频| 精品国产福利尤物免费| 亚洲高清在线视频| 最新中文字幕电影免费观看| 亚洲欧洲国产综合AV无码久久| 国产一区二区三区免费在线观看 | 三年片在线观看免费西瓜视频| 亚洲国产高清视频|