Je dois écrire un symbole dans la fenêtre de la console ou envoyer Entrez la clé. J'utilise le code de this answer avec quelques modifications:Comment envoyer un symbole ou 'Entrée' à cmd.exe démarré par CreateProcess
procedure Console_Std_Input_Test;
var
sa: TSecurityAttributes;
si: TStartupInfo;
pi: TProcessInformation;
BytesWritten: LongWord;
hInRead, hInWrite: THandle;
begin
// Initialize security information
sa.nLength := SizeOf(sa);
sa.lpSecurityDescriptor := nil;
sa.bInheritHandle := True;
CreatePipe(hInRead, hInWrite, @sa, 0);
// Initialize startup info
ZeroMemory(@si, SizeOf(si));
si.cb := SizeOf(si);
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.wShowWindow := SW_SHOWNORMAL;
si.hStdInput := hInRead;
si.hStdOutput := GetStdHandle(STD_OUTPUT_HANDLE);
si.hStdError := GetStdHandle(STD_ERROR_HANDLE);
// Start process
ZeroMemory(@pi, SizeOf(pi));
CreateProcess(nil, 'cmd /k ', nil, nil, True,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi);
CloseHandle(pi.hThread);
CloseHandle(hInRead);
// Write '<enter>'
WriteFile(hInWrite, #13#10, 2, BytesWritten, nil);// nothing happens!!
//WriteFile(hInWrite, #48#49#50, 3, BytesWritten, nil);//write "012"-nothing appears too!
CloseHandle(hInWrite);
// Wait for process to exit
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
end;
J'ai passé toute la journée à essayer de résoudre ce problème, mais je ne peux pas comprendre comment envoyer Entrez ou des symboles à la console. J'ai regardé des exemples sur MSDN et support de Microsoft, mais n'ai pas trouvé quelque chose de différent du code ci-dessus, et ne peux vraiment pas comprendre où mon erreur est.
Je voudrais essayer avec une commande plus simple comme «pause» pour voir si cela fonctionne. –
@ Jean-François Fabre, oui, j'ai fait CreateProcess (nul, 'cmd/k pause' ...), et toujours rien ne se passe. La console attend la touche d'entrée – George
Je veux juste dire «pause». Eh bien, je suppose que ça fera la même chose. Essayez d'ajouter plusieurs séquences # 13 # 10 aussi. –