簡體   English   中英

機器人 object 的“keyPress()”方法沒有輸入任何內容

[英]'keyPress()' method for Robot object isn't typing anything

我正在嘗試在 Java 中編寫一個程序,該程序使用機器人 class 自動鍵入字符串中的每個字符。 不久前,我用它制作了一個類似的自動化程序(我將其稱為“以前的項目”),它使用了“keyPress()”。 我需要使用的機器人 class 的其他方法以及大多數(如果不是全部)方法都非常有效。

現在我已經開始了,'keyPress()' 沒有輸入任何內容,不管我作為參數傳遞的 KeyEvent 是什么。 我以為我寫錯了代碼,所以我運行了我以前的項目只是為了確保它有效,但它沒有。

這是我用於上一個項目和我當前項目的代碼片段(您也可以使用它來測試它)。

編輯:嘗試使用文本編輯器或任何類似於文本字段的功能。 我現在展示了整個演示 class。

// demo procedure
public class DemoClass() {
    public static void main(String[] args) {
        new DemoClass().run()
    }

    public void run() {
        try {
            Robot robot = new Robot();
            
            for (int i = 1; i <= 30; i++) {
                robot.keyPress(KeyEvent.VK_A);
                robot.delay(100);

                System.out.println("Typed key");
            }

        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}

“鍵入的密鑰”打印了 30 次,output 中也沒有出現錯誤。

我試過了;

  • 在按鍵后添加'robot.keyRelease(KeyEvent.VK_A)',
  • 允許我想要自動化的軟件中的程序類型,
  • 允許程序輸入我正在使用的 IDE 和文本編輯器,
  • 允許程序點擊 IDE 和文本編輯器(所以我可以看到是否只有按鍵是問題)。

這些都沒有產生結果。 我檢查了來自多個來源(文章和視頻)的代碼,所有這些都具有相同的代碼存根。 我讀過一些軟件會阻止機器人對象在其中輸入/單擊,但在我開發以前的項目時,輸入和單擊都有效。

所以我今天醒來,然后……程序運行了。

我仍然不知道為什么它一開始就不起作用,或者問題是如何解決的(魔術?)。 運行 sudo 命令似乎沒有什么不同,而且我正在處理的軟件都沒有阻止機器人 object 自動鍵入/單擊。

這很可能只是我的問題,因為其他人設法讓它工作。 既然已經發生過一次,那它很可能會再次發生。

無論如何,感謝所有幫助過的人。 如果未來的讀者對它為什么不起作用有任何想法,請隨時分享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM