Sim 2005
Messages postés86Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention18 juillet 2009
-
31 juil. 2007 à 17:34
Sim 2005
Messages postés86Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention18 juillet 2009
-
31 juil. 2007 à 23:23
J'utilise des pipes pour rediriger les entrées/sorties d'un programme console vers un programme hôte, et j'aimerais pouvoir envoyer des evenements de type ctrl+c. Pour écrire sur l'entrée du programme console, j'utilise Writefile. Comment trouver ce qu'il faut mettre dans le buffer pour envoyer ce message? j'ai essayé sendmessage et keybd_event avec le handle de l'application mais ça ne fonctionne pas comme les entrées sont redirigées.
Il faut donc utiliser WriteFile, et l'argument qui contient le message à envoyer sur la console estun buffer de type BYTE.
Il me faudrait donc savoir à quels bytes correspondent tel ou tel évenement clavier. ctrl + break....
Merci
A voir également:
Comment transmettre un code de type ctrl + touche sur des pipes via Writefile.
Sim 2005
Messages postés86Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention18 juillet 2009 31 juil. 2007 à 19:46
La solution est d'utiliser GenerateConsoleCtrlEvent(CTRL_C_EVENT, Id du process) avec un procesus créé avec CREATE_NEW_PROCESS_GROUP. Cependant un bug de windows (reconnu) fait que ce message n'est pas traité. CTR_BREAK_EVENT marche mais il ne fonctionne pas comme ctr c.
Sim 2005
Messages postés86Date d'inscriptiondimanche 1 mai 2005StatutMembreDernière intervention18 juillet 2009 31 juil. 2007 à 22:50
En réalité c'est ce que j'ai fait, mais pour simplifier dans le post j'ai écrit
WriteFile(hChildStdinWr, (DWORD)0x02E03, sizeof(0x02E03), &dwWritten, NULL) le * au niveau de DWORD est à enlever, il ne s'agit pas d'une adresse en effet. (Trop de précipitation)