1. 程式人生 > >Java模擬傳送鍵盤訊息 shift組合鍵

Java模擬傳送鍵盤訊息 shift組合鍵

Java中可通過java.awt.Robot來模擬傳送訊息:鍵盤訊息,滑鼠訊息之類的。

先來試試

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_RIGHT);

robot.keyRelease(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_CONTROL);

成功的執行了QQMusic的下一首:Ctrl+Alt+Right

再來試試Kuwo的下一首:Ctrl+Shift+Right

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_RIGHT);

robot.keyRelease(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_CONTROL);

狂點。。。沒反應,難道不支援Shift鍵,google之

http://www.webdeveloper.com/forum/showthread.php?t=221722

這位仁兄遇到了相同的問題,不過是在四五年前了,他沒有給出解決方案,只是給了一個記錄鍵盤訊息的程式碼,通過這段程式碼發現:按下SHIFT後,再按Right,會觸發SHIFT的release事件和Right的press事件,難道是Java的bug,繼續google之

https://forums.oracle.com/forums/thread.jspa?threadID=2230592

另一位仁兄也遇到了這個問題,看來吾道不孤也,而且還是前幾個月發生的事情。在他那裡,有人指出了問題之所在,這還真是Java的Bug

讓人費解的是bug已經提交N年了,還是沒有修復。

還好,有方法可以繞過這個bug:turn off the numlock keys

Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_NUM_LOCK, false);

這樣,就解決了傳送組合鍵訊息時,Shift不能和其他鍵同時按下的問題。

http://weblogs.java.net/blog/joshy/archive/2003/08/swinghack_keybo.html

後來發現,方法原來是有一位仁兄提供的,忽略了,不過網址沒登上去。

就此停筆了。。。


相關推薦

Java模擬傳送鍵盤訊息 shift組合

Java中可通過java.awt.Robot來模擬傳送訊息:鍵盤訊息,滑鼠訊息之類的。 先來試試 Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.

Windows下向指定視窗模擬傳送鍵盤訊息

在作業系統中,滑鼠和鍵盤的操作會被轉換為相應的系統訊息,視窗過程在接收到訊息後會進行對應的處理。傳送訊息,我們可以使用SendMessage()和PostMessage(),所以,只要使用這兩個函式來發送滑鼠和鍵盤的相關訊息就可以了。此外,還可以通過keybd_event(

C#窗體如何通過keybd_event()函式模擬鍵盤按鍵(組合)產生事件

如何模擬鍵盤按鍵觸發產生的事件,比如模擬按下Alt + F4 關閉當前程式,Ctrl+Shift 切換輸入法等 可以通過win32api 鍵盤事件 keybd_event() 來實現 1、定義鍵盤按鍵對應得鍵碼 #region bVk引數 常量定義

java模擬傳送form-data的請求

package com.silot.test; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.Htt

Android模擬傳送通知訊息及取消通知

效果圖如下: 一、實驗環境 開發軟體:Android Studio 3.1.4 模擬器:Genymotion 二、實現 介面佈局檔案————activity_main.xml <?xml version="1.0" encoding="utf-8"?>

【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗九:PS/2模組③ — 鍵盤與多組合

實驗九:PS/2模組③ — 鍵盤與多組合鍵 筆者曾經說過,通碼除了單位元組以外,也有雙位元組通碼,而且雙位元組通碼都是 8’hE0開頭,別名又是 E0按鍵。常見的的E0按鍵有,<↑>,<↓>,<←>,<→>,<HOME>,<PRTSC>

JavaScript監聽鍵盤事件,組合事件

監聽鍵盤事件,比如說提交表單或者確認通過鍵盤操作會很方便,有時候需要組合鍵比如複製貼上等。基本原理是當按下某一個鍵時,返回對應的值,然後再判斷使用者按下了哪個鍵,進行對比。 一、鍵盤監聽是直接在整個頁面文件上進行監聽的,也就是document上,以下是原生的使

MFC 對話方塊Dialog響應鍵盤事件(組合Ctrl+A)

在上一篇文章的基礎上,這裡描述如何捕獲組合鍵,這裡以Ctrl+A為例 做法就是按下Ctrl的時候用一個靜態成員變數儲存Ctrl是否被按下,當Ctrl按下的時候設定為true;當Ctrl鍵擡起的時候設定

Java模擬滑鼠鍵盤輸入事件 --- Robot 類

Robot,機器人。此類用於為測試自動化、自執行演示程式和其他需要控制滑鼠和鍵盤的應用程式生成本機系統輸入事件。Robot 的主要目的是便於 Java 平臺實現自動測試。 Robot 可以模擬滑鼠和鍵盤的輸入,相當於 Java 版的按鍵精靈。 Rob

再談vc傳送鍵盤組合訊息

關於向Windows視窗傳送Alt組合鍵的問題,這個真是經典問題啊,在網上找了一下,問的人N多,方法差不多, 但就是沒有很好解決問題。之前找到一個能正確傳送的code:(Alt+A)PostMessage(hWnd,WM_SYSKEYDOWN,VK_MENU,0);PostMessage(hWnd,WM_S

Java模擬壓測裝置傳送訊息到伺服器(Rabbitmq) python模擬上報訊息到rabbitMQ(protobuf)

進入idea,新建一個maven專案 主要是模擬150個裝置同時併發,併發時間持續15min 1.建立客戶端,構造請求傳送到對應的rabbitmq的佇列,用的protobuf協議。 import com.google.protobuf.ByteString; import com.

Java socket模擬傳送和接收HTTP訊息

理解:模擬登陸指定網站,登陸成功後,獲取返回串中的cookie值用於發起下次請求。 package demo.http.client; import java.io.IOException; import java.io.InputStream; import java.

Java+Selenium3方法篇36-如何模擬組合輸入

       前面介紹了Keys這個類下的一些操作, 這篇介紹一些組合操作。例如Ctrl+A表示全選,Alt+t表示新開一個瀏覽器tab。在Keys類下有一個方法叫chord(引數1,引數2),從單詞

JS實現鍵盤監聽(包括組合)

nbsp html gist 收集 and ros register col next 依然使用案例驅動~案例是學習的最好實踐! <html> <head> <meta

java公眾號上傳素材及傳送圖文訊息實現

微信公眾號先上傳素材,再推送訊息java程式碼實現: 首先公眾號的圖文訊息是可以登入公眾號,然後去管理--素材管理  下面去手動新增圖文,圖片,視訊,音樂素材的.這樣新增的素材屬於永久素材. 用java程式碼實現的時候,很多人報錯無效的media_id, 或無效的thumb_med

C# 模擬傳送請求到java後臺 java程式碼接收處理引數的問題

前段時間接到一個需求,對接一個C#寫的工具類,給我們的系統後臺上傳資料。 需求不難,很常見,於是為了方便。我就這樣寫了(java框架SSH): C#模擬請求的程式碼 public static void Main(string[] args) {

Java--對接微信第二篇之訂閱傳送圖文訊息給使用者

在第二篇的基礎上,把訂閱響應事件下的,傳送文字訊息介面替換成傳送圖文訊息的介面。 // 建立圖文訊息 NewsMessage newsMessage = new NewsMessage();

JAVA微信公眾號通過openid傳送模板訊息~

1,問題產生  在微信公眾號開發過程中,我們有時候做不同許可權的時候,比如在註冊的時候,需要稽核,然後我們要想辦法讓對方知道稽核的結果。這時候我們可以通過模板訊息來通知。 2,第一步,首先在微信公眾號上獲取模板訊息 首先,登入微信公眾平臺,看有沒有模板訊息這一塊,沒有的話點選新增功能外掛,

java 模擬http傳送json請求

java中經常會用到模擬http請來發送各種訊息,比如說,有get請求,post請求,post請求的引數又包括一般引數和json引數,http工具程式碼如下:import java.io.BufferedReader; import java.io.IOException;

Java 微信傳送模板訊息

/** * 建立模板訊息 * @param openId * @param template_id * @param url * @param topcolor * @param carrierName * @param waybillCode