Comment fait on pour ne pas lancer deux fois le même prog

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

Comment fait on pour ne pas lancer deux fois le même prog

Message par Patix »

Comment fait on pour ne pas lancer deux fois le même prog ?

ya t'il une commande ds pure ou faut il créer une procédure avec des commandes que je n'ai pas eu l'occasion de découvrir :-) ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Code : Tout sélectionner

#MUTEX_ALL_ACCESS =  $1F0001 

Application.s="Mon application" 

Hmutex = OpenMutex_(#MUTEX_ALL_ACCESS,#False,Application)
If Hmutex=0
  ;Si le mutex existe alors l'application est déjà lancée. 
  ;sinon on le crée 
  Hmutex = CreateMutex_(#Null, #True, Application)
  If Hmutex=0
    ;Fin du programme mutex non créer 
    End 
  EndIf 
Else 
  ;On recherche l'application 
  ;pour la mettre au premier plan. 
  Handle=FindWindow_(#Null, Application) 
  ShowWindow_(Handle,#sw_hide)  
  ShowWindow_(Handle,#sw_minimize) 
  ShowWindow_(Handle,#sw_restore)  
  End 
EndIf 

;Le reste du code ici 
If OpenWindow(0, 431, 186, 325, 214,  #PB_Window_SystemMenu, Application) 
  Repeat 
    Event=WaitWindowEvent() 
  Until Event = #PB_EventCloseWindow 
EndIf  

CloseHandle_(Hmutex) 
End
Dernière modification par nico le mar. 04/janv./2005 19:23, modifié 1 fois.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Sur www.purearea.net il y a une librarie qui le fait si tu ne veux pas t'embêter avec du code, mais c'st bien de savoir comment ça fonctionne
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oui, intéressant comme code.

(je peux le mettre sur 2Dev ?)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Tous les codes que je poste sont libres de tous droits; donc tu peux mettre le code sur 2Dev sans m'en demander la permission; je te demanderai juste de me le faire savoir, que je sois au courant pour d'éventuelles mise à jour.

Aussi quand on poste un code sur le Forum dont une partie reprend un code posté par un autre; c'est bien d'en donner l'origine par respect pour celui qui l'a posté.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Tu as du aire une erreur :wink:

Code : Tout sélectionner

CloseHandle_(Hmutex)
C'est n'est pas handle qui faut fermer et non hmutex ?
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Et pour les processus quelqu'un sait ? :oops:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ben, pareil non ?

suffit de retirer la partie qui met le prog au premier plan
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'ai corrigé le code suite au post d' Oliv.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Le Soldat Inconnu a écrit :ben, pareil non ?

suffit de retirer la partie qui met le prog au premier plan
Non justement :(
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Si tu as un exemple Oliv, je veux bien regarder ça de plus près.

:)
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Non justement j'ai pas d'exemple et comme ce soir je n'avais pas envie de chrcher, je me suis dit que vous alliez savoir :roll: . Enfin je chercherait demain :wink:
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

Message par Patix »

Nico,

Je te remercie pour ton code mais étant débutant, dans pure, je ne comprend pas pour commencer les lignes :
Hmutex = OpenMutex_(#MUTEX_ALL_ACCESS,#False,Application)
Hmutex = CreateMutex_(#Null, #True, Application)

OpenMutex_ et Create_Mutex_
ceux sont des commandes pure ou ....

Excuse mon ignorance :-)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

toute les commandes qui s'ecrivent avec un "_" a la fin sont des appels
a l'API Windows !!
ex : CreateMutex_( )



en pure ont utilise les apis comme des commandes , elle ne font pas partie du language, ce sont des commande liés au system d'exploitation
des commandes externe au language purebasic en fait !!


:)
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

J'avais écrit un petit tuto sur les mutex (mutual exclusion). Fais une recherche avec mot clé.
Les mutexs sont des objets destinés à la synchronisation, et effectivement, il peuvent servir ici.

Ceci-dit, si ton prog ouvre une fenêtre, le plus simple, c'est d'utiliser un FindWindow_(0,titre$)

Pour les processus, on peut en obtenir la liste vie des comandes API :

voir doc Microsoft sur CreateToolhelp32Snapshot, Process32First, Process32Next.

Pour utiliser les fonctions Windows, tu as intérêt à télécharger la doc : plateforme SDK. Je n'ai pas le lien sous la main. Qui peut le mettre?
Répondre