Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

#1 12-10-2006 09:17:57

PB2  
Membre Geek
Date d'inscription: 05-06-2006
Messages: 36
Pépites: 280
Banque: 0

[RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

Bonjour,

Le titre a tout dit. J'ai déjà vu la solution qq part mais je n'ai pas noté, maintenant j'en ai besoin !
Avez-vous une idée ?

Merci.

Hors ligne

 

#2 12-10-2006 09:42:23

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

pris sur le site de www.rgagnon.com

Code: pb

OleObject locator,service,props
String ls_query = 'select name , description from Win32_Process where name = "NOTEPAD.EXE"'
int num, ret, i
locator = CREATE OleObject
ret = locator.ConnectToNewObject("WbemScripting.SWbemLocator");
service = locator.ConnectServer();
props = service.ExecQuery(ls_query);
num = props.count()

IF num > 0 THEN
 MessageBox("Process","NOTEPAD.EXE is running")
ELSE
 Messagebox("Process","NOTEPAD.EXE is NOT running")
END IF

Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 12-10-2006 11:39:45

PB2  
Membre Geek
Date d'inscription: 05-06-2006
Messages: 36
Pépites: 280
Banque: 0

Re: [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

Merci Pick Ouic,

Tu es très réactif aux problèmes des autres, j'apprécie, mais hélas cela ne marche pas pour moi (PB8, win2000).

Ton code m'a fait penser aux exemples fournis avec PB8, je les ai regardé mais l'exemple pour détecter si un EXE est lancé ne marche pas non plus sur mon poste ! par contre, l'exemple TASKS de la fenêtre w_sdk_functions doit résoudre mon problème. Cet exemple retourne la liste des applications en cours d'exécution, je n'ai que détecter les doublons dans cette liste.

Encore merci.

NB: Comment puis-je ajouter [Resolu] dans le titre ?

Dernière modification par PB2 (12-10-2006 11:43:01)

Hors ligne

 

#4 12-10-2006 12:18:20

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

et avec la fonction externe FINDWindow ?
pour trouver la classe ouverte, et puis la refermer....


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#5 12-10-2006 13:01:40

PB2  
Membre Geek
Date d'inscription: 05-06-2006
Messages: 36
Pépites: 280
Banque: 0

Re: [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

J'ai essayé la fonction FindWindow mais elle trouvait systématiquement l'appli car elle commençait par l'appli en cours ! Je ne sais pas lui dire "sauf l'appli en cours".

Hors ligne

 

#6 12-10-2006 13:10:26

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

et...?ca ne marche pas non plus ca ?

Code: pb

//[external function declaration]
FUNCTION ulong CreateMutexA &
   (ulong lpMutexAttributes, boolean bInitialOwner, REF string lpszName) &
   LIBRARY "kernel32.dll"
FUNCTION long GetLastError() LIBRARY "kernel32.dll"

//[powerscript]
// boolean of_IsRunning()
//
//        IF of_isRunning THEN
//           MessageBox("Oups", "already running!")
//        END IF
//

constant ulong ERROR_ALREADY_EXISTS = 183
constant ulong SUCCESSFUL_EXECUTION = 0

ulong lul_mutex
ulong lpsa
ulong lul_last_error
boolean lb_ret = FALSE

IF NOT (Handle(GetApplication()) = 0) THEN
    lul_mutex = CreateMutexA(lpsa, FALSE, as_appname)
    lul_last_error = GetLastError()
    lb_ret = NOT (lul_last_error = SUCCESSFUL_EXECUTION)
END IF

RETURN lb_ret

Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#7 12-10-2006 14:38:32

PB2  
Membre Geek
Date d'inscription: 05-06-2006
Messages: 36
Pépites: 280
Banque: 0

Re: [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?



Oui, ça marche (uniquement en mode exécutable).

En mode interprété, ça ne marche pas mais cela n'est pas un problème.

Merci Pick Ouic.

t'es le meilleur !

Hors ligne

 

#8 12-10-2006 14:42:06

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

je suis le meilleur mangeur de glaces....
si tu veux faire une compet....

hi hi hi  A+


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#9 12-10-2006 14:52:33

PB2  
Membre Geek
Date d'inscription: 05-06-2006
Messages: 36
Pépites: 280
Banque: 0

Re: [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

Je ne suis pas très fort pour ça non plus ! décidément...

A+

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Comment empêcher l'exécution d'une 2è fois le même EXE sur un poste ?

Pied de page des forums

Propulsé par FluxBB 1.2.22