Commandes shell ss Windows

Signaler
Messages postés
47
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
9 juin 2004
-
Messages postés
570
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 janvier 2021
-
bonjour,
j'ai une question concernant la programmation windows en asm:
je voulais savoir comment on peut faire une fonction pour envoyer des commandes au système d'exploitation, genre la fonction "system()" de c++
il faudrait que ça marche d'ailleurs pour toutes les versions de windows...

merci

6 réponses

Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007

Il ya bien la fonction ShellExecute qui permet d'exécuter une commande console ou une URL, etc.

http://www.asmfr.com/code.aspx?ID=15249

Sinon pour ce qui ressemble aux fonctions System, il y a les interruptions. J'espère t'avoir aidé ++
Messages postés
570
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 janvier 2021
2
Je ne sais pas ce que la fonction system du c++ peut faire.Par contre je sais beaucoup plus de choses sur ce que l'on peut faire avec des API et les COM.Par définition sendmessage est une fonction permettant de dialoguer avec le système.Un exemple concret aiderait a répondre.
API et COM remplace avantageusement toutes les fonctions du C++ qui d'ailleurs utilise les API.
TouTenMasm
Messages postés
47
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
9 juin 2004

il ne s'agit pas d'envoyer des messages avec SendMessage, mais des commandes console (comme celles de MS-DOS). La fonction system() de c++ permet de faire cela par ex system("del c:\temp\* ");
la fonction system, justement, ne fait pas partie des API de windows mais d'une librairie standard de c++
Messages postés
570
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 janvier 2021
2
Je vois c'est déja plus clair.Pour faire la même chose avec MASM32 , il faut passer par la création d'un pipe ou plus simple , par l'éxécution d'un batch.
La création d'un pipe est détaillé dans les tutoriaux visibles sur mon site ,en français
http://perso.wanadoo.fr/luce.yves/
Dans le cas d'intruction MSDOS , le programme de pipe doit demander l'éxécution de command.com ou de cmd.exe et mettre les instructions a éxécuter en paramètres.
Dans le source d'éditmasm se trouve plusieurs proc un peu plus sophistiqués que le tutorial et réutilisables permettant de réaliser un pipe sans trop se casser la tête
l'avantage de réutiliser ces proc est qu'ils ont été testés un nombre certains de fois.
Salut,ToutEnMasm
Messages postés
47
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
9 juin 2004

je vois bien
mais en fesant comme ça (en lançant cmd.exe ou command.comavec les parametres) il n'y a pas une fenêtre de console qui apparaitrait, même si pendant un temps très court, avant de disparaître ??? ce serait gênant pour ce que je veux en faire...

j'ai vu dans MSDN que pour les systemes Win2k et XP on peut avec CreateProcess lancer une application console sans la fenêtre correspondante. Mais pour WinMe et 98 que faire?

c'est quand même une très bonne idée, que je vais utiliser si je trouve rien d'autre qui ne lance pas de fenêtre console

merci & salut
--anthraxx

PS:
:) tu devrais changer la musique de ton site ;)
Messages postés
570
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 janvier 2021
2
Salut,
Pas d'apparition de fenêtres.Editmasm utilise le pipe pour lancer des commandes DOS et aucune fenètre n'apparait sauf si on le demande ou en crée une.
La fonction readfile se contente d'écrire les
données dans un tampon mémoire.Une fois que les données sont écrites dans le tampon on en fait ce qu'on en veut.C'est le pipe qui ordonne au programme appelée de visualiser ou non sa fenêtre.Dans editmasm cette option est positionnée sur non,dans le tutorial aussi.
ToutEnmasm