![]() |
|
#1
|
||||
|
||||
![]() Привет всем.
У меня такой вопрос . Как сделать так что бы в эдите вводиш команду cmd например ping www******* , и получаешь результат на основе которого можно сделать какое нибуть условие ?? |
#2
|
||||
|
||||
![]() Используй парсер.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
![]() кажется Ping в результате своей работы изменяет переменную среды ERROR_RESULT.
...сказал, и загрустил от бесспорной своей правоты |
#4
|
||||
|
||||
![]() есть компонентик FPiete
Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
#5
|
||||
|
||||
![]() вот я нарыл процедурку на кмд я вообще тут ничего не понимаю что к чему и вообще какой смысл и какой алгорит
можете мне пожалуйсто последовательно расказать что тут написанно ?? Код:
procedure RunDosInMemo(CmdLine:String;AMemo:TMemo); const ReadBuffer = 2400; var Security : TSecurityAttributes; ReadPipe,WritePipe : THandle; start : TStartUpInfo; ProcessInfo : TProcessInformation; Buffer : Pchar; BytesRead : DWord; Apprunning : DWord; WasOK : Boolean; begin Screen.Cursor:=CrHourGlass; With Security do begin nlength := SizeOf(TSecurityAttributes); binherithandle := true; lpsecuritydescriptor := nil; end; if Createpipe (ReadPipe, WritePipe, @Security, 0) then begin Buffer := AllocMem(ReadBuffer + 1); FillChar(Start,Sizeof(Start),#0); start.cb := SizeOf(start); start.hStdOutput := WritePipe; start.hStdInput := ReadPipe; start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW; start.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(CmdLine), nil,//@Security, nil,//@Security, true, NORMAL_PRIORITY_CLASS, nil, nil, start, ProcessInfo) then begin CloseHandle(WritePipe); Apprunning := WaitForSingleObject (ProcessInfo.hProcess,100); try repeat WasOK:=ReadFile(ReadPipe,Buffer[0], ReadBuffer,BytesRead,nil); Buffer[BytesRead]:= #0; OemToAnsi(Buffer,Buffer); AMemo.Text := AMemo.text + String(Buffer); Application.ProcessMessages; until (not WasOK) or ( BytesRead = 0 ); finally CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; end; FreeMem(Buffer); CloseHandle(ReadPipe); end; Screen.Cursor:=CrDefault; end; procedure TForm1.Button1Click(Sender: TObject); begin RunDosInMemo(edit1.Text,Form1.Memo1); end; end. |
#6
|
|||
|
|||
![]() Написано, что эта процедура создает процесс и пайпы, через которые перехватывает консольный вывод программы, заданной в параметре cmd, и выводит его в TMemo, заданный в параметре AMemo.
|