|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа с командной строкой
Друзья, подскажите!
Суть есть скрипт, от которого я получаю данные. ПУТЬ ПРОГРАММЫ + ПАРАМЕТР ОТВЕТ В командной строке это выглядит так: Код:
\\dom\php.cmd 2123 45514 Так вот, мне надо научится обращаться к скрипту из Дельфи. А ответ забивать в переменную. |
#2
|
||||
|
||||
Пример из drkb (02101)
Код:
procedure RDM(CmdLine:string; AMemo:TMemo); const ReadBuffer = 2400; var Security: TSecurityAttributes; ReadPipe, WritePipe: THandle; Start: TStartUpInfo; ProcessInfo: TProcessInformation; Buffer: Pchar; BytesRead, Apprunning: DWord; begin 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), @Security, @Security, true, NORMAL_PRIORITY_CLASS, nil, nil, Start, ProcessInfo) then begin repeat Apprunning:= WaitForSingleObject(ProcessInfo.hProcess,100); ReadFile(ReadPipe, Buffer[0], ReadBuffer, BytesRead, nil); Buffer[BytesRead]:= #0; OemToAnsi(Buffer, Buffer); AMemo.Text:= AMemo.text + String(Buffer); until (Apprunning <> WAIT_TIMEOUT); end; FreeMem(Buffer); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); CloseHandle(ReadPipe); CloseHandle(WritePipe); end; end; Код:
RDM('\\dom\php.cmd 2123', Memo1); Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
draginimp (27.10.2014)
|
#3
|
|||
|
|||
Спасибо, маленько не получается ))
запускаю пинг все ок
Код:
RunDosInMemo('ping -t 192.168.28.200',Memo1); Код:
RunDosInMemo('\\dom\php\php.exe \\dom\php\dt.php 9754', memo1); Я думал, что проблема в пробелах, но вроде нет. Мне кажется, что я не правильно обращаюсь к командной строке из делфи Есть стойкое ощущение, что после .ехе, ничего больше не выполняется, то есть не принимает после пробела. пробовал Код:
RunDosInMemo('"\\dom\php\php.exe \\dom\php\dt.php 9754"', memo1); Последний раз редактировалось draginimp, 27.10.2014 в 16:36. |
#4
|
||||
|
||||
Цитата:
Код:
... WinExec(PAnsiChar( {$path} '\..\dom\php\php.exe \..\dom\php\dt.php 9754'), SW_SHOWNORMAL); ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
Нет, запускается только до пробела.
Запускается только сам EXE. Если в командную строку вбивать, то все работает. Последний раз редактировалось draginimp, 28.10.2014 в 10:20. |
#6
|
||||
|
||||
Извнт, почти не сталкивался с пиэйчипой, не судьба была как-то ПХП юзать а если WinExecEx() задействовать, без первого акта марлезонского балету (без вызова самого php.exe) в смысле пусть винда сама определит открывателя файла dt.php с вашими параметрами, не поможет такое?
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |