Snippet $process

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

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.