【问题标题】:Java - exiting screensaver programmatically on Windows 8/10Java - 在 Windows 8/10 上以编程方式退出屏幕保护程序
【发布时间】:2015-12-23 12:30:25
【问题描述】:

我正在寻找一种以编程方式启动触发器以从 Java 应用程序退出活动屏幕保护程序的方法。

在 Windows 7 中,我使用 Java Robot 类的按键来退出活动的屏幕保护程序。此方法不再适用于 Windows 8/10。

还有其他方法吗?

【问题讨论】:

  • 你可以试试 JNI,看看 coderanch 上的这个post。从他使用的技术中,您可以搜索任何正在运行的程序并向其发送输入 "~",就像他在帖子中解释的那样。
  • 击键本身使用 Robot 类正确执行(我使用 windows 键 + D 最小化我的 java 应用程序中的所有应用程序),但它不会退出屏幕保护程序。
  • 你试过移动鼠标吗?
  • 是的,它没有帮助。我想知道 Windows 8 和早期版本的 Windows 屏幕保护程序有什么区别,这可能是对较新 Windows 版本进行的安全更新的一部分。

标签: java windows screensaver keystroke


【解决方案1】:

我用 Windows 批处理文件解决了这个问题。批处理文件是从java进程执行的。

批处理文件正在从注册表中读取活动屏幕保护程序的名称,并使用 taskkill 命令杀死该进程。

这是.bat文件内容

rem active screensaver name from the registry
FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE') DO SET screensaver=%%B
ECHO screensaver=%screensaver%

rem the screensaver name contains the absolute path 
rem extract only the name
Set filename=%screensaver%
For %%A in ("%filename%") do (
    Set Folder=%%~dpA
    Set Name=%%~nxA
)
echo.Folder is: %Folder%
echo.Name is: %Name%

rem kill the screensaver process
taskkill /im %Name% /f

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2010-10-26
    • 2010-11-25
    • 1970-01-01
    相关资源
    最近更新 更多