Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SNIPPET $PROCESS


Information sur la source

Catégorie :Astuces Classé sous : isopen, com, object, snippet, processus Niveau : Débutant Date de création : 18/03/2007 Date de mise à jour : 20/04/2007 20:42:31 Vu : 2 390

Note :
Aucune note

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


Description

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

  • /*
  • 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))
  • }
/*

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
 

Historique

18 mars 2007 19:13:09 :
manquait le /* du debut des commentaire
20 avril 2007 20:42:31 :
Rajout de la propriété .kill qui permet de fermé le processus

Commentaires et avis

signaler à un administrateur
Commentaire de KiNdErMaXi le 21/03/2007 19:51:57

C'est sympa parce que ça montre un peu comment marche les com object

signaler à un administrateur
Commentaire de wims le 22/03/2007 17:07:21

Oui, je n'ai jamais vu de source les utilisant ici du moins j'en ai pas souvenir

signaler à un administrateur
Commentaire de COOLMAN002 le 23/03/2007 19:26:00

; 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 ? ^^

signaler à un administrateur
Commentaire de wims le 24/03/2007 02:36:40

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 :]

signaler à un administrateur
Commentaire de dj328i le 29/04/2007 17:43:36

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 :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

cherche help sur les /com object [ par RysS ] Je cherche une aide concrete ( en fr de préférence ) ou un tutorial ou les deux sur les /com object ( command epour acceder a des programme )RysS [ A Snippet MATHS [ par Zova ] Bon je me suis peut être pas foulé, mais je voulai vous montrer un petit tour de maths :] ALT + A (partie aliases) vous mettez le tout et ta error snippet [ par neo66 ] Bonjours, je me suis amusé a faire ce petit snippet qui n'est pas vraiment tres utile mais bon, je savais pas quoi faire... mais (oui oui, ya toujours Hébergement gratuit d'images [ par jhd ] J'ai créé ce post pour vous présenter un de mes projets : NetImago.com Vous allez me dire qu'il existe de nombreux sites de ce genre et c'est vrai. Po


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.