Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    [C#] Intercettare il riavvio del sistema

    Hola,

    ho un problemuccio con c# ...
    l'applicativo che sto sviluppando ha la necessità di "intercettare" il riavvio della macchina, oltre allo shutdown e al logout

    Il problema è che l'evento
    Microsoft.Win32.SystemEvents.SessionEnding

    utilizza
    Microsoft.Win32.SessionEndingEventArgs

    che a sua volta, per la proprietà Reason, utilizza
    Microsoft.Win32.SessionEndReasons

    e questa prevede SOLO logoff e shutdown ... senza differenziare il reboot dallo shutdown

    come risultato se riavvii il mio software pensa che si stia spegnendo e quindi quando finisce di fare quello che deve fare spegne invece di riavviare

    come pozzo fa?
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  2. #2
    mi scuso per l'intromissione non ho la soluzione al problema, per ò potresti aprire msn?

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da eraser
    mi scuso per l'intromissione non ho la soluzione al problema, per ò potresti aprire msn?
    I messaggi privati cosa pensi siano lì a fare?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Originariamente inviato da alka
    I messaggi privati cosa pensi siano lì a fare?
    sorry chiedo venia, errore mio nella fretta mi sono scordato i pvt

  5. #5
    nel frattempo qualcuno ha avuto qualche idea?
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da daniele_dll
    l'applicativo che sto sviluppando ha la necessità di "intercettare" il riavvio della macchina, oltre allo shutdown e al logout [...]
    come risultato se riavvii il mio software pensa che si stia spegnendo e quindi quando finisce di fare quello che deve fare spegne invece di riavviare
    Non ho capito: il tuo software effettua lo shutdown oppure deve solamente sapere quando questa operazione viene effettuata?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Originariamente inviato da alka
    Non ho capito: il tuo software effettua lo shutdown oppure deve solamente sapere quando questa operazione viene effettuata?
    allora

    il mio software esegue backup ... e come ormai la quasi totalità dei software di backup per gli utonti ho messo la possibilità di effettuare backup allo spegnimento

    il soft lavora cosi:
    - l'utente o un prog chiede di spegnere il sistema
    - il sistema avvisa il mio software tramite le strutture messe a disposizione dal .net
    - il mio software legge la tipologia di spegnimento che è stata eseguita
    - fa quello che deve fare
    - e prosegue con lo spegnimento (in questo caso)

    nel caso di un logoff o di un reboot lui deve disconnettere l'utente o riavviare la macchina alla fine ... il problema è che mentre per il logoff vengo notificato, ovvero mi vien detto "l'utente si sta disconnettendo e non sta spegnendo" per il reboot no! Viene eseguito l'evento sessionending però viene passato l'altro valore, ovvero shutdown, di conseguenza non so se il sistema sta riavviando o spegnendosi e di conseguenza non posso replicare correttamente l'azione
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Se un utente ha già avviato una richiesta di shutdown, non devi reiterarla tu, ma solamente rispondere all'evento in modo adeguato eseguendo le operazioni che il tuo software deve fare e, alla fine, consentire al sistema di spegnersi.

    Non credo ci sia la necessità di eseguire nuovamente la richiesta di shutdown, ma basta rispondere positivamente al sistema quando questo invia la segnalazione del tentativo di shutdown in corso, che se non ricordo male è rappresentato dal messaggio WM_QUERYENDSESSION.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Originariamente inviato da alka
    Se un utente ha già avviato una richiesta di shutdown, non devi reiterarla tu, ma solamente rispondere all'evento in modo adeguato eseguendo le operazioni che il tuo software deve fare e, alla fine, consentire al sistema di spegnersi.

    Non credo ci sia la necessità di eseguire nuovamente la richiesta di shutdown, ma basta rispondere positivamente al sistema quando questo invia la segnalazione del tentativo di shutdown in corso, che se non ricordo male è rappresentato dal messaggio WM_QUERYENDSESSION.

    Ciao!
    no ... asp

    io sono obbligato a interrompere lo shutdown perché una cosa e salvare un file di configurazione, che richiede decimi di secondo, o al max qualche secondo

    una cosa è eseguire un backup che può durare 3 secondi come può durare 2 ore, questo a priori non lo so

    purtroppo windows dopo un tempo predefinito mi taglia le gambe quindi sono costretto a interrompere lo spegnimento

    ora come ora, quando ricevo la segnalazione, io gli dico che il sistema non può spegnersi perché sta lavorando il mio software: ovviamente non è affatto detto che il sistema rimanga acceso, il so può benissimo infischiarsene e chiudere tutto lo stesso

    il motivo però per il quale devo per forza interrompere lo spegnimento e preoccuparmi io di rilanciarlo è proprio questo: il backup dura parecchio

    ora, probabilmente intercettando quel messaggio e verificando i parametri che ricevo forse riesco a intercettare correttamente le richieste di reboot o sospensione o tutto il resto

    danka ^^
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  10. #10
    update:

    dando un occhio per quel messaggio ho visto che purtroppo non è possibile intercettare direttamente se il sistema viene riavviato o spento, e questo per me è un grosso problema :\

    http://msdn.microsoft.com/library/de...endsession.asp

    comunque rimane abbastanza strana come cosa
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.