PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → ExeLancé()
ExeLancé()
Iniciado por Philippe Pasquali, 13,mar. 2006 21:08 - 1 respuesta
Publicado el 13,marzo 2006 - 21:08
Publicado el 14,marzo 2006 - 11:59
Tien mon le cors du message précédent à disparu ! Bon c'est pas grave, la question portait sur la fonction ExeLancé() qui renvoie le nombre d'occurrence d'un programme lancé MAIS UNIQUEMENT POUR L'UTILISATEUR LOGGE ! Hors je lance une application sous un autre profil et ExeLancé() renoie 0.
J'ai donc trouvé en passant par la fonction suivante

PROCEDURE EnumProcess()

objWMIService est un objet Automation "MSScriptControl.ScriptControl"
ProgrammeVbs est une chaîne
ResultatVbs est une chaîne

ProgrammeVbs = "Function EnumProcess()" +CRLF
ProgrammeVbs += "On Error Resume Next" +CRLF
ProgrammeVbs += "strComputer = "+Caract(34) + "." + Caract(34) + CRLF
ProgrammeVbs += "strResult = "+Caract(34)+Caract(34) + CRLF
ProgrammeVbs += "Set objWMIService = GetObject("+Caract(34)+"winmgmts:\\"+Caract(34)+" & strComputer & "+Caract(34)+"\root\cimv2"+Caract(34)+")" + CRLF
ProgrammeVbs += "Set colItems = objWMIService.ExecQuery("+Caract(34)+"Select * from Win32_Process"+Caract(34)+",,48)" + CRLF
ProgrammeVbs += "For Each objItem in colItems" + CRLF
ProgrammeVbs += "strResult = strResult & objItem.Caption & chr(9)" + CRLF
ProgrammeVbs += "strResult = strResult & objItem.ExecutablePath & chr(13) &chr(10)" + CRLF
ProgrammeVbs += "Next" + CRLF
ProgrammeVbs += "EnumProcess = strResult" + CRLF
ProgrammeVbs += "End Function"

objWMIService>>Language("VBScript")
objWMIService>>Reset()

WHEN EXCEPTION IN
objWMIService>>AddCode(ProgrammeVbs)
DO
Erreur("Erreur dans le programme vbs...")
RENVOYER ""
END

ResultatVbs = ""

WHEN EXCEPTION IN
ResultatVbs = objWMIService>>Eval("EnumProcess()")
DO
Erreur("Erreur d'execution du programme vbs")
RENVOYER ""
END

IF ResultatVbs<>"" THEN ResultatVbs = ResultatVbs[[1 sur Taille(ResultatVbs)-2]]

RENVOYER ResultatVbs

Elle renvoie une chaine <Nom> tab <chemin> crlf <Nom> tab <chemin> crlf...<Nom> tab <chemin>
de tout les processus.
Par contre je n'ai pas testé sous un compte lambda