我有一个用Java编写的服务器软件,可以在Windows和OS X上运行.(它不是在服务器上运行,而只是普通用户的PC - 类似于torrent客户端.)我希望软件发出信号在操作系统处于活动状态时保持机器处于唤醒状态(防止其进入睡眠模式).
当然我不希望有一个跨平台的解决方案,但我希望有一些非常小的C程序/脚本,我的应用程序可以产生,以通知操作系统保持清醒.
有任何想法吗?
我使用此代码来防止我的工作站锁定.它目前只设置为每分钟移动一次鼠标,你可以很容易地调整它.
这是一个黑客,而不是一个优雅的解决方案.
import java.awt.*; import java.util.*; public class Hal{ public static void main(String[] args) throws Exception{ Robot hal = new Robot(); Random random = new Random(); while(true){ hal.delay(1000 * 60); int x = random.nextInt() % 640; int y = random.nextInt() % 480; hal.mouseMove(x,y); } } }
在Windows上,使用SystemParametersInfo函数.这是一种瑞士军队风格的功能,可以让你获得/设置各种系统设置.
要禁用屏幕关闭,例如:
SystemParametersInfo( SPI_SETPOWEROFFACTIVE, 0, NULL, 0 );
你完成后一定要把它放回去......
我有一种非常强力的技术,可以在x方向上移动鼠标1点,然后每3分钟移回一次.
可能有一个更优雅的解决方案,但它是一个快速解决方案.
添加上面的scarcher2的代码片段并仅将鼠标移动1个像素.我已经移动了两次鼠标,以便即使指针处于极端状态也会发生一些变化:
while(true){ hal.delay(1000 * 30); Point pObj = MouseInfo.getPointerInfo().getLocation(); System.out.println(pObj.toString() + "x>>" + pObj.x + " y>>" + pObj.y); hal.mouseMove(pObj.x + 1, pObj.y + 1); hal.mouseMove(pObj.x - 1, pObj.y - 1); pObj = MouseInfo.getPointerInfo().getLocation(); System.out.println(pObj.toString() + "x>>" + pObj.x + " y>>" + pObj.y); }