API - capturar a tela de saida de um programa DOS |
Top Previous Next |
procedure TForm1.Button1Click(Sender: TObject); var StartupInfo: TStartupInfo; ProcessInformation: TProcessInformation; rc : Boolean; Handle : THandle; begin GetStartupInfo(StartupInfo); // pega informação de início atual Handle := CreateFile('saida.txt',GENERIC_READ or GENERIC_WRITE,0,nil,CREATE_ALWAYS,0,0); // cria arquivo de saída // inicializa campos de StartupInfo with StartupInfo do begin // redireciona saída hStdOutput := Handle; // não mostra janela DOS wShowWindow := SW_HIDE; dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; end; // dispara processo rc := CreateProcess(nil, 'command.com /c dir', nil, nil, True, 0, nil, nil, StartupInfo, ProcessInformation); // Espera terminar o segundo parâmetro espera indefinidamente if rc then WaitForSingleObject(ProcessInformation.hProcess, INFINITE);
CloseHandle(Handle); // fecha arquivo de saída Listbox1.Items.LoadFromFile('saida.txt'); // le na listbox DeleteFile('saida.txt'); // apaga arquivo de saída end ; |