Запустить консольное приложение и получить его стандартный вывод
- Что делать, если мышь уже дошла до края коврика, а курсор еще не дошел до края экрана?
Возможные ответы:
- перестать пользоватся мышью
- выбросить такой маленький коврик
- купить новый "экран"
- осторожно придерживая большим пальцем курсор мыши, двигать монитор
- прогнать драйвер мыши под отладчиком
- Windows СУКС, этот Билли даже мышь нормальную не может сделать, Linux forever!
- запустить антивирус!
- да у тебя просто руки кривые!
- сколько раз можно задавать один и тот же вопрос, предлагаю внести его в FAQ
- Е...! про мышей - это не к нам
{
This function runs a program (console or batch) and adds its output
to Memo1
}{....}privatefunction RunCaptured(const _dirName, _exeName, _cmdLine: string): Boolean;
{....}function TForm1.RunCaptured(const _dirName, _exeName, _cmdLine: string): Boolean;
var
start: TStartupInfo;
procInfo: TProcessInformation;
tmpName: string;
tmp: Windows.THandle;
tmpSec: TSecurityAttributes;
res: TStringList;
return: Cardinal;
begin
Result := False;
try{ Setze ein Temporares File }{ Set a temporary file }
tmpName := 'Test.tmp';
FillChar(tmpSec, SizeOf(tmpSec), #0);
tmpSec.nLength := SizeOf(tmpSec);
tmpSec.bInheritHandle := True;
tmp := Windows.CreateFile(PChar(tmpName),
Generic_Write, File_Share_Write,
@tmpSec, Create_Always, File_Attribute_Normal, 0);
try
FillChar(start, SizeOf(start), #0);
start.cb := SizeOf(start);
start.hStdOutput := tmp;
start.dwFlags := StartF_UseStdHandles or StartF_UseShowWindow;
start.wShowWindow := SW_Minimize;
{ Starte das Programm }{ Start the program }if CreateProcess(nil, PChar(_exeName + ' ' + _cmdLine), nil, nil, True,
0, nil, PChar(_dirName), start, procInfo) thenbegin
SetPriorityClass(procInfo.hProcess, Idle_Priority_Class);
WaitForSingleObject(procInfo.hProcess, Infinite);
GetExitCodeProcess(procInfo.hProcess, return);
Result := (return = 0);
CloseHandle(procInfo.hThread);
CloseHandle(procInfo.hProcess);
Windows.CloseHandle(tmp);
{ Die Ausgaben hinzufugen }{ Add the output }
res := TStringList.Create;
try
res.LoadFromFile(tmpName);
Memo1.Lines.AddStrings(res);
finally
res.Free;
end;
Windows.DeleteFile(PChar(tmpName));
endelsebegin
Application.MessageBox(PChar(SysErrorMessage(GetLastError())),
'RunCaptured Error', MB_OK);
end;
except
Windows.CloseHandle(tmp);
Windows.DeleteFile(PChar(tmpName));
raise;
end;
finallyend;
end;
// Example: procedure TForm1.Button1Click(Sender: TObject);
begin
RunCaptured('C:\', 'cmd.exe', '/c dir');
end;
Для запуска консольной приложения и получения ее стандартного вывода:
Вы можете создать новый форм в Delphi и добавить к нему кнопку. Затем вы можете написать код для события OnClick обработчика кнопки, который запустит функцию RunCaptured с необходимыми параметрами.
Этот код запустит команду dir в консоли и отобразит ее вывод в текстовом поле Memo1.
Чтобы запустить программу, вам нужно просто нажать на кнопку. Вывод программы будет отображаться в текстовом поле.
Если мышь достигла края экрана, а курсор все еще не находится у края экрана, это означает, что вам нужно снять руки с мыши!
Запустить консольное приложение и получить его стандартный вывод с помощью функции RunCaptured в Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.