Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    vb.net - intercettare la chiusura di win

    Devo fare un programam che giri in background e parta all'avvio di win e che quando il win sta per riavviarsi o per spegnersi questo programma mi domanda una password, mentre se si mette in sospenzione o standby nn faccia nulla?

    naturalmente se la pass è sbagliata, il pc nn dovra nè spegnersi nè riavviarsi...è possibile fare un prog del genere?

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    si avevo letto sul manuale che questi eventi si potevano intercettare ,se vuoi appena posso ti faccio una ricerca sul manuale che ho.

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    stavo provando a mettere a punto il progetto in modo tale che stia in background senza far nulla a meno ke il pc si spegnesse e ho fatto una sub main, però appena la submain termina, il programma termina, cosa dovrei fare in modo tale ke il programma resti aperto senza far nulla?

    P.S.: x comodità sto facendo il progetto in visual c++

  4. #4
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    hai un pm.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Vi ricordo che, nello spirito del forum, qualsiasi soluzione al problema dovrebbe essere resa pubblica in questa discussione e non scambiata in privato.

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

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

  6. #6
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    Re: Moderazione

    Originariamente inviato da alka
    Vi ricordo che, nello spirito del forum, qualsiasi soluzione al problema dovrebbe essere resa pubblica in questa discussione e non scambiata in privato.

    Ciao!
    già, hai ragione.

    per la soluzione che posterò non dovrete ringraziare me, ma cassano *clap*clap*clap*

    codice:
    Private Shared WM_QUERYENDSESSION As Integer = &H11
    Private Shared systemShutdown As Boolean = False
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    If m.Msg = WM_QUERYENDSESSION Then
    MessageBox.Show("queryendsession: this is a logoff, shutdown, or reboot")
    systemShutdown = True
    End If
    ' If this is WM_QUERYENDSESSION, the closing event should be fired in the base WndProc
    MyBase.WndProc(m)
    End Sub 'WndProc
    Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    If (systemShutdown) Then
    ' reset the variable since they may cancel the shutdown
    systemShutdown = False
    If (DialogResult.Yes = _
    MessageBox.Show("My application", "Would you care to save your work before logging off?", MessageBoxButtons.YesNo)) Then
    e.Cancel = True
    Else
    e.Cancel = False
    End If
    End If
    End Sub

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    troppo gentile

  8. #8
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da cassano
    troppo gentile
    ma quele troppo gentile: dico solo la verità ;-)

  9. #9
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    test

    ho fatto i test per questa applicazione. I risultati sono:

    a) tutte le applicazioni si chiudono
    b) siccome per riavviare bisogna inserire una password e se io nn la inserisco in un tempo necessario, mi si riavvia/spegne il pc ugualmente perché spunta la finestra "Chiudi Applicazione"

    come faccio a gestire questi effetti collaterali che sono PROPRIO QUESTI quelli che mi interessano, cioè che nn mi si chiudono i programmi e se non metto la pass, il pc nn si riavvia x niente al mondo...

    per il problema ha (ora che ci penso) avrei una soluzione, ma non so se è quella corretta: Impostare la priorità del programma su alta, in modo che sia sempre questo programma ad essere chiuso per primo. C'è un modo per cambiare la priorità del programma dal programma stesso senza andare a manomettere task manager?

  10. #10
    mmm

    ti posso postare un po di codice C# che dovresti convertire in codice VB.NET cmq è molto semplice

    codice:
    private void SessionEndingManager(object sender, SessionEndingEventArgs e)
    {
    	MessageBox.Show("Impossibile terminare la sessione mentre " + Application.ProductName + " è attivo, chiudere prima il software!", Application.ProductName + " - Errore", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    	e.Cancel = true;
    }
    
    SystemEvents.SessionEnding +=new SessionEndingEventHandler(SessionEndingManager);
    in pratica devi impostare l'evento SessionEnding di SystemEvents e poi, ovviamente, gestirlo.

    il codice lo preferisco all'altro perché è totalmente managed e quindi anche più portabile ed evita anche possibili rogne tra i diversi sistemi operativi windows dovuti magari ad una diversa gestione interna

    Il sistema, prima di chiudersi, chiede ai vari applicativi se può chiudersi e quindi usando SessionEnding non dovresti avere grossi problemi

    per maggiori informazioni:
    http://msdn.microsoft.com/library/it...ndingtopic.asp
    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.