Page 1 sur 1

[ASTUCE] créer une exécutable mono-instance

Publié : lun. 24/févr./2020 13:16
par microdevweb
Bonjour,

Si vous voulez créer une exécutable qui ne peut être exécuté q'une seul fois sur une même machine
voici un exemple de code. (uniquement pour windows)

Code : Tout sélectionner

#MyApp="Your message"
Mutex=CreateMutex_(0,1,#MyApp)
If GetLastError_()=#ERROR_ALREADY_EXISTS
  MessageRequester(#MyApp,"Une seule instance peut être exécutée",#PB_MessageRequester_Error)
  End
EndIf

; your main code

#MAIN_FORM = 0
OpenWindow(#MAIN_FORM,0,0,800,600,"Hello world",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)

Repeat
  WaitWindowEvent()
Until Event() = #PB_Event_CloseWindow 

; don't forget to unlock the mutex
ReleaseMutex_(Mutex)
End

Re: [ASTUCE] créer une exécutable mono-instance

Publié : lun. 24/févr./2020 13:59
par Shadow
Merci du partage microdevweb, cependent, quelque correction ^^

Code : Tout sélectionner

; Code créer par microdevweb le: 24/Fév/2020.
; Code revue et corrigé par Dieppedalle David le: 24/Fév/2020.

#MyApp = "Chaîne"
Mutex = CreateMutex_(0, 1, #MyApp)

If GetLastError_() = #ERROR_ALREADY_EXISTS
  MessageRequester(#MyApp, "ATTENTION: Une seule instance peut être exécutée à la fois sur cette machine !", #PB_MessageRequester_Error)
  End
EndIf

If OpenWindow(0, 100, 200, 400, 300, "Ma fenêtre", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)

  Repeat
    
    Event = WaitWindowEvent(1)

    If Event = #PB_Event_CloseWindow  ; If the user has pressed on the close button
      Quit = 1
    EndIf

  Until Quit = 1
  
EndIf

ReleaseMutex_(Mutex)

Re: [ASTUCE] créer une exécutable mono-instance

Publié : lun. 24/févr./2020 14:45
par microdevweb
Aller pour faire plaisir à Shadow j'ai modifié le code :mrgreen:

Re: [ASTUCE] créer une exécutable mono-instance

Publié : lun. 24/févr./2020 15:19
par Micoute
Merci pour le partage, justement j'en avais besoin pour mon carnet de surveillance, ça tombe plutôt bien.

Re: [ASTUCE] créer une exécutable mono-instance

Publié : mar. 25/févr./2020 19:56
par Kwai chang caine
C'est pas bête cette méthode 8)
Moi dab, je liste les process en route et si il existe je bloque le giciel, mais ça fait un code de ouf :|
Là au moins....c'est succinct 8)
Et c'est le premier de tes codes que je comprends :mrgreen: :oops: :lol:

Re: [ASTUCE] créer une exécutable mono-instance

Publié : mar. 25/févr./2020 21:03
par Shadow
Et c'est le premier de tes codes que je comprends
Ouais alors là je suis même pas étonné en faite :mrgreen: