Commandes shell ss Windows

cs_anthraxx Messages postés 47 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 9 juin 2004 - 14 mars 2004 à 18:41
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 - 19 mars 2004 à 14:45
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

cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007
15 mars 2004 à 16:08
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é ++
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
16 mars 2004 à 20:31
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
0
cs_anthraxx Messages postés 47 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 9 juin 2004
16 mars 2004 à 20:40
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++
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
17 mars 2004 à 09:15
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
0

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

Posez votre question
cs_anthraxx Messages postés 47 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 9 juin 2004
18 mars 2004 à 23:29
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 ;)
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
19 mars 2004 à 14:45
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
0
Rejoignez-nous