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
Comment fait on pour ne pas lancer deux fois le même prog
Comment fait on pour ne pas lancer deux fois le même prog
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
?
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
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.
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 :
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é.
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é.
Tu as du aire une erreur
C'est n'est pas handle qui faut fermer et non hmutex ?
Code : Tout sélectionner
CloseHandle_(Hmutex)
-
Le Soldat Inconnu
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
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
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
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 !!

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 !!
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?
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?