Подтвердить что ты не робот

Как вы поддерживаете машину?

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

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

Любые идеи?

4b9b3361

Ответ 1

Я использую этот код, чтобы моя рабочая станция не блокировалась. В настоящее время он настроен только на перемещение мыши раз в минуту, вы можете легко его отрегулировать.

Это взломать, а не изящное решение.

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

Ответ 2

Я слышал истории о том, что люди получают большой сабвуфер, а затем прокладывают ленту на крышке коробки вверх. Затем вы можете поместить мышь в окно и включить музыку. Предпочтительно что-то с большим количеством басов, которые будут удерживать мышь.

Ответ 3

В Windows используйте функцию SystemParametersInfo. Это функция швейцарского армейского стиля, которая позволяет вам получать/устанавливать всевозможные системные настройки.

Чтобы отключить отключение экрана, например:

SystemParametersInfo( SPI_SETPOWEROFFACTIVE, 0, NULL, 0 );

Просто верните его, когда закончите...

Ответ 4

У меня очень грубая техника перемещения мыши 1-й точки в направлении x, а затем назад каждые 3 минуты.

Там может быть более элегантное решение, но это быстрое решение.

Ответ 5

Добавление в фрагмент кода sccher2 выше и перемещение мыши всего на 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);
        }

Ответ 6

Не все ли предложения, перемещающие мышь назад и вперед, приводят пользователя в бешенство? Я знаю, что я удалю любое приложение, которое сделает это, как только я смогу его изолировать.

Ответ 7

Не было бы проще отключить управление питанием на сервере? Можно утверждать, что серверы не должны переходить в режим энергосбережения?

Ответ 8

Я использовал pmset для управления режимом сна на моем Mac некоторое время, и это довольно легко интегрировать. Вот пример того, как вы могли бы вызвать эту программу из Java, чтобы отключить/включить режим сна. Обратите внимание, что для запуска pmset необходимы привилегии root, поэтому вам понадобится запустить эту программу.

import java.io.BufferedInputStream;
import java.io.IOException;

/**
 * Disable sleep mode (record current setting beforehand), and re-enable sleep
 * mode. Works with Mac OS X using the "pmset" command.
 */
public class SleepSwitch {

    private int sleepTime = -1;

    public void disableSleep() throws IOException {
        if (sleepTime != -1) {
            // sleep time is already recorded, assume sleep is disabled
            return;
        }

        // query pmset for the current setting
        Process proc = Runtime.getRuntime().exec("pmset -g");
        BufferedInputStream is = new BufferedInputStream(proc.getInputStream());
        StringBuffer output = new StringBuffer();
        int c;
        while ((c = is.read()) != -1) {
            output.append((char) c);
        }
        is.close();

        // parse the current setting and store the sleep time
        String outString = output.toString();
        String setting = outString.substring(outString.indexOf(" sleep\t")).trim();
        setting = setting.substring(7, setting.indexOf(" ")).trim();
        sleepTime = Integer.parseInt(setting);

        // set the sleep time to zero (disable sleep)
        Runtime.getRuntime().exec("pmset sleep 0");
    }

    public void enableSleep() throws IOException {
        if (sleepTime == -1) {
            // sleep time is not recorded, assume sleep is enabled
            return;
        }

        // set the sleep time to the previously stored value
        Runtime.getRuntime().exec("pmset sleep " + sleepTime);

        // reset the stored sleep time
        sleepTime = -1;
    }
}

Ответ 9

Вы можете использовать программу Caffeine caffiene, чтобы ваша рабочая станция не спала. Вы можете запустить программу через команду open в os X.

Ответ 10

В Visual Studio создайте простую форму. На панели инструментов перетащите элемент управления таймера в форму. В коде Init установите интервал таймера на 60 секунд (60000 мс). Внедрите обратный вызов таймера со следующим кодом "SendKeys.Send(" {F15} "); Запустите новую программу.

Не требуется движения мыши.

Изменить: по крайней мере, на моей рабочей станции в армии просто программно генерировать сообщения с мышью и клавишами недостаточно, чтобы моя рабочая станция зашла в систему и проснулась. Ранние плакаты с классом Java Robot находятся на правильном пути. JAVA Robot работает или находится под OS HAL (уровень абстракции оборудования). Однако я воссоздал и протестировал решение Java/Robot, и оно не сработало - пока я не добавил код Robot.keyPress(123) в код.

Ответ 11

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

Ответ 12

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

Ответ 13

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

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

Ответ 14

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

Ответ 15

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

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

Ответ 16

Здесь завершен пакетный файл, который генерирует код 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"

Ответ 17

Один простой способ, который я использую, чтобы избежать "Автоблокировка рабочего стола 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-программу в отдельной командной строке; :-)