Process threads modules handles dans un treeview en .net ( oui madame )

Soyez le premier à donner votre avis sur cette source.

Vue 29 502 fois - Téléchargée 1 279 fois

Description

Cette source est ma première tentative en vb .net.
il faut savoir que j'ai pas la msdn .net...
Qu'y-a-til dans cette source ? D'abord une forme avec pour unique contrôle un treeview. Les treeviews, entre vb6 et .Net, y a comment dire ? du changement. Alors j'ai plus galéré pour le treeview mais bref... Dans le treeview au lancement du soft s'affiche la liste des process ( éxécutables ) en cours comme on peut la voir dans ctrl-alt-suppr avec l'id et le handle de chaque process. Pour chaque procress est détaillé l'ensemble des ses threads et de ses modules ( dll et drv et je ne sais quoi ) et tout les handles qui dépendent de ce pross et les sous handles tout ça correctement hiérarchisé. Après on pourrait dans une amélioration future détailler tout ce qu'on peut sur les threads et les modules et les process et les handmes grâce aux nombreuses propriétés et méthodes qui sont fourni par system.diagnostics puis les apis de bases et faire une sorte ctrl-alt-suppr en encore plus détaillé.

Pour lister process, threads et modules on utilise les outis .net c'est très bien super pas de problèmes.

Mais après la liste des process s'affiche grâce aux fonction enumwindows et enumchildwindows et là je n'ai pas trouvé dans .net des équivalents pour ne pas avoir à utiliser ces apis. Alors il a fallu les déclarer. Puis les utiliser. Mais comme chacun le sait ce sont des apis qui utilisent des callback de procédures et là c'est plus pareil que dans vb6 c'est encore plus bordélique.

Donc voilà, non seulement cette source m'a permis d'apprendre à accéder à windows à partir de .net mais aussi les fonction callbacks...

Ouah t'as vu t'as lu tout ça. ( je viens faire monter la moyenne nationnale de la lecture - et aussi des fautes surement )

Source / Exemple :


'in the zip

Conclusion :


Heu si je postais ça c'est pas ( seulement ) pour étaler ce que je sais faire, c'est mon premier soft en .net alors si des âmes se sentent de me dire "oui là, t'aurais pu..." moi j'écoute ( et éventuellement je remercie, de nombreux lots à gagner pour les meilleurs d'entre vous... )
Je suis ouvert à toutes les remarques.
Sinon si ça peut aider certains ça me fait plaisir, sincèrement.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
13 -
DWORD GetWindowThreadProcessId(HWND hWnd, LPDWORD lpdwProcessId);
en VB serait (j'espere, tu rectifieras):
mettre le 1er param Byval, le second Byref !!!
Dim processID As Long, thread As Long
thread = GetWindowThreadProcessId(hWnd, processID);
au retour tu as processID de rempli et le thread.
cs_Alain Proviste
Messages postés
910
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
1 -
Merci j'ai mis la source ce matin en utilisant cette api mais merci quand même le hasard fait bien les chose.
OverDarck
Messages postés
116
Date d'inscription
jeudi 12 juillet 2001
Statut
Membre
Dernière intervention
23 juin 2005
-
wow impressionant, mais quand meme il me semble que le but de .NET est de ne pas utiliser d'API....
enfin bon sa merite un 10 ca !!
cs_Alain Proviste
Messages postés
910
Date d'inscription
jeudi 26 juillet 2001
Statut
Modérateur
Dernière intervention
1 février 2015
1 -
ben disons que même si effectivement .net permet de squizer certaiens api ( comme c le cas pour enumprocesses ici ) Tout n'est pas implémenté et dans ce cas on est bien obligé de retomber sur enumwindows :)
surfzoid
Messages postés
467
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
21 avril 2010
-
Trés trés cool 10/10
Ca ma permit de me debarrasser d un pb en effet souvant je veut quiller plusieur processus et avec le taskmngr de windows ça soul il faut les faire un par un donc en partant de ton code qui je repete est excelent, j ai fait :

Deplacer ces déclaration de variables dans la partie public comme suit
Public Class frmPrinc
Inherits System.Windows.Forms.Form
Dim Proc As System.Diagnostics.Process
Dim ProcThread As System.Diagnostics.ProcessThread
Dim Node As System.Windows.Forms.TreeNode
Dim mdl As System.Diagnostics.ProcessModule

dans les propriété du treewview ===> option Checkboxes = true
===> option sorted = true


et j ai rajouter un bouton ===>

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i
Node.Expand()


For i = 0 To Node.Nodes.Count - 1
Dim tpm = Node.Nodes(i).Checked
If Node.Nodes(i).Checked = True Then
Dim MyProcces As Process
Dim Procces() As Process
Dim instance As Process

Procces = MyProcces.GetProcessesByName(Node.Nodes(i).Text)
For Each instance In Procces
instance.Kill()
Next
End If
Next i
Node.Nodes.Clear()
IniTreeview()
End Sub



voili voila, pas trés élégant certe mais efficasse; reste a pofiner l hestétique et autre détails
Bp et @++

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.