Comunidad Gambas-es
control de la ejecución en curso - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: control de la ejecución en curso (/thread-273.html)



control de la ejecución en curso - alberto-moyano - 09-02-2021

Hola gente, estoy buscando por internet y dentro del foro y no escuentro nada al respecto, seguramente estoy buscando mal.

La cuestión es que quiero que mi aplicación no se pueda ejecutar varias veces al mismo tiempo, y no encuentro como armar el registro que busque si la aplicación ya está corriendo.

Gracias de antemano  Big Grin


RE: control de la ejecución en curso - vuott - 10-02-2021

Propongo esta pagina del wiki del foro italiano de Gambas:

   https://www.gambas-it.org/wiki/index.php?title=Impedire_l%27avvio_di_un_programma.gambas_gi%C3%A0_avviato


RE: control de la ejecución en curso - alberto-moyano - 10-02-2021

geniale!!! per tutti i gusti  Smile


RE: control de la ejecución en curso - vuott - 10-02-2021

Añado también este código con los únicos recursos de Gambas, leyendo un par de archivos de la carpeta del proceso del programa .gambas lanzado.:

Código:
Public Sub Form_Activate()   ' o  Sub Main() con un programa con "interfaz de linea de comandos"

  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 > 2 Then
          If id[id.Max] > id[id.Max - 1] Then Quit
        Endif
      Endif
    Endif
  Next

End



RE: control de la ejecución en curso - kokodrilo - 10-02-2021

Código:
Private hLock As Stream

Private Sub VisorYaEstaAbierto() As Boolean

  subR1.ExisteCarpeta(vp.DirBD)
  Wait 0.05
  subR1.ExisteCarpeta(vp.DirConfig)
  Wait 0.05

  subLog.Activar()

  Try hLock = Lock vp.DirConfig &/ ".lock"
  If Error Then
    subR1.EscucharSonido("Sonidos/atencion.ogg") '04 ene 2021
    Message.Warning("VisorRV1960 ya se encuentra abierto!!" & gb.NewLine &
      gb.NewLine & "Si esta seguro que abrió VisorRV1960 una sola vez, intente desde consola: visorrv1960 -l")
    Return True
  Endif

  Return False

End

'en evento close esto:
 If Exist(vp.DirConfig &/ ".lock") Then '18 dic 2020
    Kill vp.DirConfig &/ ".lock"
  Endif