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.
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