Comment garder la machine éveillée?

j'ai un morceau de logiciel serveur écrit en Java pour fonctionner sur Windows et OS X. (Il ne tourne pas sur un serveur, mais juste sur le PC d'un utilisateur normal-quelque chose comme un client torrent. J'aimerais que le logiciel envoie un signal à L'OS pour garder la machine éveillée (l'empêcher de passer en mode veille) pendant qu'elle est active.

bien sûr, je ne m'attends pas à ce qu'il y ait une solution multi-plateforme, mais j'aimerais avoir quelques programmes/scripts C très minimes que mon application puisse générer pour informer le OS à rester éveillé.

des idées?

24
demandé sur chills42 2008-09-10 00:50:12
la source

15 ответов

j'utilise ce code pour empêcher mon poste de travail de se verrouiller. Il est actuellement à déplacer la souris une fois toutes les minutes, vous pouvez facilement ajuster si.

C'est un piratage, pas une solution élégante.

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);
        }
    }
}
24
répondu ScArcher2 2008-09-10 01:31:14
la source

j'ai entendu des histoires de gens qui ont un gros sub-woofer, puis un canal tapant un couvercle de boîte vers le haut. Vous pouvez ensuite mettre la souris dans la boîte et mettez de la musique. De préférence quelque chose avec beaucoup de basse qui fera bouger la souris.

17
répondu Casey Watson 2009-05-20 18:48:19
la source

sur Windows, utilisez le SystemParametersInfo fonction. C'est une fonction de l'armée suisse qui vous permet d'obtenir/régler toutes sortes de paramètres du système.

Pour désactiver l'écran de l'arrêt, par exemple:

SystemParametersInfo( SPI_SETPOWEROFFACTIVE, 0, NULL, 0 );

Juste être sûr de le régler lorsque vous avez terminé...

12
répondu Matt Dillard 2008-09-10 01:05:24
la source

j'ai une technique de force très brute de déplacer la souris 1 point dans la direction x et ensuite revenir toutes les 3 minutes.

il y a peut-être une solution plus élégante, mais c'est une solution rapide.

6
répondu Keng 2008-09-10 00:56:17
la source

ajout à l'extrait de code de scarcher2 ci-dessus et déplacement de la souris de seulement 1 pixel. J'ai déplacé la souris deux fois de sorte qu'un certain changement se produit même si le pointeur est sur les extrêmes:

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
répondu asloob 2016-07-11 13:29:20
la source

toutes les suggestions de déplacement de la souris ne rendraient-elles pas l'utilisateur fou? Je sais que j'enlèverais n'importe quelle application qui ferait ça dès que je pourrais l'isoler.

4
répondu zigdon 2008-09-10 03:49:08
la source

ne Serait-il pas plus facile de désactiver la gestion de l'alimentation sur le serveur? On pourrait dire que les serveurs ne devraient pas passer en mode powersave?

2
répondu zigdon 2008-09-10 00:55:21
la source

j'ai utilisé hréglez pour contrôler le mode veille sur mon Mac pendant un certain temps maintenant, et il est assez facile à intégrer. Voici un exemple approximatif de la façon dont vous pouvez appeler ce programme depuis Java pour désactiver/activer le mode veille. Notez que vous avez besoin de privilèges root pour exécuter pmset, et donc vous aurez besoin d'eux pour exécuter ce programme.

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;
    }
}
2
répondu David Crow 2008-09-10 05:21:27
la source

vous pouvez utiliser le programme caféine caffiene

2
répondu Milhous 2008-09-18 19:32:14
la source

dans Visual Studio créer une forme simple. De la barre d'outils, faites glisser une commande de minuterie sur le formulaire. Dans le code Init, réglez l'intervalle de temps à 60 secondes (60000 ms.). Implémenter le callback timer avec le code suivant "SendKeys.Envoyer ("{F15}");" Lancez le nouveau programme.

aucun mouvement de souris nécessaire.

Edit: au moins sur mon poste de travail de L'armée de terre, la simple génération de souris et de messages clés par programmation n'est pas suffisante pour garder mon poste de travail connecté et éveillé. Anticipé les affiches avec le cours de Robot Java sont sur la bonne voie. Le Robot JAVA fonctionne sur ou au - dessous de la couche HAL (Hardware Abstraction Layer) De L'OS.cependant, j'ai recréé et testé la solution Java/Robot et cela n'a pas fonctionné-jusqu'à ce que j'ajoute un Robot.keyPress(123) pour le code.

2
répondu Felinis 2015-07-07 23:09:11
la source

exécuter une commande à l'intérieur d'une minuterie comme pinguer le serveur..

1
répondu Gulzar Nazim 2008-09-10 00:54:07
la source

je ferais juste une fonction (ou télécharger une application freebie) qui déplace la souris. Inélégant, mais facile.

1
répondu Paulj 2008-09-10 01:08:41
la source

ce code déplace le pointeur à l'endroit où il se trouve déjà pour que l'utilisateur ne remarque aucune différence.

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
répondu Javier Carmona 2013-10-13 23:00:41
la source

sur OS X, juste spawn caffeinate. Cela empêche le système de dormir jusqu'à ce que caffeinate est terminée.

1
répondu ihatetoregister 2015-05-19 00:46:16
la source

Cela fonctionne:

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
répondu Santosh Jadi 2018-06-13 12:21:08
la source