salut
Quand on execute un programme avec spawnlp ou create process on met le nom du programme avec son chemin et des parametres.
Je voudrais savoir comment retrouver les paramètres d'un programme: le programme wscript.exe.
merci d'avance.
Version imprimable
salut
Quand on execute un programme avec spawnlp ou create process on met le nom du programme avec son chemin et des parametres.
Je voudrais savoir comment retrouver les paramètres d'un programme: le programme wscript.exe.
merci d'avance.
J'espère avoir bien compris ta question
Le point d'entrée de ton programme en C est la fonction main().
Le prototype de cette fonction est "int main(int argc, char *argv[])"
argv est un tableau de chaine de caractères et chaque chaine de caractères est un des paramètres.
Si tu appelle ton programme "programme.exe toto titi", tu auras
argv[0] contient le nom du programme mais suivant les OS, il y a ou non le chemin du binaire.Code:
1
2
3
4
5 argc = 3 argv[0] = "programme.exe" argv[1] = "toto" argv[2] = "titi" argv[3] = NULL;
Je pense plutôt qu'il s'agit de récupérer la ligne de commande d'un processus donné et non forcément du processus courant. Cela peut se faire en utilisant WMI. La classe Win32_Process possède une propriété CommandLine qui permet de connaître le ligne de commande à l'origine du processus associé à une instance de la classe. Sinon, injecter GetCommandLine dans le processus cible (voir injection de code sur le net).
Si tel est le cas, Attention!
ok et savez vous comment on fait pour avoir une instance de la class correspondant à un processus? j'ai le nom du processus, son PID et son handle.
Qu'est-ce que tu veux dire par "class correspondant à un processus" ? La classe WMI Win32_Process?
@Médinoc : sûrement "comment créer un objet Win32_Process ?".
@dvechamb : Le lien que Médinoc t'a donné répond à ta quesyion. L'exemple est en VBScript (donc directement "exécutable" sous Windows). Si ça ne te plaît pas, précise le langage que tu utilises ou mieux, apprends à utiliser WMI avec ton langage. MSDN n'est pas payant ...
je programme en visual c++, si je veux le faire avec win32_process il faut que jai une instance de la classe associé au processus dont je ve le parametre. et je sais pas comment faire pour ca
ok je tacherai de me débrouiller merci
"La classe Win32_Process possède une propriété CommandLine qui permet de connaître le ligne de commande à l'origine du processus associé à une instance de la classe"
je ne sais pas comment avoir une instance de la classe associé a un processus
est ce que c comme ca?
Code:
1
2
3
4
5
6
7
8 # HANDLE SnapP = NULL;# HANDLE hProcess = NULL ; # PROCESSENTRY32 pr32 = {0}; # # SnapP = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); # if (SnapP == (HANDLE)-1) { } # # pr32.dwSize = sizeof(PROCESSENTRY32); # if(::Process32First(SnapP,&pr32)) {
Win32_Process c'est du WMI, pas du Toolhelp32.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 include <stdio.h> int main(void) { FILE *p; char buf[1024]; if(!(p = popen("wmic process where name='WSCRIPT.EXE' get commandline", "r"))) return 1; while(fgets(buf, sizeof buf, p)) printf(buf); pclose(p); return 0; }
merci mais jai essayé ca me donne
'wmic' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.