[VB.NET] Comment s'avoir les arguments d'un processus
cs_et1
Messages postés250Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention27 janvier 2011
-
31 mars 2007 à 18:32
cs_et1
Messages postés250Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention27 janvier 2011
-
1 avril 2007 à 12:14
Bonjour,
Lorsque je récupère un processus (process.GetProcessByName...), on peut voir/modifier tous pleins de choses sur le processus.
Mais est-ce possible de voir l'argument (si y'en a un) avec lequel le processus a était lancé.
Par exemple :
Si on exécute :
"C:\WIndows\system32\notepad.exe C:\dossier\fichier.txt"
cs_et1
Messages postés250Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention27 janvier 20119 31 mars 2007 à 18:45
Bonjour,
Merci beaucoup pour votre réponse.
Je pense bien que c'est comme ca qu'il faut faire, mais Process.StartInfo.Arguments.ToString me revoit une chaine vide même si processus a était lancé avec des arguments.
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 31 mars 2007 à 20:27
Salut
Tu as effectivement un moyen pour recuperer les arguments avec Process
il faut faire une boucle pour lire tout les process's et recuperer l'argument
sinon tu as aussi Win32_Process c'est du WMI et il te faut un Imports System.Management (il faut l'ajouté)
Si tu arrive pas a trouver ce que tu veux je veux bien te donner un coup de mais !
mais avec les informations que tu as tu devrais trouver quand meme ! :)
cs_et1
Messages postés250Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention27 janvier 20119 31 mars 2007 à 23:19
Bonsoir.
> il faut faire une boucle pour lire tout les process's et recuperer l'argument
Mais ensuite, comment récupérer l'argument ?
Je récupère le processus avec un process.GetProcessByName, mais ensuite comment récupérer l'argument, car Process.StartInfo.Arguments.ToString est vide ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 1 avril 2007 à 10:46
"...la solution de Kenji qui marche à merveille..."
OUI et NON
La solution de Kenji marche effectivement sur un process créé et lancé par l'application en cours, comme le montre son code.
Par contre, sur un process lancé indépendament de l'application (notepad lancé depuis l'explorateur de Windows ou depuis l'invite de commande) et récupéré à l'aide de la methode GetProcessesByName, ça ne marche plus. Le process est bien récupéré, mais la structure StartInfo est totalement vide et donc les arguments inconnus.
---- Sevyc64 (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 1 avril 2007 à 11:57
Bonjour,
Essais avec NtQueryInformationProcess avec comme second paramètre la valeur ProcessBasicInformation.
Tu vas récupérer une structure PROCESS_BASIC_INFORMATION en 3ième paramètre.
Cette structure contient un membre PeBaseAddress qui n'est autre qu'un pointeur vers une structure PEB.
Dans celle-ci un membre nommé ProcessParameters pointeur vers une dernière structure :) RTL_USER_PROCESS_PARAMETERS. Ensuite plus qu'à récupérer les arguments qui sont dans son membre CommandLine et le tour est joué.
cs_et1
Messages postés250Date d'inscriptionvendredi 14 janvier 2005StatutMembreDernière intervention27 janvier 20119 1 avril 2007 à 12:12
Bonjour Willi,
Merci pour ta réponse, mais désolé je ne comprend rien a ce que tu dis.
Je programme en vb.net 2003 et j'aimerai récupérer les arguments d'un processus (non lancé par mon application), mais d'une manière simple, par exemple avec un Process.GetProcessByName et Process.StartInfo.Arguments,ou avec autre chose de simple.