Как вы держите машину без сна? - PullRequest
26 голосов
/ 10 сентября 2008

У меня есть часть серверного программного обеспечения, написанного на Java, для запуска в Windows и OS X. (Он не работает на сервере, а просто на компьютере обычного пользователя - что-то вроде торрент-клиента.) Я хотел бы программное обеспечение, сигнализирующее операционной системе о том, что машина не спит (не допускает перехода в спящий режим), пока она активна.

Конечно, я не ожидаю, что будет кросс-платформенное решение, но мне бы хотелось иметь несколько очень минимальных программ / скриптов на Си, которые моё приложение может вызывать, чтобы информировать ОС, чтобы она не спала.

Есть идеи?

Ответы [ 17 ]

1 голос
/ 13 июня 2018

Это будет работать:

public class Utils {
    public static void main(String[] args) throws AWTException {
        Robot rob = new Robot();
        PointerInfo ptr = null;
        while (true) {
            rob.delay(4000);  // Mouse moves every 4 seconds
            ptr = MouseInfo.getPointerInfo();
            rob.mouseMove((int) ptr.getLocation().getX() + 1, (int) ptr.getLocation().getY() + 1);
        }
    }
}
1 голос
/ 19 мая 2015

В OS X просто создайте caffeinate. Это предотвратит спящий режим системы до тех пор, пока caffeinate не будет прерван.

1 голос
/ 13 октября 2013

Этот код перемещает указатель в то же место, где он уже находится, поэтому пользователь не замечает никакой разницы.

while (true) {
    Thread.sleep(180000);//this is how long before it moves
    Point mouseLoc = MouseInfo.getPointerInfo().getLocation();
    Robot rob = new Robot();
    rob.mouseMove(mouseLoc.x, mouseLoc.y);
}
1 голос
/ 10 сентября 2008

Я бы просто сделал функцию (или скачал бесплатное приложение), которая перемещает мышь. Не элегантный, но легкий.

1 голос
/ 14 февраля 2019

Вот готовый пакетный файл, который генерирует код Java, компилирует его, очищает сгенерированные файлы и работает в фоновом режиме .. (на ноутбуке требуется jdk)

Просто запустите этот файл Bat;)

@echo off
setlocal

rem rem if JAVA is set and run from :startapp labeled section below, else the program exit through :end labeled section.
if not "[%JAVA_HOME%]"=="[]" goto start_app
echo. JAVA_HOME not set. Application will not run!
goto end


:start_app
echo. Using java in %JAVA_HOME%
rem writes below code to Energy.java file.
@echo import java.awt.MouseInfo; > Energy.java
@echo import java.awt.Point; >> Energy.java
@echo import java.awt.Robot; >> Energy.java
@echo //Mouse Movement Simulation >> Energy.java
@echo public class Energy { >> Energy.java
@echo     public static void main(String[] args) throws Exception { >> Energy.java
@echo         Robot energy = new Robot(); >> Energy.java
@echo         while (true) { >> Energy.java
@echo             energy.delay(1000 * 60); >> Energy.java
@echo             Point pObj = MouseInfo.getPointerInfo().getLocation(); >> Energy.java
@echo             Point pObj2 = pObj;  >> Energy.java
@echo             System.out.println(pObj.toString() + "x>>" + pObj.x + "  y>>" + pObj.y); >> Energy.java
@echo             energy.mouseMove(pObj.x + 10, pObj.y + 10); >> Energy.java
@echo             energy.mouseMove(pObj.x - 10, pObj.y - 10); >> Energy.java
@echo             energy.mouseMove(pObj2.x, pObj.y); >> Energy.java
@echo             pObj = MouseInfo.getPointerInfo().getLocation(); >> Energy.java
@echo             System.out.println(pObj.toString() + "x>>" + pObj.x + "  y>>" + pObj.y); >> Energy.java
@echo         } >> Energy.java
@echo     } >> Energy.java
@echo } >> Energy.java

rem compile java code.
javac Energy.java
rem run java application in background.
start javaw Energy
echo. Your Secret Energy program is running...
goto end

:end
rem clean if files are created.
pause
del "Energy.class"
del "Energy.java"
1 голос
/ 10 сентября 2008

Запустите команду внутри таймера, как пинг сервера ..

0 голосов
/ 15 мая 2019

Один простой способ, который я использую, чтобы избежать «Автоблокировка рабочего стола Windows», - это «Включение / выключение NumLock» каждые 6 секунд.

Здесь программа Java для включения / выключения NumLock.

import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class NumLock extends Thread {
  public void run() {
    try {
    boolean flag = true;
    do {
        flag = !flag;

        Thread.sleep(6000);
        Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent. VK_NUM_LOCK, flag);
    }
    while(true);
    }
    catch(Exception e) {}
  }

  public static void main(String[] args) throws Exception {
    new NumLock().start();
  }
}

Запустите эту Java-программу в отдельной командной строке; : -)

...