Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    115

    [VB6] Non avviare il prog se è già in esecuzione

    Come da titolo avrei bisogno di un qualcosa che, se l'applicazione è già in esecuzione, non me ne avvii un'altra identica nel caso che l'utente la riesegua. Cioè, ora se rifaccio doppio click sull'icona del programma, anche se questo è già aperto, me ne apre un altro identico. Come posso evitarlo? Magari avvertendo con una msgbox che il programma è già in esecuzione oppure semplicemente non facendo niente.

    Grazie

  2. #2
    codice:
    If App.PrevInstance Then
        MsgBox "l'applicazione è già stata avviata"
        End
    End If
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    115
    Originariamente inviato da chipdb
    codice:
    If App.PrevInstance Then
        MsgBox "l'applicazione è già stata avviata"
        End
    End If
    Ho provato a metterlo nel form load e funzionerebbe, il testo della msgbox lo dà, ma fa una cosa stranissima. In pratica al posto di terminare il programma "duplicato" lo avvia ma senza la presenza di moltissimi oggetti...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Meglio

    codice:
    Private Sub Form_Load()
      If App.PrevInstance Then
        MsgBox "l'applicazione è già stata avviata"
        Unload Me
      Else
        ' Il resto della tua Form_Load
      End If
    End Sub
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    115
    Originariamente inviato da oregon
    Meglio

    codice:
    Private Sub Form_Load()
      If App.PrevInstance Then
        MsgBox "l'applicazione è già stata avviata"
        Unload Me
      Else
        ' Il resto della tua Form_Load
      End If
    End Sub
    Grazie oregon, con l'unload funziona; unico problema:
    codice:
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        Cancel = (MsgBox("Vuoi davvero uscire dal programma?", vbYesNo, "Uscire?") = vbNo)
    End Sub
    Ergo anche in questo caso mi chiede se voglio davvero uscire dal programma. Come faccio a fargli fare un'eccezione e farlo uscire e basta?

  6. #6
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    prova a guardare se cambia il valore di UnloadMode quando lo chiudi da codice o in esecuzione
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    codice:
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        If UnloadMode <> vbFormCode Then
            Cancel = (MsgBox("Vuoi davvero uscire dal programma?", vbYesNo, "Uscire?") = vbNo)
        End If
    End Sub
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    O in alternativa puoi sempre mettere come oggetto di avvio una Sub Main siffatta:
    codice:
    Public Sub Main()
        If App.PrevInstance Then
            MsgBox "l'applicazione è già stata avviata"
        Else
            NomeForm.Show True
        End If
    End Sub
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    115
    Alla fine ho preferito la soluzione di oregon, ma grazie a tutti per l'aiuto

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.