Une application console qui se substitue à une autre
Bonjour ! J'essaie de résoudre le problème suivant.
Soit une application console, Upper.exe, qui renvoie en majuscules tout ce qu'elle reçoit.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| program Upper;
uses
SysUtils;
var
s: string;
begin
while not EOF do
begin
ReadLn(s);
if s = 'quit' then
Break
else
WriteLn(UpperCase(s));
end;
end. |
Soit une deuxième application, UpperInterface.exe, qui sera l'application effectivement utilisée par... l'utilisateur, et qui devra se comporter extérieurement comme Upper.exe, après l'avoir lancé.
J'ai un code basé sur l'API Windows qui fait presque cela, sauf qu'il reste bloqué. Si je lance UpperInterface.exe et que je saisis quelque chose dans la console. Rien ne se passe. C'est lorsque j'appuie sur Ctrl+Z puis entrée que je vois apparaître la "réponse" de Upper.exe.
Qu'est-ce que je dois faire ? Mettre le ReadLn dans un thread aussi ? Utiliser WaitForSingleObject, PeekNamedPipe, PeekConsoleInput... Je me perds dans tout ça.
J'espère que j'ai été clair. Ci-joint le code des deux programmes. Voir plus loin un exemple qui fonctionne.