国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JAVA 鼠標(biāo)控制與鍵盤輸入控制

這篇具有很好參考價(jià)值的文章主要介紹了JAVA 鼠標(biāo)控制與鍵盤輸入控制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

核心類:java.awt.Robot

該類是JDK定義的電腦系統(tǒng)的抽象類,可以用來(lái)模擬實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊與鍵盤輸入等信息

簡(jiǎn)單實(shí)現(xiàn)一個(gè)自動(dòng)搶票代碼:

Robot rt = new Robot();

//可以認(rèn)為是操作間隔的停歇時(shí)間,比如等待頁(yè)面加載,等彈框內(nèi)容展示等
rt.delay(1000);

//鼠標(biāo)移動(dòng)到指定位置
rt.mouseMove(876,231);


//點(diǎn)擊動(dòng)作由下壓+回彈組成
//點(diǎn)擊按下去
rt.mousePress(InputEvent.BUTTON1_MASK);
rt.delay(100);
//放開(kāi)回彈
rt.mouseRelease(InputEvent.BUTTON1_MASK);


//copy黏貼文本
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
String[] authors = msgArr.get(getRandomIntNum()).split("[,]");
Transferable text = new StringSelection(authors[0]);
//將消息數(shù)組中的文本copy到粘貼板,使用ctrl+V即可完成粘貼
clip.setContents(text, null);

//組合鍵使用ctrl+V,控制電腦完成粘貼動(dòng)作
rt.keyPress(KeyEvent.VK_CONTROL);
rt.keyPress(KeyEvent.VK_V);


//獲取鼠標(biāo)坐標(biāo)
Point point = java.awt.MouseInfo.getPointerInfo().getLocation();
System.out.println("" + point.x+" , "+point.y);


//實(shí)際使用時(shí)配合線程調(diào)度
/**
* Launch the application.
*
* 實(shí)時(shí)獲取鼠標(biāo)坐標(biāo)
*/
public static void main(String[] args) {
    try {
        MouseInfo info_frame = new MouseInfo();
        info_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        info_frame.setVisible(true);
        info_frame.setAlwaysOnTop(true);
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                Point point = java.awt.MouseInfo.getPointerInfo().getLocation();
                System.out.println("" + point.x+" , "+point.y);
                try {
                    Thread.sleep(3000L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }, 100, 100);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

鼠標(biāo)點(diǎn)擊模擬時(shí) 有三種按鍵類型:

InputEvent.BUTTON1_MASK 左鍵 (食指點(diǎn)擊)

InputEvent.BUTTON2_MASK 中鍵 (滾輪)

InputEvent.BUTTON3_MASK 右鍵(中指點(diǎn)擊)

WIN10 系統(tǒng)桌面坐標(biāo)拾取

得到的信息需要根據(jù)屏幕--顯示設(shè)置--縮放與布局的百分比進(jìn)行計(jì)算

當(dāng)桌面縮放與布局 設(shè)置100%時(shí),直接使用鼠標(biāo)拾取的坐標(biāo) X,Y 即可

當(dāng)桌面縮放與布局 設(shè)置125%時(shí),需要使用計(jì)算后的位置坐標(biāo) X/125 ,Y/125文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-648364.html

package com.test.domain;

import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Operation {
    //時(shí)間間隔 1s
    final static  int DELAY=1000;

    private static List<String> msgArr=new ArrayList<String>();

    public static int getRandomIntNum() {
        int max=10;
        int min=1;
        Random random = new Random();
        return random.nextInt(max)%(max-min+1) + min;
    }
    /**
     * 用法簡(jiǎn)介:腳本程序跑起來(lái)之后鼠標(biāo)選中需要轟炸得聊天窗口,需要聊天窗口能獲取到鼠標(biāo)得焦點(diǎn)
     *
     * @param args
     * @throws AWTException
     */
    public static void main1(String[] args) throws AWTException {
        //轟炸內(nèi)容
        for (int i = 0; i < 10; i++) {
            String emoj="[炸彈] [炸彈] [炸彈] [炸彈] [炸彈] [炸彈] [炸彈][炸彈] [炸彈] ";
            msgArr.add("轟炸機(jī),消息轟炸 ->"+i+emoj);
        }
        Robot robot = new Robot();
        robot.delay(5000);
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        String[] authors = msgArr.get(getRandomIntNum()).split("[,]");
        //循環(huán)轟炸
        for (int j = 0; j < 100; j++){
            for (int i = 0; i < authors.length; i++) {
                String str1 = authors[i];
                Transferable text = new StringSelection(str1);
                clip.setContents(text, null);
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                robot.keyRelease(KeyEvent.VK_CONTROL);
                robot.delay(100);
                robot.keyPress(KeyEvent.VK_ENTER);
            }
        }
    }


    /**
     * 用法簡(jiǎn)介:腳本程序跑起來(lái)之前需要打開(kāi)需要轟炸的對(duì)方聊天窗口,并全屏
     * 注:根據(jù)實(shí)際系統(tǒng)設(shè)置不同使用前需要將自己桌面縮放與布局大小調(diào)整為100%
     *     另需要用mouseInfo 工具類獲取到自己電腦上面發(fā)送 釘 消息的幾個(gè)操作按鈕坐標(biāo)
     *     1.聊天窗口中的 DING一下按鈕 鼠標(biāo)點(diǎn)擊坐標(biāo)
     *     2.DING一下  窗口文本輸入框位置坐標(biāo)
     *     3.DING一下 發(fā)送按鈕鼠標(biāo)點(diǎn)擊坐標(biāo)
     *
     * @param args
     * @throws AWTException
     */
    public static void main(String[] args) throws AWTException {
        //轟炸內(nèi)容
        for (int i = 0; i < 10; i++) {
            String emoj = "[炸彈] [炸彈] [炸彈] [炸彈] [炸彈] [炸彈] [炸彈][炸彈] [炸彈] ";
            msgArr.add("轟炸機(jī),消息轟炸 ->" + i + emoj);
        }
        Robot robot = new Robot();
        robot.delay(1000);

        //循環(huán)轟炸
        for (int j = 0; j < 3; j++) {
            robot.mouseMove(650, 880);
            Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
            String[] authors = msgArr.get(getRandomIntNum()).split("[,]");
            //釘釘聊天框釘按鈕鼠標(biāo)點(diǎn)擊位置坐標(biāo):819,798
            Danji(robot, 650, 880,1500);
            //釘窗口文本輸入鼠標(biāo)點(diǎn)擊位置坐標(biāo):551,399
            Danji(robot, 1132, 466,100);
            Danji(robot, 1132, 466,100);
            Transferable text = new StringSelection(authors[0]);
            clip.setContents(text, null);
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_V);
            robot.delay(1000);
            //釘消息發(fā)送按鈕鼠標(biāo)點(diǎn)擊位置坐標(biāo):489,891
            Danji(robot, 576, 835,300);
        }
    }



    //鼠標(biāo)移動(dòng)到指定坐標(biāo),然后單擊
    public  static  void Danji(Robot rt,int x, int y,int times){
        rt.mouseMove(-1,-1);//初始化
        rt.delay(100);
        rt.mouseMove(x,y);//制動(dòng)到指定位置
        rt.delay(100);
        pressMouse(rt, InputEvent.BUTTON1_MASK,times);
    }

    //鼠標(biāo)點(diǎn)擊事件
    public  static  void pressMouse(Robot rt,int m,int times){
        rt.mousePress(m);
        rt.delay(100);
        rt.mouseRelease(m);
        rt.delay(times);
        System.out.printf("鼠標(biāo)點(diǎn)擊完成"+m);
    }

    //將指定內(nèi)容粘貼到粘貼板 然后ctrl+v
    public static void outPut(String str,Robot rt){
        StringSelection selection = new StringSelection(str);
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection,selection);
        keyPressWithCotrl(rt,KeyEvent.VK_V);
    }

    //ctrl組合鍵 相當(dāng)于按下CTRL再按下傳入的key值
    public  static  void keyPressWithCotrl(Robot rt,int key){
        rt.keyPress(KeyEvent.VK_CONTROL);
        rt.keyPress(key);
        rt.keyRelease(KeyEvent.VK_CONTROL);
        rt.keyRelease(key);
        rt.delay(DELAY);
    }

}
package com.test.domain;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Point;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.Color;
public class MouseInfo extends JFrame {
    private final JPanel contentPanel = new JPanel();
    JLabel value_x = null;
    JLabel value_y = null;
    /**
     * Launch the application.
     *
     * 實(shí)時(shí)獲取鼠標(biāo)坐標(biāo)
     */
    public static void main(String[] args) {
        try {
            MouseInfo info_frame = new MouseInfo();
            info_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            info_frame.setVisible(true);
            info_frame.setAlwaysOnTop(true);
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    Point point = java.awt.MouseInfo.getPointerInfo().getLocation();
                    System.out.println("" + point.x+" , "+point.y);
                    try {
                        Thread.sleep(3000L);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }, 100, 100);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Create the dialog.
     */
    public MouseInfo() {
        setTitle("\u9F20\u6807\u5750\u6807\u83B7\u53D6\u5668");
        setBounds(100, 100, 217, 156);
        getContentPane().setLayout(new BorderLayout());
        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
        getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(null);

        JLabel lblx = new JLabel("\u5750\u6807x:");
        lblx.setFont(new Font("宋體", Font.PLAIN, 15));
        lblx.setBounds(22, 27, 66, 31);
        contentPanel.add(lblx);

        JLabel lbly = new JLabel("\u5750\u6807y:");
        lbly.setFont(new Font("宋體", Font.PLAIN, 15));
        lbly.setBounds(22, 68, 66, 31);
        contentPanel.add(lbly);

        value_x = new JLabel("0");
        value_x.setForeground(Color.BLUE);
        value_x.setFont(new Font("宋體", Font.PLAIN, 20));
        value_x.setBounds(82, 27, 66, 31);
        contentPanel.add(value_x);

        value_y = new JLabel("0");
        value_y.setForeground(Color.BLUE);
        value_y.setFont(new Font("宋體", Font.PLAIN, 20));
        value_y.setBounds(82, 68, 66, 31);
        contentPanel.add(value_y);
    }
}

到了這里,關(guān)于JAVA 鼠標(biāo)控制與鍵盤輸入控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity Input輸入類-鼠標(biāo)鍵盤檢測(cè)

    Unity Input輸入類-鼠標(biāo)鍵盤檢測(cè)

    當(dāng)你開(kāi)發(fā)Unity游戲時(shí),與用戶的輸入交互是非常重要的。Unity提供了豐富的輸入類來(lái)幫助你獲取用戶的輸入,并做出相應(yīng)的響應(yīng)。在本文中,我將會(huì)向你介紹Unity中的輸入類,包括Input、KeyCode、MouseButton和Touch等。 Input類 Input類是Unity中最基礎(chǔ)的輸入類,它可以獲取各種類型的輸

    2024年02月11日
    瀏覽(27)
  • 34_輸入設(shè)備鍵盤鼠標(biāo)你得會(huì)

    34_輸入設(shè)備鍵盤鼠標(biāo)你得會(huì)

    鍵盤和鼠標(biāo)是個(gè)人計(jì)算機(jī)中常用的輸入設(shè)備。通過(guò)鍵盤可以將字母、數(shù)字、標(biāo)點(diǎn)符號(hào)等輸入計(jì)算機(jī)中,從而向計(jì)算機(jī)發(fā)出命今;鼠標(biāo)可以對(duì)屏幕上的光標(biāo)進(jìn)行定位,并通過(guò)鼠標(biāo)按鈕和滾輪對(duì)光標(biāo)所處位置的屏幕元素進(jìn)行操作。一個(gè)應(yīng)用程序應(yīng)該響應(yīng)用戶的鍵盤和鼠標(biāo)輸入事件。

    2024年01月22日
    瀏覽(15)
  • unity3D 鼠標(biāo)鍵盤輸入

    unity3D 鼠標(biāo)鍵盤輸入

    一、鼠標(biāo)鍵盤輸入 游戲的輸入可以來(lái)自于鼠標(biāo),鍵盤,觸摸屏,游戲手柄 顯示一個(gè)Vector3類型的xyz的鼠標(biāo)位置。 Input.GetButtonDown(0):0代表鼠標(biāo)左鍵,1代表鼠標(biāo)右鍵,如果鼠標(biāo)左鍵按下返回true。 Input.GetKeyDown(\\\"space\\\"): 檢測(cè)空格是否按下。 更多操作可以查看Unity Script API( UnityE

    2024年02月10日
    瀏覽(17)
  • 【學(xué)習(xí)筆記】unity腳本學(xué)習(xí)(四)【inputManager、鍵盤輸入、鼠標(biāo)輸入、Raycast】

    【學(xué)習(xí)筆記】unity腳本學(xué)習(xí)(四)【inputManager、鍵盤輸入、鼠標(biāo)輸入、Raycast】

    參考:極客學(xué)院unity3d教程 inputManager Horizontal虛擬軸的各個(gè)屬性含義(摘選自ChatGpt,部分回答不準(zhǔn)確) Name :虛擬軸的名稱,用于在代碼中訪問(wèn)該虛擬軸。這個(gè)名稱應(yīng)該是唯一的,用于區(qū)分其他虛擬軸。 Descriptive Name :描述虛擬軸的名稱,用于在Inspector中顯示。這個(gè)名稱通常

    2024年02月15日
    瀏覽(52)
  • Selenium用法詳解【鍵盤控制】【JAVA爬蟲(chóng)】

    ? ? ? 本文主要簡(jiǎn)介如何使用java代碼利用Selenium 控制瀏覽器中需要用到的鍵盤操作。Selenium 是一種用于自動(dòng)化瀏覽器操作和測(cè)試的工具,可以通過(guò)編程語(yǔ)言與瀏覽器進(jìn)行交互。它提供了一組 API 和庫(kù),用于模擬用戶在瀏覽器中的各種行為,如點(diǎn)擊、輸入、導(dǎo)航等。下面將詳細(xì)

    2024年02月09日
    瀏覽(20)
  • c++ 鍵盤/鼠標(biāo)交互+特殊輸入/輸出+窗口常用函數(shù)

    需要頭文件: 或: 函數(shù): 使用方法: 1.if(KEY_DOWN(某個(gè)鍵))或if(KEY_UP(某個(gè)鍵)) 檢測(cè)該鍵是否按下/未按下 2.keybd_event(某個(gè)鍵,0,0,0);或keybd_event(某個(gè)鍵,0,KEYEVENTF_KEYUP,0); 使該鍵是否按下/彈起(實(shí)際使用可參照下文鼠標(biāo)函數(shù)click_left()) 鍵碼表(替換“某個(gè)鍵”): 函數(shù): 使用方法: gx()或

    2024年02月09日
    瀏覽(41)
  • Java怎么通過(guò)鍵盤實(shí)現(xiàn)動(dòng)態(tài)控制小球移動(dòng)

    這一操作依賴于Java的事件機(jī)制,鍵盤按鍵會(huì)觸發(fā)一個(gè)事件, 我們捕獲到這個(gè)事件,然后做相應(yīng)的處理。 所謂動(dòng)態(tài)移動(dòng)其實(shí)就是根據(jù)坐標(biāo)不斷地重新繪制。 思路 定義一個(gè)MyPanel類 繼承 JPanel 然后在MyPanel的paint方法里畫(huà)出一個(gè)小球,將它的坐標(biāo)設(shè)置為全局變量 讓我們的面板類實(shí)

    2024年02月12日
    瀏覽(24)
  • 【Unity】Input——檢測(cè)鼠標(biāo)、鍵盤、手柄輸入、鼠標(biāo)在屏幕上的位置等等

    【Unity】Input——檢測(cè)鼠標(biāo)、鍵盤、手柄輸入、鼠標(biāo)在屏幕上的位置等等

    Unity提供的 更方便的 控制對(duì)象的 位移和旋轉(zhuǎn)的解決方案 這個(gè)Axis是可以自定義的:

    2024年02月11日
    瀏覽(53)
  • Linux輸入設(shè)備應(yīng)用編程(鍵盤,按鍵,觸摸屏,鼠標(biāo))

    Linux輸入設(shè)備應(yīng)用編程(鍵盤,按鍵,觸摸屏,鼠標(biāo))

    目錄 一 輸入設(shè)備編程介紹 1.1?什么是輸入設(shè)備呢? ?1.2 什么是輸入設(shè)備的應(yīng)用編程?? ?1.3 input子系統(tǒng) 1.4? 數(shù)據(jù)讀取流程 1.5 應(yīng)用程序如何解析數(shù)據(jù) 1.5.1 按鍵類事件: ?1.5.2 相對(duì)位移事件? 1.5.3 絕對(duì)位移事件? 二 讀取 struct input_event數(shù)據(jù)?? 本章學(xué)習(xí)Linux輸入設(shè)備的應(yīng)用編程

    2024年02月05日
    瀏覽(39)
  • Qt3D 輸入類處理鼠標(biāo)鍵盤動(dòng)作

    Qt3D模塊中的輸入類用于處理用戶輸入,比如鼠標(biāo)、鍵盤等輸入事件。 ```cpp #include Qt3DExtras #include Qt3DInput #include Qt3DCore #include Qt3DRender #include Qt3DLogic #include Qt3DExtras int main(int argc, char *argv[]) { ? ? QApplication app(argc, argv); ? ? // 創(chuàng)建Qt3D窗 ? ? Qt3DExtras::Qt3DWindow view; ? ? // 創(chuàng)建3

    2024年02月02日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包