Utilisation de WriteFile (Windows) [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
2 février 2012
-
Messages postés
6
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
2 février 2012
-
Bonjour,
j'hérite d'un programme qui peut être utilisé en passant par une fenêtre DOS. j'aurais aimé le commander à partir d'une fenêtre Win32. Pour cela je m'inspire de la solution présentée ici:
Lancer plusieurs commandes sur le même processus
Après quelques problèmes de compilation liées visiblement aux types des paramètres utilisés dans la fonction WriteFile, je commence à faire fonctionner ce code. Cependant cette fonction WriteFile ne semble écrire que le premier caractère de la commande
lorsque l'instruction suivante est accomplie:

if (! WriteFile(hPipeInputWrite, lpCommand, _tcslen(lpCommand) , &nNumberOfCharsWritten, NULL))
System_ShowLastError();

je constate (en DEBUG) que nNumberOfCharsWritten correspond exactement au nombre de caratères de lpCommand, mais la réponse de la fenêtre DOS montre à l'évidence que seul le premier caractère a été pris en compte.
Il faut d'ailleurs pour cela que je répète cette instruction en envoyant cette fois le caratère _T("\n")

En résumé suposons que je doive envoyer la lpCommand "show\n", ça ne marchera pas.
Il faut que j'envoie "s" ensuite "h" ensuite "o" ensuite "w" ensuite "\n"
Alors seulement la fenêtre DOS me renvoie la réponse attendue.

Y-a-il des idées dans les nuages?
ims214

2 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
soucis d'Unicode, je pense...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
6
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
2 février 2012

Merci Renfield,
Dans VS2008, j'ai repris le code original et configuré l'item "Jeu de caractères" des propriétés générales du projet en "Non défini"
...Et ça marche!