Gambas-it

Gambas dal mondo esterno => Spagna => Topic aperto da: vuott - 10 Febbraio 2021, 05:22:04

Titolo: Impedire l'avvio di un programma .gambas già avviato
Inserito da: vuott - 10 Febbraio 2021, 05:22:04
https://gambas-es.org/showthread.php?tid=273
Titolo: Re:Impedire l'avvio di un programma .gambas già avviato
Inserito da: Gianluigi - 10 Febbraio 2021, 23:31:59
Questo codice che abbisogna del componente gb.desktop, parrebbe funzionare bene e sembrerebbe più semplice degli altri.
Mi perdo qualcosa, non ho compreso il problema?

Per provarlo occorre copiare il codice in un progetto grafico (io uso gb.gui.qt) e creare un eseguibile gambas salvarlo dove si vuole e nella scheda opzioni spuntare Crea un collegamento sul desktop.
Cliccare sul collegamento per aprire il file di testo del launcher per scegliere l'icona (occorre scrivere il percorso del file png, oppure gambas3)
Tasto destro sul collegamento e cliccare sul menu per permetterne l'esecuzione.

Codice: [Seleziona]
Private $bOpen As Boolean

Public Sub Form_Open()

  Dim s As String = Application.Name

  For i As Integer = 0 To Desktop.Windows.Count - 1
    If Desktop.Windows[i].Name = s Then
      If Message.Question("Un'istanza del programma è già aperta, desideri aprirne un'altra?", "No", "Si", "Annulla") <> 2 Then
        $bOpen = True
        Me.Close
        $bOpen = False
        Return
      Else
        $bOpen = True
      Endif
    Endif
  Next

End

Public Sub Form_Close()

  If Not $bOpen Then
    Message.Info("Qui faccio qualcosa sapendo che è il progetto originale")
  Endif

End
Titolo: Re:Impedire l'avvio di un programma .gambas già avviato
Inserito da: vuott - 11 Febbraio 2021, 01:36:43
Questo codice che abbisogna del componente gb.desktop, parrebbe funzionare bene e sembrerebbe più semplice degli altri.

Bravo, il codice però ovviamente funziona solo per i programmi in ambiente grafico.
Lo riporto in Wiki, ma reso essenziale al massimo.