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

cs_et1 Messages postés 250 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 27 janvier 2011 - 31 mars 2007 à 18:32
cs_et1 Messages postés 250 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 27 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"

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

Merci,

www.et1-vb.net
www.journalcreator.et1-vb.net
A voir également:

12 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
31 mars 2007 à 18:37
regarde du coté de la propriété Process.StartInfo.Arguments

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

Comment-faire ?

Merci.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
31 mars 2007 à 19:08
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 #
0
cs_et1 Messages postés 250 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 27 janvier 2011 10
31 mars 2007 à 19:11
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

Cordialement

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
0
Utilisateur anonyme
31 mars 2007 à 20:45
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
0
cs_et1 Messages postés 250 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 27 janvier 2011 10
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 ?

Merci.
0
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007
1 avril 2007 à 10:20
Salut,

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

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

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

Merci.
0
cs_et1 Messages postés 250 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 27 janvier 2011 10
1 avril 2007 à 12:14
http://msdn2.microsoft.com/en-us/library/aa813741.aspx :

'Requires Windows XP or Windows 2000 Professional.' Et pour Win98/Me ?
0
Rejoignez-nous