Snippet $process

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 811 fois - Téléchargée 18 fois

Contenu du snippet

Ce snippet permet de :
-Savoir si oui ou non un processus est ouvert
-Pouvoir fermer le processus

Le code n'est pas de moi même si j'y est bien contribuer, c'est Luckyfranck qui l'a fait, j'ai juste transformé ca en snippet.

Pour l'utiliser : $process()
Propriété : kill, isopen

Exemple :
$process(mirc.exe).isopen ne peux retourné que $true :)
$process(mirc.exe).kill ferme l'application et renvoi $true, $false sinon

Le code utilise les objet Com, ce qui est de loin la chose la moins evidente en mirc.
Le code n'est pas non plus des plus rapides, cela dépendera du nombre de processus ouvert et de leur place.

Source / Exemple :


/*

Alias très simple pour :
-Savoir si tel ou tel processus est actif.
-Fermer un processus.

Syntaxe: $process(processus)
Propriété : isopen kill
Exemple: //echo * $process(mirc.exe).isopen
Résultat: * $true

Pour plus d'aide, concernant l'objet Shell Win32_Process:
http://msdn2.microsoft.com/en-us/library/aa394372.aspx

  • /
alias process { ; On ouvre l'objet COM .comopen Process WbemScripting.SWbemLocator ; On transfère les données de l'ouverture de l'objet 'Process' dans l'objet 'Win32_Process' ; Il y a création d'un nouvel objet, 'Process' ne sers plus. noop $com(Process,ConnectServer,3, dispatch* Win32_Process) ; On éxécute une requête WQL afin de séléctionner tous les champs (*) de l'objet 'Win32_Process' (pas l'objet COM, l'objet Shell) ; Cette requête nous renvoit la liste ; Le dispatch transfère ces données sur un nouvel objet, 'Win32_Process_Results' noop $com(Win32_Process, ExecQuery,3,string,Select * from Win32_Process,dispatch* Win32_Process_Result) ; On fait une boucle sur la liste var %a = $comval(Win32_Process_Result,0) while (%a) { ; Si le nom du processus est celui que l'on a spécifié : if ($comval(Win32_Process_Result,%a,Name) == $1) { ; On met la variable %t à 1 si on a spécifié $process().open et on arrete la boucle if ($prop == isopen) { var %t 1 | break } ; On met la variable %n a 1 si on a spécifié $process().kill ,on ferme le processus et on arrete la boucle elseif ($prop == kill) { var %n 1 | noop $comval(Win32_Process_Result,%a,Terminate) | break } } ; On décremente %a pour la boucle dec %a } ; On ferme les objets COM .comclose process .comclose win32_process .comclose Win32_Process_Result ; Si %t est à 1, le processus demandé est ouvert, donc on retourne $true, $false sinon. ; Si %n est à 1, le processus demandé a été fermé, donc on retourne $true, $false sinon. return $iif(%t,$true,$iif(%n,$true,$false)) }

Conclusion :


Utile si l'on veux savoir si un application est ouverte

A voir également

Ajouter un commentaire

Commentaires

dj328i
Messages postés
311
Date d'inscription
dimanche 23 février 2003
Statut
Membre
Dernière intervention
1 mai 2009
-
Salut Wims et tous les autres

Vraiment sympa ta source sérieux. Ca fait du bien de voir un truc comme ca dans ce rammasi d'addon qu'on a deja vu 34,000 fois lol.

Les objets coms peuts save s'en servir et pourtant je trouve ca vraiment pratique. J'ai posté 2 ou 3 scrips en 2004 qui avais pour but de manipulé le registre de windows

Je vais allé etudié ta source de plus pres :)
cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1 -
Oui plus ou moins, c'est un des rare truc dont je me servais pas avec les regex, et c'est bien puissant, ca permet de recupéré pas mal de trucs même si c'est mal documenté ( que en anglais et c'est pas tres simple a aborder )

Je n'arrete pas la while avec /break parce que le goto le fait lui même :) ( j'avais testé ) et cela fait perdre plus de temps qu'autre chose surtout que le goto est obligé d'etre là.

Les commentaires sont ceux de Luckyfranck, donc ouais c'est bien fait :]
COOLMAN002
Messages postés
976
Date d'inscription
lundi 16 juin 2003
Statut
Membre
Dernière intervention
1 juillet 2012
1 -
; Si le nom du processus est celui que l'on a spécifié, on met la variable %t à 1 et l'on arrete de la while avec le goto, sinon on continue la boucle.

pourquoi tu n'arrêtes pas la while avec "/break" ?

Des sources avec les objets COM j'en ai déjà vu sur ce site ^^

En tout cas bien commenté, ca pourra servir !

PS: On en parlait y'a pas longtemps des objets COM, ca ta motivé à faire une source dessus ? ^^
cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1 -
Oui, je n'ai jamais vu de source les utilisant ici du moins j'en ai pas souvenir
cs_KiNdErMaXi
Messages postés
1055
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
30 novembre 2009
2 -
C'est sympa parce que ça montre un peu comment marche les com object

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.