如何使用Java打开和关闭虚拟键盘

2024-03-22

我尝试了这里的所有答案:

在Java程序中打开Windows虚拟键盘 https://stackoverflow.com/questions/4948420/open-the-windows-virtual-keyboard-in-a-java-program

我执行了Runtime.getRuntime().exec("cmd /c osk");我无法按照建议关闭它,我需要在一些过程后关闭它。

I tried:

import java.io.IOException;

public class ShowVirtualKeyboard{

    public static void main(String argv[]) throws IOException {
    String sysroot = System.getenv("SystemRoot");
    Process proc = Runtime.getRuntime().exec(sysroot + "/system32/osk.exe");
}
}

我得到了错误

Cannot run program "C://Windows/system32/osk.exe": CreateProcess error=740, The requested operation requires elevation

我认为有点晚了,但我设法像您一样使用 cmd 和 JNA(Java Native Access)库打开和关闭虚拟键盘(TabTip.exe):

要打开键盘:

// Java

String command = "cmd /c \"C:\\Program Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe\"";
Process = Runtime.getRuntime().exec(command);
process.waitFor();
process.destroy();

// Kotlin

val command = "cmd /c \"C:\\Program Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe\""
val process = Runtime.getRuntime().exec(command)
process.waitFor()
process.destroy()

关闭它:

//Java

String KEYBOARD_CLASS_NAME = "IPTIP_Main_Window";
int WM_SYS_COMMAND = 0x0112;
WinDef.WPARAM SC_CLOSE = WinDef.WPARAM(0xF060);
WinDef.HWND handle = User32.INSTANCE.FindWindow(KEYBOARD_CLASS_NAME, "");
if (handle != null) {
    User32.INSTANCE.SendMessage(handle, WM_SYS_COMMAND, SC_CLOSE, WinDef.LPARAM(0));
}

//Kotlin

val KEYBOARD_CLASS_NAME = "IPTIP_Main_Window"
val WM_SYS_COMMAND = 0x0112
val SC_CLOSE = WinDef.WPARAM(0xF060)
val handle = User32.INSTANCE.FindWindow(KEYBOARD_CLASS_NAME, "")
if (handle != null) {
    User32.INSTANCE.SendMessage(handle, WM_SYS_COMMAND, SC_CLOSE, WinDef.LPARAM(0))
}

关闭进程或从 cmd 杀死它对我来说不起作用,所以我必须以本机方式执行此操作。我希望这也适合你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Java打开和关闭虚拟键盘 的相关文章

  • 将 MouseListener 添加到面板

    我正在尝试将鼠标操作添加到我的面板中 这就是程序应该做的事情 编写一个程序 允许用户通过按三下鼠标来指定一个三角形 第一次按下鼠标后 画一个小点 第二次按下鼠标后 绘制一条连接前两个点的线 第三次按下鼠标后 绘制整个三角形 第四次按下鼠标会
  • 在 Java 中使用 Batik 检查和删除 SVG 中的属性

    这个问题基本上说明了一切 如何检查 SVG 是否具有 viewBox 属性 我正在使用蜡染库 我需要这个 因为我需要 至少 通知用户有一个 viewBox 属性 我可以删除它吗 使用 org w3c dom 类 您可以按照以下方式做一些事情
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 对象数组的数组(二维数组)JNI

    我正在努力创建自定义对象类型 ShareStruct 的二维数组 jobjectArray ret jobjectArray ins jobjectArray outs jclass myClass env gt FindClass env
  • 如何作为应用程序发布到页面?

    所以 我有一个应用程序 Facebook 应用程序实体 并且我有一个页面 我想使用应用程序通过java代码 通过restfb或任何其他建议 发布到页面 看起来我错过了页面授予应用程序发布权限的阶段 不知道该怎么做 谢谢你们 乌里 您只能 作
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • 运行 java -jar 时出现 java.lang.ClassNotFoundException

    我正在使用 ant 来构建我的build xml文件 它编译正常 但随后得到运行时java lang NoClassDefFoundError通过 运行生成的 jar 时java jar my jar jar 似乎这个问题出现了很多 但没有
  • 使用 Spring 控制器处理错误 404

    I use ExceptionHandler处理我的网络应用程序抛出的异常 在我的例子中我的应用程序返回JSON回应HTTP status用于对客户端的错误响应 但是 我正在尝试弄清楚如何处理error 404返回与处理的类似的 JSON
  • 即使在轴上进行自动量程调整,我也可以保留积分刻度线吗?

    我 偷 了一些代码here http fxexperience com 2012 01 curve fitting and styling areachart 拥有一个AreaChart我在 FXML 中使用了 平滑线条 它的工作原理如下
  • 在哪里保存选项值、重要文件的路径等[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在创建一个程序 需要设置一些选项值以及图像文件的一些路径 SQLite 数据库的路径 有关各种按钮上文本的一些信息 有关要使用哪个数据库的信
  • 我需要在 JFileChooser(打开模式)中显示不带扩展名的文件名。如何?

    我在打开模式下使用 JFileChooser 我需要显示不带扩展名的 文件名 字段 如何 我知道文件视图 它删除文件系统文件中的扩展名 但将所选文件中的扩展名保留在 文件名 字段中解释 http saveimg ru show image
  • 在grails控制器中识别ajax请求或浏览器请求

    我正在开发一个使用大量ajax的grails应用程序 如果请求是ajax调用 那么它应该给出响应 这部分正在工作 但是如果我在浏览器中输入URL 它应该带我到主页 索引页面而不是请求的页面 下面是ajax调用的示例gsp代码
  • java setFullScreenWindow 在 Mac 中隐藏登录对话框

    我使用的是全屏窗口 类似于屏幕保护程序 使用这里的方法 GraphicsEnvironment getLocalGraphicsEnvironment getDefaultScreenDevice setFullScreenWindow t
  • Struts 1 到 Spring 迁移 - 策略

    我有一个legacy银行应用程序编码为Struts 1 JSP现在的要求是迁移后端 目前为 MVC to Springboot MVC 后续UI JSP 将迁移到angular Caveats 1 后端不是无状态的 2 会话对象中存储了大量
  • 用于层次结构树角色的 Spring Security / Java EE 解决方案

    我知道 Spring Security 非常适合标准角色和基于权限的授权 我不确定的是这种情况 系统中管理着 10 000 名员工 员工被组织成组织结构图 跨部门的谁向谁报告的树 其中一些员工是用户 这些用户仅被允许访问其职责范围内的员工
  • 使用 Windows 批处理文件在文本文件中添加新行

    我有一个文本文件 其中有 200 多行 我只想在第 4 行之前添加一个新行 我使用的是 Windows XP 输入前的示例文本文件 header 1 header 2 header 3 details 1 details 2 输出后 hea
  • 使用单独的线程在java中读取和写入文件

    我创建了两个线程并修改了 run 函数 以便一个线程读取一行 另一个线程将同一行写入新文件 这种情况会发生直到整个文件被复制为止 我遇到的问题是 即使我使用变量来控制线程一一执行 但线程的执行仍然不均匀 即一个线程执行多次 然后控制权转移
  • 当底层连接是有状态时如何使用 Apache HttpClient?

    我在谷歌上搜索了很多关于如何使用 HttpClient 进行多线程处理的信息 他们中的大多数人建议使用 ThreadSafeClientConnManager 但我的应用程序必须登录某个主机 登录表单页面 以便 HttpClient 获得底
  • 如何在 O(n) 时间内根据 Map 中的整数值相对于其他值随机选择一个键?

    如果我们有一个Map
  • javax.media.jai 类的公共下载?

    这是一个非常简单的问题 我一直在寻找可以下载 javax media jai 库的地方 我找到了 jai imageio 库 但是我发现的所有其他 jai 内容要么已经过时 2008 年及之前 然后我遇到了登录屏幕 是否有 javax me

随机推荐

  • Micriμm μC/OS-III RTOS 中的分配和释放

    我们使用 Micrium 的 C OS III RTOS 和 Renesas 的 RX62N 我们构建了一个必须动态分配和释放数据的系统 我们发现了功能malloc and free 与 RTOS 配合得不好 然而 RTOS 为此提供了一个
  • ffmpeg 无损质量转换

    当文件类型不是 flv mp4 webm 时 我需要将所有视频转换到我的视频播放器 在网站中 当我使用时 ffmpeg i filename mkv sameq ar 22050 filename mp4 h264 0x645ee0 解码
  • php eclipse 调试

    我正在使用 eclipse 运行 php 脚本 当设置断点并运行脚本时 它会抛出此错误 从错误中可以看出 我已经更改了 php ini 文件的某些内容 但我不知道我必须更改什么才能制作 zend 或 xdebug 即使我也不知道它们之间有什
  • 将 LIMIT 作为参数传递给 MySQL sproc

    我正在创建一个分页类 需要将两个参数传递给我的 MySQL 存储过程作为 LIMIT 子句 我将它们作为 INT 传递并尝试这样的事情 SELECT FROM MyTable LIMIT MyFirstParamInt MySecondPa
  • 可以从 iOS 应用程序打开 watchOS 应用程序吗?

    我知道苹果手表应用程序可以在后台启动其父应用程序来来回传递数据 但它可以反过来工作吗 我的 iOS 应用程序可以启动相关的 watchOS 应用程序吗 为了获得更多的见解 我正在尝试完成此任务 以便我可以定期监控数据以发出通知 苹果给了我
  • 无法将spark添加到PYTHONPATH

    我正在努力将 Spark 添加到我的 python 路径中 myenv me me home me set SPARK HOME home me spark 1 2 1 bin hadoop2 4 myenv me me home me s
  • 在新线程问题中使用 spring 发送电子邮件

    我正在开发的应用程序的功能之一是 每次用户在我们的系统中注册他的发票时都会发送一封电子邮件 从 Java 应用程序发送电子邮件很容易 尤其是使用 Spring 框架时 我用JavaMailSenderImpl and 简单邮件消息来自 Sp
  • Gmail HTML 电子邮件背景

    我正在处理 HTML 电子邮件 我遇到的问题是 GMAIL 不使用我给它的 背景位置 我有一个 100 宽度的表格 其背景必须居中 大多数客户端都能完美地做到这一点 但 Gmail 却做不到 有解决方法吗 内联CSS是这样的 我已经将所有背
  • 在任何地方使用 eks 创建集群时出错

    我正在尝试在任何地方使用 eks 在 centos7 机器上创建本地集群 但是我遇到了以下错误 如果我遗漏了什么 请告诉我 这是我用来创建集群的链接 我还附上了集群创建 yaml 文件 Link https aws amazon com b
  • jquery .load 使用 python 烧瓶

    我试图在我的 Flask 应用程序中使用 jquery load 来在每次用户按下按钮添加新的 div 时添加一个 div 但它找不到 html 文件 有问题的函数 document ready function add click fun
  • 什么是全局::?

    在 C 中我看到global 在自动生成的代码中经常使用 这不是我自己用过的东西 所以我不知道它的目的是什么 有人可以解释一下吗 global 指的是全局命名空间 它可以用来解决重新定义类型的问题 例如 class foo class Sy
  • XMLHttpRequest() 与 ActiveXObject("Microsoft.XMLHTTP") - 有什么意义?

    Microsoft 最终在 Internet Explorer 7 中添加了本机 XMLHttpRequest 对象 但我发现它可以在 Internet 选项 对话框中禁用 那么使用 XMLHttpRequest 与 ActiveXObje
  • 使用 gcov 进行交叉分析,但忽略 GCOV_PREFIX 和 GCOV_PREFIX_STRIP

    我想使用 GCOV 进行代码覆盖 但测试将在另一台机器上运行 因此可执行文件中 gcda 文件的硬连线路径将不起作用 为了更改此默认目录 我可以使用 GCOV PREFIX 和 GCOV PREFIX STRIP 环境变量 如上所述here
  • 将 Twitter Bootstrap 添加到 CodeIgniter?

    我使用 CodeIgniter 开发了网站 该网站使用 MySQL 来填充结果页面 我现在想改进所有页面的外观 大多数地方都推荐使用 Bootstrap 我尝试将 Bootstrap 添加到我的 CodeIgniter 项目中 但没有成功
  • Qt:QProcess调用终端+脚本

    我在使用 QProcess 时遇到了真正的麻烦 我已经查看了几个使用它的位置 但每次使用它时我的程序都会冻结 或者它只是不执行我想要它执行的操作 我想从 GUI 应用程序执行以下操作 将目录更改为 Users Tim etc 等 从那里我需
  • 创建一个简单的 VUE.JS 应用程序

    我正在尝试按照以下步骤在应用程序中使用 Vue 中的简单多边形裁剪器article https morioh com p 06b7fc24c8b5 我使用以下方法创建了我的应用程序 vue init webpack myproject 现在
  • 如何在包含 Rust 特征的泛型类型上实现 deref?

    如果能够使用 Deref 从通用容器生成 TraitType 而不是调用 instance as ref 会相当方便 IE my container do thing vs my container as ref do thing 为此 我
  • 防止复制使用 dompdf 创建的 pdf 中的内容

    有没有办法阻止接收者在dompdf中选择和复制pdf文件的内容 像其他打开它时看起来像图片的pdf文件一样 所有字母和图像都无法选择 您可以使用底层 CPDF 引擎来指定用户可以对文档执行哪些操作 根据 CPDF 文档 调用 setEncr
  • 获取设备令牌时发件人 ID 无效

    我正在我的 Android 应用程序中进行 Firebase 云消息传递设置 我不是第一次做 我已经做过很多次了 但这一次 我在尝试获取设备令牌时遇到了一个奇怪的错误 无效的发件人 ID 除了默认情况下存在于 google services
  • 如何使用Java打开和关闭虚拟键盘

    我尝试了这里的所有答案 在Java程序中打开Windows虚拟键盘 https stackoverflow com questions 4948420 open the windows virtual keyboard in a java