Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB6] Intercettare lo spegnimento di Windows

    Ciao. Sto creando un'applicazione che lavora in background e che si avvia all'apertura di Windows.
    Il problema è che mi serve che compia un'azione non appena viene dato il comando di chiusura di Windows e che quindi il programma da solo si chiuda.
    Dunque, come faccio ad intercettare lo spegnimento del computer?
    Se avete idee sono ben accette...
    Grazie!

  2. #2
    per il VB abbiamo un subforum apposito. sposto la discussione là
    ...Terrible warlords, good warlords, and an english song

  3. #3
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    Quando tu chiudi un programma o il sistema invia al programma la richiesta di spegnersi perchè il sistema deve essere arrestato scatta l'evento Form_Unload

    Ora,all'interno di questo, ci dovrebbero essere anche dei parametri (che non ricordo) per distinguere i vari tipi di spegnimento (su ordine dell'utente, di un'altro programma o di Windows, ecc.) che dovresti usare per essere sicuro che l'evento scatti solo se lo spegnimento è stato richiesto da Windows. In linea di massima però (e se l'applicazione non deve mai essere chiusa dall'utente) ti puoi affidare al semplice evento Form_Unload...

    Inoltre per "dire" al sistema di attendere (visto che ci vorrà, anche se pur poco, tempo perchè il programma faccia quello che deve fare ) puoi usare la stringa:

    codice:
    Cancel =1
    da inserire nell'evento Form_Unload

    Spero di essere stato chiaro... Ciao e fammi sapere.
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  4. #4
    Sì, l'avevo già messo:
    codice:
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    e solo ora mi sono accorto che in effetti funziona!
    Però è sorto un altro problema: ho nascosto il programma dalla finestra applicazioni del Task Manager con
    codice:
    App.TaskVisible = False
    però se uno va nella skeda dei processi e lo termina, l'evento Unload non avviene (infatti non esegue l'azione che dovrebbe fare!!).

    Come posso ovviare a questo problema?
    Grazie per la risposta e per un eventuale futuro consiglio

  5. #5
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    Deduco che usi Win Xp o 2000, giusto? :master:
    Purtroppo questi sistemi detengono il controllo completo sul pc.
    Puoi ovviare dando al programma un nome poco sospettabile: svmon.exe rundll32.exe, system.exe, zapro.exe(è il nome dell'eseguibile di ZoneAlarm), ecc...)
    Ovviamente non è un metodo sicuro.

    In alternativa potresti creare due programmi, ognuno dei quali controlla continuamentese se l'altro è in esecuzione in modo che se uno viene terminato l'altro ha il tempo di riattivarlo o di eseguire altre operazioni...

    Secondo soluzione: disabilitare completamente il TaskMenager. In questo caso pero se ti si blocca il pc per qualche motivo sei fregato... :master:

    Decidi tu...
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    In una raccolta di API, tempo fa, ho trovato una funzione che provvede allo spegnimento di Win:
    Funzione: ExitWindowsEx
    PIATTAFORMA: Win 95/98, Win NT
    E' molto semplice e potrebbe fare al tuo caso, dopo le opportune modifiche.
    Vuoi che la posti?
    LM

  7. #7

  8. #8
    Originariamente inviato da LMondi
    In una raccolta di API, tempo fa, ho trovato una funzione che provvede allo spegnimento di Win:
    Funzione: ExitWindowsEx
    PIATTAFORMA: Win 95/98, Win NT
    E' molto semplice e potrebbe fare al tuo caso, dopo le opportune modifiche.
    Vuoi che la posti?
    Grazie, ma... A cosa mi potrebbe servire? Cioè, a me serve sapere quando il computer viene spento, non devo spegnerlo io... :rollo:

    Grazie soprattutto a deste! Era proprio quello ke cercavo

    Ciao!

  9. #9
    nada , ringrazia Francesco Balena che ha scritto un magnifico libro

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.