- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个用java自动输入内容的系统。我是这样写的:
public void typeMessage(String message) {
for (char c : message.toCharArray()) {
int code = c;
if (code > 96 && code < 123)
code = code - 32;
if (c == '@') {
robot.keyPress(VK_SHIFT);
robot.keyPress(VK_AT);
robot.keyRelease(VK_SHIFT);
robot.keyRelease(VK_AT);
} else {
type(code);
}
}
type(VK_ENTER);
}
但我收到此错误:
Exception in thread "Thread-2" java.lang.IllegalArgumentException: Invalid key code
上
robot.keyPress(VK_AT);
最佳答案
该类没有达到所有 ASCII 字符,但可以解决您的问题,对其进行定制。
KeyboardKeys kk = new Keyboard Keys();kk.keyPress('@');
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent.*;
import static java.awt.event.KeyEvent.*;
public class KeyboardKeys {
private Robot robot;
public KeyboardKeys() throws AWTException {
this.robot = new Robot();
}
public KeyboardKeys(Robot robot) {
this.robot = robot;
}
public void keyPress(char characterKey){
switch (characterKey){
case '☺': altNumpad("1"); break;
case '☻': altNumpad("2"); break;
case '♥': altNumpad("3"); break;
case '♦': altNumpad("4"); break;
case '♣': altNumpad("5"); break;
case '♠': altNumpad("6"); break;
case '♂': altNumpad("11"); break;
case '♀': altNumpad("12"); break;
case '♫': altNumpad("14"); break;
case '☼': altNumpad("15"); break;
case '►': altNumpad("16"); break;
case '◄': altNumpad("17"); break;
case '↕': altNumpad("18"); break;
case '‼': altNumpad("19"); break;
case '¶': altNumpad("20"); break;
case '§': altNumpad("21"); break;
case '▬': altNumpad("22"); break;
case '↨': altNumpad("23"); break;
case '↑': altNumpad("24"); break;
case '↓': altNumpad("25"); break;
case '→': altNumpad("26"); break;
case '←': altNumpad("27"); break;
case '∟': altNumpad("28"); break;
case '↔': altNumpad("29"); break;
case '▲': altNumpad("30"); break;
case '▼': altNumpad("31"); break;
case '!': altNumpad("33"); break;
case '"': altNumpad("34"); break;
case '#': altNumpad("35"); break;
case '$': altNumpad("36"); break;
case '%': altNumpad("37"); break;
case '&': altNumpad("38"); break;
case '\'': altNumpad("39"); break;
case '(': altNumpad("40"); break;
case ')': altNumpad("41"); break;
case '*': altNumpad("42"); break;
case '+': altNumpad("43"); break;
case ',': altNumpad("44"); break;
case '-': altNumpad("45"); break;
case '.': altNumpad("46"); break;
case '/': altNumpad("47"); break;
case '0': altNumpad("48"); break;
case '1': altNumpad("49"); break;
case '2': altNumpad("50"); break;
case '3': altNumpad("51"); break;
case '4': altNumpad("52"); break;
case '5': altNumpad("53"); break;
case '6': altNumpad("54"); break;
case '7': altNumpad("55"); break;
case '8': altNumpad("56"); break;
case '9': altNumpad("57"); break;
case ':': altNumpad("58"); break;
case ';': altNumpad("59"); break;
case '<': altNumpad("60"); break;
case '=': altNumpad("61"); break;
case '>': altNumpad("62"); break;
case '?': altNumpad("63"); break;
case '@': altNumpad("64"); break;
case 'A': altNumpad("65"); break;
case 'B': altNumpad("66"); break;
case 'C': altNumpad("67"); break;
case 'D': altNumpad("68"); break;
case 'E': altNumpad("69"); break;
case 'F': altNumpad("70"); break;
case 'G': altNumpad("71"); break;
case 'H': altNumpad("72"); break;
case 'I': altNumpad("73"); break;
case 'J': altNumpad("74"); break;
case 'K': altNumpad("75"); break;
case 'L': altNumpad("76"); break;
case 'M': altNumpad("77"); break;
case 'N': altNumpad("78"); break;
case 'O': altNumpad("79"); break;
case 'P': altNumpad("80"); break;
case 'Q': altNumpad("81"); break;
case 'R': altNumpad("82"); break;
case 'S': altNumpad("83"); break;
case 'T': altNumpad("84"); break;
case 'U': altNumpad("85"); break;
case 'V': altNumpad("86"); break;
case 'W': altNumpad("87"); break;
case 'X': altNumpad("88"); break;
case 'Y': altNumpad("89"); break;
case 'Z': altNumpad("90"); break;
case '[': altNumpad("91"); break;
case '\\': altNumpad("92"); break;
case ']': altNumpad("93"); break;
case '^': altNumpad("94"); break;
case '_': altNumpad("95"); break;
case '`': altNumpad("96"); break;
case 'a': altNumpad("97"); break;
case 'b': altNumpad("98"); break;
case 'c': altNumpad("99"); break;
case 'd': altNumpad("100"); break;
case 'e': altNumpad("101"); break;
case 'f': altNumpad("102"); break;
case 'g': altNumpad("103"); break;
case 'h': altNumpad("104"); break;
case 'i': altNumpad("105"); break;
case 'j': altNumpad("106"); break;
case 'k': altNumpad("107"); break;
case 'l': altNumpad("108"); break;
case 'm': altNumpad("109"); break;
case 'n': altNumpad("110"); break;
case 'o': altNumpad("111"); break;
case 'p': altNumpad("112"); break;
case 'q': altNumpad("113"); break;
case 'r': altNumpad("114"); break;
case 's': altNumpad("115"); break;
case 't': altNumpad("116"); break;
case 'u': altNumpad("117"); break;
case 'v': altNumpad("118"); break;
case 'w': altNumpad("119"); break;
case 'x': altNumpad("120"); break;
case 'y': altNumpad("121"); break;
case 'z': altNumpad("122"); break;
case '{': altNumpad("123"); break;
case '|': altNumpad("124"); break;
case '}': altNumpad("125"); break;
case '~': altNumpad("126"); break;
case '⌂': altNumpad("127"); break;
case 'Ç': altNumpad("128"); break;
case 'ü': altNumpad("129"); break;
case 'é': altNumpad("130"); break;
case 'â': altNumpad("131"); break;
case 'ä': altNumpad("132"); break;
case 'à': altNumpad("133"); break;
case 'å': altNumpad("134"); break;
case 'ç': altNumpad("135"); break;
case 'ê': altNumpad("136"); break;
case 'ë': altNumpad("137"); break;
case 'è': altNumpad("138"); break;
case 'ï': altNumpad("139"); break;
case 'î': altNumpad("140"); break;
case 'ì': altNumpad("141"); break;
case 'Ä': altNumpad("142"); break;
case 'Å': altNumpad("143"); break;
case 'É': altNumpad("144"); break;
case 'æ': altNumpad("145"); break;
case 'Æ': altNumpad("146"); break;
case 'ô': altNumpad("147"); break;
case 'ö': altNumpad("148"); break;
case 'ò': altNumpad("149"); break;
case 'û': altNumpad("150"); break;
case 'ù': altNumpad("151"); break;
case 'ÿ': altNumpad("152"); break;
case 'Ö': altNumpad("153"); break;
case 'Ü': altNumpad("154"); break;
case '¢': altNumpad("155"); break;
case '£': altNumpad("156"); break;
case '¥': altNumpad("157"); break;
case '₧': altNumpad("158"); break;
case 'ƒ': altNumpad("159"); break;
case 'á': altNumpad("160"); break;
case 'í': altNumpad("161"); break;
case 'ó': altNumpad("162"); break;
case 'ú': altNumpad("163"); break;
case 'ñ': altNumpad("164"); break;
case 'Ñ': altNumpad("165"); break;
case 'ª': altNumpad("166"); break;
case 'º': altNumpad("167"); break;
case '¿': altNumpad("168"); break;
case '⌐': altNumpad("169"); break;
case '¬': altNumpad("170"); break;
case '½': altNumpad("171"); break;
case '¼': altNumpad("172"); break;
case '¡': altNumpad("173"); break;
case '«': altNumpad("174"); break;
case '»': altNumpad("175"); break;
case '░': altNumpad("176"); break;
case '▒': altNumpad("177"); break;
case '▓': altNumpad("178"); break;
case '│': altNumpad("179"); break;
case '┤': altNumpad("180"); break;
case '╡': altNumpad("181"); break;
case '╢': altNumpad("182"); break;
case '╖': altNumpad("183"); break;
case '╕': altNumpad("184"); break;
case '╣': altNumpad("185"); break;
case '║': altNumpad("186"); break;
case '╗': altNumpad("187"); break;
case '╝': altNumpad("188"); break;
case '╜': altNumpad("189"); break;
case '╛': altNumpad("190"); break;
case '┐': altNumpad("191"); break;
case '└': altNumpad("192"); break;
case '┴': altNumpad("193"); break;
case '┬': altNumpad("194"); break;
case '├': altNumpad("195"); break;
case '─': altNumpad("196"); break;
case '┼': altNumpad("197"); break;
case '╞': altNumpad("198"); break;
case '╟': altNumpad("199"); break;
case '╚': altNumpad("200"); break;
case '╔': altNumpad("201"); break;
case '╩': altNumpad("202"); break;
case '╦': altNumpad("203"); break;
case '╠': altNumpad("204"); break;
case '═': altNumpad("205"); break;
case '╬': altNumpad("206"); break;
case '╧': altNumpad("207"); break;
case '╨': altNumpad("208"); break;
case '╤': altNumpad("209"); break;
case '╥': altNumpad("210"); break;
case '╙': altNumpad("211"); break;
case '╘': altNumpad("212"); break;
case '╒': altNumpad("213"); break;
case '╓': altNumpad("214"); break;
case '╫': altNumpad("215"); break;
case '╪': altNumpad("216"); break;
case '┘': altNumpad("217"); break;
case '┌': altNumpad("218"); break;
case '█': altNumpad("219"); break;
case '▄': altNumpad("220"); break;
case '▌': altNumpad("221"); break;
case '▐': altNumpad("222"); break;
case '▀': altNumpad("223"); break;
case 'α': altNumpad("224"); break;
case 'ß': altNumpad("225"); break;
case 'Γ': altNumpad("226"); break;
case 'π': altNumpad("227"); break;
case 'Σ': altNumpad("228"); break;
case 'σ': altNumpad("229"); break;
case 'µ': altNumpad("230"); break;
case 'τ': altNumpad("231"); break;
case 'Φ': altNumpad("232"); break;
case 'Θ': altNumpad("233"); break;
case 'Ω': altNumpad("234"); break;
case 'δ': altNumpad("235"); break;
case '∞': altNumpad("236"); break;
case 'φ': altNumpad("237"); break;
case 'ε': altNumpad("238"); break;
case '∩': altNumpad("239"); break;
case '≡': altNumpad("240"); break;
case '±': altNumpad("241"); break;
case '≥': altNumpad("242"); break;
case '≤': altNumpad("243"); break;
case '⌠': altNumpad("244"); break;
case '⌡': altNumpad("245"); break;
case '÷': altNumpad("246"); break;
case '≈': altNumpad("247"); break;
case '°': altNumpad("248"); break;
case '∙': altNumpad("249"); break;
case '·': altNumpad("250"); break;
case '√': altNumpad("251"); break;
case 'ⁿ': altNumpad("252"); break;
case '²': altNumpad("253"); break;
case '■': altNumpad("254"); break;
default: return;
}
}
private void altNumpad(int... numpadCodes){
if (numpadCodes.length == 0) {
return;
}
robot.keyPress(VK_ALT);
for (int NUMPAD_KEY : numpadCodes){
robot.keyPress(NUMPAD_KEY);
robot.keyRelease(NUMPAD_KEY);
}
robot.keyRelease(VK_ALT);
}
private void altNumpad(String numpadCodes){
if (numpadCodes == null || !numpadCodes.matches("^\\d+$")){
return;
}
robot.keyPress(VK_ALT);
for (char charater : numpadCodes.toCharArray()){
int NUMPAD_KEY = getNumpad(charater);
if (NUMPAD_KEY != -1){
robot.keyPress(NUMPAD_KEY);
robot.keyRelease(NUMPAD_KEY);
}
}
robot.keyRelease(VK_ALT);
}
private int getNumpad(char numberChar){
switch (numberChar){
case '0' : return VK_NUMPAD0;
case '1' : return VK_NUMPAD1;
case '2' : return VK_NUMPAD2;
case '3' : return VK_NUMPAD3;
case '4' : return VK_NUMPAD4;
case '5' : return VK_NUMPAD5;
case '6' : return VK_NUMPAD6;
case '7' : return VK_NUMPAD7;
case '8' : return VK_NUMPAD8;
case '9' : return VK_NUMPAD9;
default: return -1;
}
}
}
关于java - 无效的 key 代码@java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17844378/
我有一个接受以下参数的函数: int setvalue(void (*)(void *)); 为了满足参数:void (*)(void *),我创建了这样一个函数: static void *
我有以下代码: typedef void VOID; int f(void); int g(VOID); 在 C 中编译得很好(在 Fedora 10 上使用 gcc 4.3.2)。与 C++ 编译的
这个问题已经有答案了: Is f(void) deprecated in modern C and C++? [duplicate] (6 个回答) 已关闭 7 年前。 B.A.T.M.A.N./A.
我在 ASP.NET Core 3.1 项目上有以下 Identity Server 4 配置: services .AddIdentityServer(y => { y.Events.R
我们有一个 O365 租户,一切都是开箱即用的。租户放置在德国云中,而不是全局 (office.de) 中。我们还开发了一个 Office 插件,使用 OAuth 2.0 授权访问共享点。首先,我们向
我有一个如下所示的路由 routes.MapRoute( name: "Default", url: "{controller}/{action}/{i
我正在尝试使用 OAuth2.0 访问 google 文档。我已经从 Google API 控制台获取了客户端 ID 和 key 。但是当我运行这段代码时,我收到了异常。如果我遗漏了什么,有人可以建议
此代码有效: let mut b: Vec = Vec::with_capacity(a.len()); for val in a.iter() { b.push(val); } 此代码不起作
使用 client_credintials 授权类型请求 EWS oauth2 v2.0 的访问 token 时出现错误。 https://login.microsoftonline.com/tena
我通过 Java 应用程序使用 Google 电子表格时遇到了问题。我创建了应用程序,该应用程序运行了 1 年多,没有任何问题,我什至在 Create Spreadsheet using Google
如何创建 匹配所有无效 Base64 字符的正则表达式?我在堆栈上找到了 [^a-zA-Z0-9+/=\n\r].*$ 但是当我尝试时我得到了带有 - 符号的结果字符串.我根本不知道正则表达式,任何人
我从 Gitlab CI/CD Pipelines 获得错误信息:yaml invalid。问题是由 .gitlab-ci.yml 脚本的第五行引起的: - 'ssh deployer@gita
我有 3 个数据源,设置如下: @Configuration @Component public class DataSourceConfig { @Bean("foo") @Conf
你好,我想用bulkCreate ex 插入数据: [ { "typeId": 5, "devEui": "0094E796CBFCFEF9", "application_name": "Pressu
UIApplicationExitsOnSuspend 不会强制我的应用程序退出。我已经清理过目标、删除了应用程序、重建并重新安装了很多次。 我确实需要退出我的应用程序。 最佳答案 您是否链接了 SD
在 iPhone 配置门户上,显示我的 iPhone 团队配置配置文件无效。有一个“由 Xcode 管理”文本。 “续订”按钮被禁用。 我该如何解决这个问题?谢谢 最佳答案 使用 Xcode 3.2.
好的,所以今天我用我们的“实时”数据库中的新信息更新了我的数据库……从那时起,我的一个表格就出现了问题。如果您需要任何代码,请告诉我,我将对其进行编辑并发布所需的代码... 我有一个报告表格,其中有一
我有一个结构体,其中有一个元素表示为 void (*func)(); 我知道 void 指针通常用于函数指针,但我似乎无法定义该函数。我不断收到取消引用指向不完整类型的指针。我用谷歌搜索了一下但没有结
我正在尝试使用 Coldfusion 9 从 ning 网络获取凭证,所以首先这是测试 api 的 curl 语法: curl -k https://external.ningapis.com/xn/
这个问题已经有答案了: Does C have references? (2 个回答) 已关闭 4 年前。 我正在学习 C 语言引用,这是我的代码: #include int main(void)
我是一名优秀的程序员,十分优秀!