Si ha ragione vuott, ho recuperato dalla wiki e da passate discussioni del codice da lui postato e ho messo insieme questo esempio.
Per fare una prova di questo codice occorre creare nella nostra cartella (directory) home una nuova cartella e nominarla ProgrammaConControllo.
Avviamo l'IDE di Gambas e creiamo un semplice programma grafico (non importa dove lo salviamo) che nomineremo ProgB in cui ci limiteremo a scrivere B nella Proprietà Text di FMain.form.
Quindi da Progetto > Crea > Eseguibile... navighiamo fino alla cartella appena creata (ProgrammaConControllo) e salviamo l'eseguibile al suo interno.
Sempre dalla IDE creiamo un nuovo programma grafico che nomineremo ProgA dove in FMain.class copieremo il seguente codice.
Public Sub Form_Open()
Dim iID As New Integer[]
Dim sPath As String = User.Home &/ "ProgrammaConControllo"
If Exist(sPath) Then
Message.Info("#La directory esiste")
iID = Desktop.FindWindow("B")
sPath &= "/ProgB.gambas"
If iID.count = 0 Then
Try Exec [sPath] Wait
If Error Then Message.Info("#L'applicazione non esiste!")
Else If iID.count > 0 Then
Message.Info("#L'applicazione è già avviata!")
End If
Endif
Message.Info("#Mi sto chiudendo")
Me.Close
End
Come per il programma B creiamo l'eseguibile salvandolo in ProgrammaConControllo.
Fatto.
Chiudiamo l'ide e dalla cartella ProgrammaConControllo avviamo il programma A (ProgA) per verificarne il funzionamento.
P.S. Molto probabilmente il New in Dim iID è superfluo...
Gian
ho provato il tuo codice mi da
Simbolo Sconosciuto FindWindow nella classe Desktop
poi ho provato il codice postato da vuott, il codice funziona solo che non controlla se è in esecuzione e mi avvia molte istanze
Private hp As Process
Private pid As Integer
Public Sub Button1_Click()
hp = Shell "nome_programma"
' Individuiamo il numero del PID, che sarà uguale al valore di .Id + 1 : [Nota 3]
pid = hp.Id + 1
Print pid
End