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

Informations pour bien débuter en PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

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

Message 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
Dernière modification par microdevweb le lun. 24/févr./2020 14:44, modifié 1 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Shadow
Messages : 1428
Inscription : mer. 04/nov./2015 17:39

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

Message 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)
AMD Ryzen 5 3600 (6 cœurs / 12 threads, Socket AM4)
Gainward GeForce RTX 3070 (8 GB GDDR6)
ASUS PRIME A320M-K (chipset AMD A320)
64 GB DDR4-3200
Asus 24 Pouces: 1920 x 1080.
Système: Windows 10 64 Bits.

PureBasic: 6.30 beta 4 x64 Bits.
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

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

Message par microdevweb »

Aller pour faire plaisir à Shadow j'ai modifié le code :mrgreen:
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2592
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message par Micoute »

Merci pour le partage, justement j'en avais besoin pour mon carnet de surveillance, ça tombe plutôt bien.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6992
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message 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:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Shadow
Messages : 1428
Inscription : mer. 04/nov./2015 17:39

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

Message 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:
AMD Ryzen 5 3600 (6 cœurs / 12 threads, Socket AM4)
Gainward GeForce RTX 3070 (8 GB GDDR6)
ASUS PRIME A320M-K (chipset AMD A320)
64 GB DDR4-3200
Asus 24 Pouces: 1920 x 1080.
Système: Windows 10 64 Bits.

PureBasic: 6.30 beta 4 x64 Bits.
Répondre