Newsgroup: it.comp.lang.delphi
Titolo: Ora di chiusura di Windows

E' il mio primo intervento in questo NG.
Vorrei anzitutto salutare tutti.
Poi complimentarmi con molti di voi, per la bravura e la disponibilità
dimostrate anche nei confronti dei neofiti.
Sono un dilettante (mai usato puntatori e mai creato componenti, conoscenze
teoriche di programmazione a oggetti=0).
Scoprire questo NG mi ha riempito di entusiasmo.
Vorrei fare un programma per controllare quanto viene usato il PC (mi basta
verificare accensione e spegnimento).
Uso la GetTickCount e faccio partire il programma all'avvio di Windows, ma
come faccio a salvare l'ora di spegnimento quando viene eseguito un "Chiudi
sessione"?
Ciao e grazie
P.S. Non è che esiste qualcosa del genere già fatto e magari free?

 P.S. Non è che esiste qualcosa del genere già fatto e magari free?
Mah, al solito, guarda su 
www.torry.net
Ciao ! E leggi le FAQ mi raccomando                            {MSX}
--
{MSX}  -  
http://msx.rules.it
Mantenitore delle FAQ di it.comp.lang.delphi,
reperibili qui: 
http://gpi.infomedia.it/abc/delphi/FaqDelphi.txt

 sessione"?
hai quantomeno due soluzioni:
1 - quando Windows č in "fase di spegnimento" viene inviato un messaggio a
tutte le applicazioni attive (il messaggio č WM_QUERYENDSESSION), se tutte
le applicazioni rispondono positivamente allora il sistema viene
riavviato/spento/sloggato ... proprio intercettando questo messaggio puoi
salvare su un file il valore ottenuto con GetTickCount().
2 - salvi a intervalli regolari di pochi secondi il valore di
GetTickCount(), fregandotene del messaggio di chiusura di sessione
In entrambi i casi č sufficiente che venga terminata la tua applicazione per
fare saltare tutti i piani! :-)
--
- Carlo -
c.b...@libero.it

 verificare accensione e spegnimento).
Oltre ai validi suggerimenti, puoi guardare nel registro degli eventi di
Win; filtrare in base all'origine EventLog e gli eventi 6005 (avvio del
registro) e 6009 (arresto del registro). Ovvio che anche la data/ora di
arresto puo' essere errata o mancante se al pc viene levata
l'alimentazione.
Le funzioni da usare sono Open(Close)EventLog; ReadEventLog delle winapi
(cmq gia' mappate in windows.pas).
Saluti
Paolo Arosio

 ha scritto nel messaggio
news:atn08.22010$aD.8...@twister2.libero.it...


 programma come se fosse la chiusura di windows.
Non sono sicuro di aver capito bene, credo ti riferisca al messaggio
WM_QUERYENDSESSION.
Grazie.

 fare saltare tutti i piani! :-)
Perché la mia applicazione dovrebbe terminare? Quali piani? Dopo varie
riflessioni ho pensato che quest'osservazione fosse un po' maliziosa! Il mio
intento era semplicemente quello di controllare lo sperpero energetico
dovuto a  un computer che spesso per pigrizia viene lasciato inutilmente
acceso. Mi sarebbe piaciuto che CountDown (utilissimo e simpaticissimo
programma free per il controllo delle connessioni telefoniche, sviluppato in
Delphi - 
www.farmax.it
) svolgesse anche questa funzione, ma in mancanza di
ciò cercherò di arrangiarmi.
Ciao


Ok! Grazie. Lo provo volentieri anche se penso che una versione (primitiva)
in Delphi la farò comunque stasera.
Elimina le cifre per ottenere l'indirizzo. La casella l'ho attivata proprio
per questa occasione!
Ciao

Non so se è il posto giusto per dare una risposta cumulativa, comunque...
Grazie a tutti!
Penso che userò il timer per scrivere ogni minuto, così evito il problema di
eventuali inchiodature di win (per le interruzioni di corrente ho l'UPS).
I messaggi di windows non so bene come usarli, ma guarderò sul manuale e
indagherò comunque anche quella via; eventualmente mi rifarò vivo.
Ciao!

 ciò cercherò di arrangiarmi.
In mancanza di cosa? Che ci vuole ad implementare un CountDown? Ma poi
questa richiesta mi sembra piuttosto diversa da quella originale ...
Ciao


Non l'ho mai fatto ma dovrebbe andare...
basta creare due righe nell'evento CloseQuery della form principale con le
quali salvi i dati
su disco (suppongo che usi un file "log" che registri le accensioni e gli
spegnimenti).
Una cosa banale potrebbe essere:
...
var F : text;
...
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  AssignFile(F,'StartAndStopLogfile.txt');  Append(F,'Spento
il:'+DateToStr(Now)+' alle ore:'+TimeToStr(Now));
  CloseFile(F); 
  CanClose:=True;
end;
Saluti :-)
Silvio Pietrosanti
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 questa richiesta mi sembra piuttosto diversa da quella originale ...
Per la mia incompetenza fare un programmino come CountDown non sarebbe così
banale. La richiesta iniziale era di monitorare l'uso del computer, non mi
sembra così sballato il parallelo col controllo delle connessioni
telefoniche, e CountDown potrebbe usufruire di tutte le routine per le
statistiche delle connessioni etc.
Chiudo, non voglio farti perdere altro tempo, grazie e ciao.

 La mia applicazione non crasherà :-) 
Teorema di Paolino Paperino:
"Quando un programmatore afferma "la mia applicazione non crashera'", 
 quest'ultima sicuramente crashera'" :)


Teorema di Paolino Paperino:
cavoli che personaggio multiforme...era uno Zio, Paperinik e anche un
programmatore? :)
-- 
Lawrence "Rhymes" Oluyede (
rhy...@myself.com
)
"Per cambiare, per diventare un'altra
cosa dobbiamo prima sapere cosa siamo"
(Bruce Lee)

programmatore? :)
No, ma ha comprato un programma da uno che ha detto che non
sarebbe crashato ;)
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
"Meglio cieco che negro" (Stevie Wonder)