Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gratisweb - 14 Maggio 2024, 22:30:36

Titolo: impedire avvio multiplo
Inserito da: Gratisweb - 14 Maggio 2024, 22:30:36
Creo un programma in gambas e lo avvio, come si fà in modo che se si avvia di nuovo per sbaglio invece si deve chiudere automaticamente ?
Mi spiego......
Io credo un programma che si chiama ESEMPIO1
lancio ESEMPIO1 senza chiuderlo
lancio di nuovo ESEMPIO1 ed invece si deve chiudere perchè già l' ho aperto prima. Come si fà ?
Titolo: Re:impedire avvio multiplo
Inserito da: vuott - 14 Maggio 2024, 23:00:55
Al riguardo c'è qualcosa qui:

https://www.gambas-it.org/wiki/index.php/Impedire_l%27avvio_di_un_programma.gambas_gi%C3%A0_avviato
Titolo: Re:impedire avvio multiplo
Inserito da: Gratisweb - 15 Maggio 2024, 07:22:02
Ho provato questo è funziona......

Public Sub Form_Activate()   ' oppure "Sub Main()" se il programma è a "linea di comando"
 
 Dim s, cmdline As String
 Dim id As New String[]

 For Each s In Dir("/proc", "*", gb.Directory)
   If Exist("/proc" &/ s &/ "cmdline") Then
     cmdline = File.Load("/proc" &/ s &/ "cmdline")
     If (cmdline Like "*" & Application.Name & ".gambas*") Then
       id.Push(Split(File.Load("/proc" &/ s &/ "stat"), Chr(32))[0])
       If id.Count > 1 Then
         If id[id.Max] > id[id.Max - 1] Then Quit
       Endif     
     Endif
   Endif
 Next
   
End


Ma funziona solo se il file eseguibile finisce con .gambas.....
Ma se il file eseguibile non finisce con .gambas ma non ha estensionee?

Esempio invece di chiamarsi
esempio.gambas si chiama esempio

Perchè appena rinomino il file eseguibile togliendo il .gambas non funziona
Titolo: Re:impedire avvio multiplo
Inserito da: vuott - 15 Maggio 2024, 15:09:55
...prova a eliminare la parola ".gambas" dal codice.
In sostanza la nuova riga sarà:
Codice: [Seleziona]
 If (cmdline Like "*" & Application.Name & "*") Then
Titolo: Re:impedire avvio multiplo
Inserito da: vuott - 16 Maggio 2024, 22:41:04
...è possibile sapere se il suggerimento di modifica ha funzionato ?