Autore Topic: Impedire l'avvio di un programma .gambas già avviato  (Letto 240 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.373
  • Ne mors quidem nos iunget
    • Mostra profilo
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.161
  • Tonno verde
    • Mostra profilo
Re:Impedire l'avvio di un programma .gambas già avviato
« Risposta #1 il: 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
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.373
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Impedire l'avvio di un programma .gambas già avviato
« Risposta #2 il: 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.
« Ultima modifica: 11 Febbraio 2021, 01:38:24 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »