Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Intercettare spegnimento pc
mercoledì 30 aprile 2008 - 10.58
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 30 apr 2008 - 10:58
Salve a tutti.
Sto realizzando un servizio in c# che non deve far altro che scrivere un log, nel quale devo inserire l'ora di accensione e di spegnimento del pc. Per l'accensione non ci sono problemi, per lo spegnimento si. Pensavo bastasse scrivere il log nell'evento onStop() ma non funziona, sembra che il servizio non venga arrestato allo spegnimento del pc o che so io. Come faccio ad intercettare lo spegnimento del pc? C'è un metodo per fare questa operazione? Tnx.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 30 apr 2008 - 11:23
>Salve a tutti.
>Sto realizzando un servizio in c# che non deve far altro che
>scrivere un log, nel quale devo inserire l'ora di accensione
>e di spegnimento del pc. Per l'accensione non ci sono problemi,
>per lo spegnimento si. Pensavo bastasse scrivere il log nell'evento
>onStop() ma non funziona, sembra che il servizio non venga arrestato
>allo spegnimento del pc o che so io. Come faccio ad intercettare
>lo spegnimento del pc? C'è un metodo per fare questa operazione?
>Tnx.
In genere questo tipo di informazioni già vengono registrare nei Logs che vedi nell'Event Viewer. In ogni caso puoi provare ad agganciarti all'evento Win32 SessionEnded che scatta quando un utente fa logoff o shutdown.
Qui trovi la documentazione:
http://msdn.microsoft.com/it-it/library/microsoft.win32.systemevents.sessionended.aspx
A memoria ricordo che è più facile fare il detect dello shutdown in una WinForm rispetto ad un servizio.E' da provare.
Ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 30 apr 2008 - 13:47
Ciao e grazie per la risposta. Ho provato ma non ne vengo fuori. Spulciando sul sito microsoft ho visto che loro realilzzano un servizio che comprende un form e li gestiscono gli eventi. Io ho provato ma ovviamente non va.
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 30 apr 2008 - 14:29
Mi è venuta in mente un'altra cosa: ho un'applicazione winform che fa da monitor per il servizio, la quale viene avviata all'accensione del pc e rimane in esecuzione in background. E' possibile fare in modo che quando si tenta di spegnere/sloggare/riavviare il computer l'applicazione interrompa questo processo ed eventualmente obbligare l'utente a spegnere il pc usando la mia applicazione?? In questo modo potrei fermare a mano il servizio e quindi scrivere sto benedetto log.
hydra
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 30 apr 2008 - 15:37
Allora, attualmente ho aggirato il problema in questo modo:
ho fatto in modo che non sia possibile chiudere l'applicazione (a meno di non abilitare un apposito flag), in questo modo quando windows si spegne in realtà trova l'applicazione che lo tiene aperto. Per spegnere il pc ho quindi introdotto delle funzioni sull'applicazione che, comunicando con il mio servizio, gli dicono se spegnere piuttosto che riavviare o fare altro. Nel servizio riesco così in questo modo a scrivere questo log. La soluzione comunque non mi piace tanto, anche perchè obbliga a utilizzare il mio programma per spegnere il pc, vorrei quindi intercettare lo spegnimento del pc in qualche modo.
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
gio 1 mag 2008 - 09:40
Ma l'override di ServiceBase.OnShutDown non funziona?
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !