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

Informations pour bien débuter en PureBasic
Avatar de l’utilisateur
microdevweb
Messages : 1798
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
Shadow
Messages : 1373
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)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
microdevweb
Messages : 1798
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 : 2522
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 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
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
Shadow
Messages : 1373
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:
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre