cs_anthraxx
Messages postés47Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention 9 juin 2004
-
14 mars 2004 à 18:41
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 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...
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 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
cs_anthraxx
Messages postés47Date d'inscriptionmardi 19 mars 2002StatutMembreDerniè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++
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_anthraxx
Messages postés47Date d'inscriptionmardi 19 mars 2002StatutMembreDerniè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 ;)
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 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