[VB.NET] Comment s'avoir les arguments d'un processus

Signaler
Messages postés
250
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
27 janvier 2011
-
cs_et1
Messages postés
250
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
27 janvier 2011
-
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"

comment répérer l'argument : "C:\dossier\fichier.txt" ?

Merci,

www.et1-vb.net
www.journalcreator.et1-vb.net

12 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
regarde du coté de la propriété Process.StartInfo.Arguments

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
250
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
27 janvier 2011
7
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.

Comment-faire ?

Merci.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
Effectivement, ça n'a pas l'air de marcher, je ne sais donc pas comment faire
La structure StarInfo est systématiquement vide chez moi.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
250
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
27 janvier 2011
7
Oui ca ne marche vraiment pas, même si on lance nous même le processus :

dim p as new Process

p.Start("C:\WIndows\system32\notepad.exe", "C:\dossier\fichier.txt")

p.StartInfo.Argument 'c'est quand même vide !

Comment faire ?
Messages postés
553
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
2 octobre 2016
1
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 ! :)

Cordialement

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
27
Salut,

Logique, le p.Start agit comme un Process.Start
Il faut donc fait p = Process.Start(...





Dim p As Process
p = Process.Start("C:\WIndows\system32\notepad.exe", "C:\dossier\fichier.txt")
Dim LineArgs As String = p.StartInfo.Arguments,

----

(Coloration syntaxique automatique par Kenji)






__________
 Kenji
Messages postés
250
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
27 janvier 2011
7
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 ?

Merci.
Messages postés
167
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2007

Salut,

Tu devrais essayer la solution de Kenji qui marche à merveille...

@+
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
"...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 #
Messages postés
2376
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
17
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é.

++
Messages postés
250
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
27 janvier 2011
7
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.

Merci.
Messages postés
250
Date d'inscription
vendredi 14 janvier 2005
Statut
Membre
Dernière intervention
27 janvier 2011
7
http://msdn2.microsoft.com/en-us/library/aa813741.aspx :

'Requires Windows XP or Windows 2000 Professional.' Et pour Win98/Me ?