gpt4 book ai didi

java - Windows 8 平板电脑中的屏幕键盘

转载 作者:行者123 更新时间:2023-11-30 11:29:48 25 4
gpt4 key购买 nike

使用此代码片段,我通过来自 Java Swings 的焦点获得事件启动屏幕键盘进程。

String sysroot = System.getenv("SystemRoot");
Process proc = Runtime.getRuntime().exec("cmd /c " + sysroot + "/system32/osk.exe");

当失去焦点时,键盘应该关闭。我使用 proc.destroy() 来实现它。此实现在 Windows 8 平板电脑中表现异常。它在焦点上打开键盘,在失去焦点时不关闭。我正在从 Eclipse 运行该程序。

相同的实现非常适用于 Windows 7 桌面。唯一的变化是,我没有在 Windows 7 中指定 cmd/c。对于 Win 8,如果我不指定 cmd/c,它甚至不会打开键盘>

请提出解决方案。

最佳答案

这对我有用(Java 和 eclipse RCP):

    text.addFocusListener(new FocusListener()
{
@Override
public void focusLost(FocusEvent arg0)
{
LogUtil.logInfo("Closing OSK");

try
{
if(Settings.getBoolean(Settings.OSK_USETABTIP)) {
Runtime.getRuntime().exec("cmd /c taskkill /IM tabtip.exe");
} else {
Runtime.getRuntime().exec("cmd /c taskkill /IM osk.exe");
}
}
catch (IOException e)
{
LogUtil.logError(e.toString());
}
}

@Override
public void focusGained(FocusEvent arg0)
{
try
{
String sysroot = System.getenv("SystemRoot");

if(Settings.getBoolean(Settings.OSK_USETABTIP)) {
LogUtil.logInfo("Opening TabTip");
ProcessBuilder pb = new ProcessBuilder("C:/pathtotabtip/tabtip.exe");
pb.start();
} else {
LogUtil.logInfo("Opening OSK");
ProcessBuilder pb = new ProcessBuilder(sysroot + "/system32/osk.exe");
pb.start();
}
}
catch (Exception e)
{
LogUtil.logError(e.toString());
}
}
});

关于java - Windows 8 平板电脑中的屏幕键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18120479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com