当前位置:  开发笔记 > 编程语言 > 正文

你如何保持机器清醒?

如何解决《你如何保持机器清醒?》经验,为你挑选了4个好方法。

我有一个用Java编写的服务器软件,可以在Windows和OS X上运行.(它不是在服务器上运行,而只是普通用户的PC - 类似于torrent客户端.)我希望软件发出信号在操作系统处于活动状态时保持机器处于唤醒状态(防止其进入睡眠模式).

当然我不希望有一个跨平台的解决方案,但我希望有一些非常小的C程序/脚本,我的应用程序可以产生,以通知操作系统保持清醒.

有任何想法吗?



1> ScArcher2..:

我使用此代码来防止我的工作站锁定.它目前只设置为每分钟移动一次鼠标,你可以很容易地调整它.

这是一个黑客,而不是一个优雅的解决方案.

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);
        }
    }
}


为什么不像@Keng提到的那样将鼠标移动1个像素?这似乎会让用户疯狂.
如果安装了Java的无头版本(仅Linux),这将不起作用。
您可以这样做,但我不需要。我刚刚发布了我正在使用的代码。我花了大约2分钟才能写完,而且我不需要更改它。如果您想发布修改后的版本以将其移动一个像素,那就太酷了。

2> Matt Dillard..:

在Windows上,使用SystemParametersInfo函数.这是一种瑞士军队风格的功能,可以让你获得/设置各种系统设置.

要禁用屏幕关闭,例如:

SystemParametersInfo( SPI_SETPOWEROFFACTIVE, 0, NULL, 0 );

你完成后一定要把它放回去......


非常糟糕的主意.如果程序崩溃,那么您只是在未经许可的情况下更改了用户设置.您应该处理WM_POWERBROADCAST消息.
这肯定是使用这种方法的危险; 通过创建一个在其构造函数中进行此调用的类,并在析构函数中重置它,可以稍微减轻(在C++中).处理WM_POWERBROADCAST事件也可能有效,但仅适用于某些类型的Windows.

3> Keng..:

我有一种非常强力的技术,可以在x方向上移动鼠标1点,然后每3分钟移回一次.

可能有一个更优雅的解决方案,但它是一个快速解决方案.



4> asloob..:

添加上面的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);
        }

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有