Newsgroup: it.comp.lang.delphi
Titolo: Rientro dallo stato di power save on

Ciao a tutti,
   c'e' un modo per sapere quando il pc rientra dallo stato di power save?
Situazione:
Programma che gira ... e sta riproducendo un file musicale, dopo 10 
minuti entra lo spegnimento automatico del monitor che, evidentemente, 
ferma la musica.
In qualche modo si esce dalla funzione di power save (tramite mouse e/o 
tastiera), il monitor si riaccende ma la musica rimane spenta.
 
Con
 
procedure TForm1.AppEventMessage(var Msg: tagMSG; var Handled: Boolean);
begin
   if (Msg.Message = WM_SYSCOMMAND) and (Msg.wParam = SC_MONITORPOWER) then
   begin
     // Monitor off ...
     Sleep(5);
   end;
end;
 
riesco ad intercettare il momento in cui si spegne lo schermo ....
Ma non riesco ad intercettare il momento in cui lo schermo si riaccende.
 
Qualche suggerimento ??
 
Grazie
 
Daniele

 ferma la musica. 
 
penso che sia più corretto impedire al computer di entrare in power save quando sta riproducendo un file musicale, nelle librerie Jvcl c'era un componente TJvScreenSaveSuppressor, ciao Brunello

 tastiera), il monitor si riaccende ma la musica rimane spenta. 
 
Hai fatto qualche ricerca? Trovato qualcosa? Se si cosa? Se no, cosa hai cercato?
 
A.
 
 

 penso che sia più corretto impedire al computer di entrare in power save quando sta riproducendo un file musicale, nelle librerie Jvcl c'era un componente TJvScreenSaveSuppressor, ciao Brunello
 
 
No. un tuo programma non può e non deve mettere il naso sulle impostazioni di sistema stabilite dall'utente.
Se io da utente beccassi una cosa del genere inizierei ad urlare...
Decido IO le impostazioni di risparmio energetico e tu sviluppatore ti devi fare i cazzi tuoi, punto.
 
A.
 
 
 
 
 
 
 

Ciao Alberto,
   il monitor in questione e' collegato al pc via HDMI.
Da quello che ho letto in rete, quando parte la disattivazione del 
monitor se e' collegato via HDMI tutto quanto e' multimediale si ferma.
 
Ho cosi' ampliato la ricerca e, sebbene io concordo con te sul fatto di 
non toccare le impostazioni che ha fatto l'utente, microsoft dice che in 
caso di applicazioni di questo genere (multimediali tipo media player 
ecc..) la strada da prendere e' proprio quella di bypassare questi 
settaggi 
(
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setthreadexecutionstate
).
 
Oltre al componente delle jvcl, ho trovato questa unit (magari a 
qualcuno puo' servire)
 
https://delphidabbler.github.io/delphi-tips/tips/127.html
 
 
Ho due domande per te ....
1 - Sai come modificare questa unit in modo da avere una funzione che 
ritorna il settaggio fatto dall'utente ?
2 - Senza toccare i settaggi dell'utente, come posso intercettare il 
rientro dallo stato di "riapsrmio energetico" del monitor e riprendere 
la musica da dove si e' fermata? (questo problema pare sia specifico per 
i monitor hdmi)
 
Ti ringrazio per l'attenzione
 
Ciao
Daniele
 

 ritorna il settaggio fatto dall'utente ? 
 
se non ricordo male il componente delle jvcl non modifica nessun parametro impedisce solo il blocco del computer, ciao

 se non ricordo male il componente delle jvcl non modifica nessun parametro impedisce solo il blocco del computer quando attivato, ciao

Ciao Brunello,

Questo componente evita che lo screen saver entri in funzione, ma non fa 
nulla sulla disattivazione del monitor.
Inoltre ci sono delle differenze tra monitor hdmi e vga ..... In questi 
casi le informazioni che ho trovato (molto poche) sono vaghe e driver 
dipendenti (sempre che ho capito ben quello che c'era scritto !!)
 
Grazie per l'intresse
 
Ciao
Daniele
 
 

 i monitor hdmi) 
 
Tutto (o quasi) quello che noi sviluppatori possiamo fare su windows è dettagliato su MSDN.
Che sia delphi, c#, java, python o 
vb.net
 (puah!) passi, direttamente (delphi) o indirettamente da quanto descritto su MSDN.
Hai notato che il componente che hai condiviso (scritto alla cazzo, tra parentesi) non fa altro che chiamare una API di windows...?
Molti componenti delphi compresa la VCL fanno la stessa cosa.
 
Ergo, la risposta alla 1a domanda è "hai già cercato su MSDN?".
La risposta alla 2a domanda è "bho".
 
Secondo me, se l'utente attiva il risparmio energetico e gli si blocca la musica sul più bello, saranno problemi suoi.
Se vuole che la musica non si fermi basta disativare il risparmio energetico, punto.
Sbattersi su cose del genere per me è solo una perdita di tempo.
 
Nota..
Su android, allo spegnimento dello schermo la maggior parte delle cose si fermano.
Ovviamente (ma non per tutti) questa cosa su uno smartphone ha senso, visto che la maggior parte (non tutti) dei dispositivi in commercio hanno batterie che con uso massivo a stento durano una giornata.
Ma se tu hai una tua app che *DEVE* funzionare a prescindere, la tua app *DEVE* prevedere un qualcosa che ogni n unità di tempo, se lo schermo è spento  dia "la sveglia" al device, gli faccia fare ciò che serve e poi lo rimetta a nanna. 
Questa cosa può essere importante per le app INDUSTRIALI.
Se:
1) ci sono dati da inviare ASAP 
2) la connettività non è subito disponibile
3) il device va in standby PRIMA che la connettività sia disponibile
 
i dati restano sul device, punto.
Un esempio lampante è Whatsup, che ti fa scrivere  i msg a prescindere e poi appena può (aka, connettività disponibile...) li invia.
Immagina un app tipo whatsup che ti fa scrivere msg solo in presenza di connettività....
 
 
{$POLEMIC MODE ON}
Fermo restando che ci sono app che, in assenza di connettività, non possono  funzionare,  in tutti gli altri casi una app mobile, per quanto possibile, deve basarsi sull'ovvio (ma non per tutti) presupposto che la connettività NON E' SCONTATA. 
{$POLEMIC MODE OFF}
 
A.

    save?
 
Se non trovi altro, potresti provare ad "aggirare" il problema.
Praticamente, hai detto di riuscire a capire quando si spegne lo schermo, 
quindi in quel momento puoi far partire un timer che ogni 5 secondi 
verifica se è stato spostato il mouse o è stato premuto qualche tasto.
Se è così, fai ripartire la musica e fermi il timer.
Non è perfetto al 100%, perché qualcuno potrebbe
 
Ciao, Mario

Ciao Alberto,
    come deto in precedenza ..... la penso come te.
L'approccio, che sa tanto di "aggiramento", funziona cosi' bene che ... 
se per caso il sistema va in crash perdi pure le impostazioni 
dell'utente e il risparmio energetico rimane disattivato.
 
Ergo, ho adottato un mio personalissimo "aggiramento":
Nel caso l'utente voglia sentire musica, si apre un bella finestra dove 
chiede se vuole la continuita', quindi saltare il power managment, o meno.
Nel caso in cui lasci le impostazioni attive, un attimo prima di andare 
in risparmio energetico sepngo tutto. Quando rientra ... se vuole 
riparte con la musica.
Poco ortodosso .... !!!
 
Rispondendo anche a Mario: Ho trovato diversi post in giro in cui 
tentavano di capire quando il sistema usciva dal risparmio energetico 
intecettando la pressione di un tasto o il movimento del mouse.
Qui si entra in altre problematiche.
 
Come sempre,se vi viene in mente qualcosa di nuovo discutiamone !!
 
Sulle app, come sempre .... anche qui concordo con te !!
 
Grazie
 
Ciao
Daniele