nil, nil, False, 0, nil, PChar(sWorkDir), SI, PI);
Где:
SI.wShowWindow = SW_SHOW - консоль отображается в новом окне
sParams = app.exe -key 12345
А как сделать так, чтобы консоль продолжала висеть после завершения работы процесса, чтобы можно было посмотреть результаты работы воочию?
Добиться эффекта типа как батником запускал бы:
run.bat
app.exe -key 12345
pause
Вот тебе аналог сишного system("pause") program Project1; {$APPTYPE CONSOLE} {$R *.res} uses Windows, System.SysUtils; function SystemPause(const Prompt: AnsiString): Boolean; const EventCount = 128; var hStdIn, hStdOut: THandle; I: Integer; lpNumberOfBytesWritten, lpNumberOfEventsRead: Cardinal; InputRecords: array [0..EventCount - 1] of TInputRecord; begin hStdIn := GetStdHandle(STD_INPUT_HANDLE); hStdOut := GetStdHandle(STD_OUTPUT_HANDLE); Result := (hStdIn <> 0) and (hStdOut <> 0); if not Result then Exit; WriteFile(hStdOut, Prompt[1], Length(Prompt), lpNumberOfBytesWritten, nil); while ReadConsoleInput(hStdIn, InputRecords[0], EventCount, lpNumberOfEventsRead) do for I := 0 to lpNumberOfEventsRead - 1 do begin Result := (InputRecords[I].EventType = KEY_EVENT) and (InputRecords[i].Event.KeyEvent.bKeyDown); if Result then Exit end; end; begin SystemPause('Press any key to continue...'); end.
А этот код заработает из gui приложения? У меня консоль из vcl запускается
это надо в консоль добавить, если же в консоли этого кода нет, тогда чуть выше тебе набор компонент скинули который работает с консолью через пайп, вот через него и делай паузу
Обсуждают сегодня