zavier666
Messages postés266Date d'inscriptionmardi 7 septembre 2004StatutMembreDernière intervention30 avril 20091 2 nov. 2007 à 19:32
Bonjour,
tu peux par exemple lister les processus en cours:
<li>' fonction permettant d'énumérer les processus</li><li>PrivateDeclareFunction _
</li><li>EnumProcesses Lib "PSAPI.DLL" (ByRef _
</li><li> tableau_process AsLong, ByVal taille_tableau_supposee AsLong, _
</li><li>ByRef taille_tableau_reelle AsLong) AsLong</li><li>
</li><li>' fonction permettant d'ouvrir les processus</li><li>PrivateDeclareFunction _
</li><li>OpenProcess Lib "Kernel32.dll" (ByVal _
</li><li> acces_desire AsLong, _
</li><li>ByVal heritage_handle AsLong, _
</li><li>ByVal handle_process AsLong) AsLong</li><li>
</li><li>' fonction permettant de connaître le nom d'un processus dont on connait le handle</li><li>PrivateDeclareFunction _
</li><li>GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal _
</li><li> handle_process_ouvert AsLong, _
</li><li>ByVal handle_module AsLong, ByVal _
</li><li> nom_processus AsString, _
</li><li>ByVal taille AsLong) AsLong</li><li>
</li><li>' fonction permettant de fermer un handle de processus</li><li>PrivateDeclareFunction _
</li><li>CloseHandle Lib "Kernel32.dll" (ByVal _
</li><li> handle_process_ouvert AsLong) AsLong</li><li>
</li><li>
</li><li>' variable pour openprocess, permet de consulter le nom des processus</li><li>PrivateConst PROCESS_VM_READ = 16
</li><li>PrivateConst PROCESS_QUERY_INFORMATION = 1024
</li><li>
</li><li>
</li><li>' initialisation des variables</li><li>Dim taille_tableau_supposee AsLong</li><li>Dim taille_tableau_reelle AsLong</li><li>Dim nb_process AsLong</li><li>Dim tableau_process() AsLong</li><li>Dim nom_processus AsString</li><li>Dim taille AsLong</li><li>Dim handle_process_ouvert AsLong</li><li>Dim item AsLong</li><li>
</li><li>
</li><li>
</li><li>
</li><li>Sub Form_Load()
</li><li>
</li><li>' on suppose qu'il y a maximum 250 processus en cours</li><li>ReDim tableau_process(250) AsLong</li><li>
</li><li>
</li><li>' dimensions en octets du tableau (4 octets par procesus, soit 1000 octets)</li><li>taille_tableau_supposee = 1000
</li><li>
</li><li>
</li><li>'passe la fonction EnumProcess pour remplir le tableau des de processus et en connaître la taille reelle</li><li>EnumProcesses tableau_process(1), taille_tableau_supposee, taille_tableau_reelle
</li><li>
</li><li>
</li><li>'Compte les processus (4 octets par processus, il y a donc 4 fois moins de handle que le nombre</li><li>'contenu dans taille_reelle</li><li>nb_process = taille_tableau_reelle / 4
</li><li>
</li><li>'passe en revu tous les handles de processus pour en obtenir le nom</li><li>For item = 1 To nb_process
</li><li> DoEvents
</li><li>'Donne le handle du processus et l' ouvre</li><li> handle_process_ouvert = OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, 0, tableau_process(item))
</li><li>If handle_process_ouvert <> 0 Then</li><li>'initialise un buffer pour recevoir le nom du processus</li><li> nom_processus = Space(250)
</li><li> taille = 250
</li><li>'Prend le nom du processus, cette fonction renvoi le nb de caractère du nom , d'où l'utilisation de la variable taille réelle</li><li> taille_reelle = GetModuleFileNameExA(handle_process_ouvert, 0, nom_processus, taille)
</li><li>'Enlève les espaces</li><li> nom_module = Left(nom_module, taille_reelle)
</li><li>EndIf</li><li>'Ferme les handles du processus</li><li>CloseHandle handle_process_ouvert
</li><li>
</li><li>
</li><li>'ajoute à une liste le processus en cours ainsi que son handle (appelé PID dans le gestionnaire des tâches)</li><li>List1.AddItem nom_module & "" & tableau_process(item)
</li><li>Next</li><li>
</li><li>EndSub</li><li>
</li>
--------------------------------------------------
Toujours + de VB et d'API => APi @ le Loupe
http://apialaloupe.free.fr