2012-09-09 23 views
5

Sto lavorando a un'applicazione Web che deve essere attiva sul monitor a volte per ore senza che nessuno tocchi il computer.Disabilita la modalità screen saver/sleep tramite un sito Web

Il problema è che alcuni computer hanno il loro screen saver o, peggio, la modalità sleep mentre sono inattivi.

Sto provando a pensare a un modo per aggirarlo. Ho cercato applet Java o forse un file flash che fa solo questo. Non ho trovato nulla, sfortunatamente.

Mi dispiace per la domanda troppo generica ma sono abbastanza impotente con questo argomento

+4

Sono sicuro, non si può fare nulla del genere. Almeno tramite JS o Flash. –

+0

Si dovrebbe rimuovere il tag javascript, non è possibile farlo con javascript ... –

+0

Si potrebbe fare, se si inviano eventi personalizzati su mousemove, ma questo è un trucco molto sporco. –

risposta

1

ho scritto l'applet Java per voi. Si muoverà il mouse cursore di un pixel a destra e ritorno ogni 59 secondi, impedendo in modo efficace lo screen saver da calci in.

Nota che because of security restrictions questa applet dovrà be signed e granted the createRobot permission a lavorare sul client, altrimenti lo farà impossibile inizializzare la classe Robot. Ma questo è un problema al di fuori dell'ambito di questa domanda.

import java.applet.Applet; 
import java.awt.*; 
import java.util.Timer; 
import java.util.TimerTask; 

/** 
* Moves the mouse cursor once in a minute to prevent the screen saver from 
* kicking in. 
*/ 
public class ScreenSaverDisablerApplet extends Applet { 

    private static final int PERIOD = 59; 
    private Timer screenSaverDisabler; 

    @Override 
    public void start() { 
     screenSaverDisabler = new Timer(); 
     screenSaverDisabler.scheduleAtFixedRate(new TimerTask() { 
      Robot r = null; 
      { 
       try { 
        r = new Robot(); 
       } catch (AWTException headlessEnvironmentException) { 
        screenSaverDisabler.cancel(); 
       } 
      } 
      @Override 
      public void run() { 
       Point loc = MouseInfo.getPointerInfo().getLocation(); 
       r.mouseMove(loc.x + 1, loc.y); 
       r.mouseMove(loc.x, loc.y); 
      } 
     }, 0, PERIOD*1000); 
    } 

    @Override 
    public void stop() { 
     screenSaverDisabler.cancel(); 
    } 

} 
Problemi correlati