Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.10.2014, 17:38
draginimp draginimp вне форума
Прохожий
 
Регистрация: 02.04.2014
Сообщения: 37
Версия Delphi: delphi 7
Репутация: 10
По умолчанию Работа с командной строкой

Друзья, подскажите!
Суть есть скрипт, от которого я получаю данные.

ПУТЬ ПРОГРАММЫ + ПАРАМЕТР
ОТВЕТ
В командной строке это выглядит так:
Код:
\\dom\php.cmd 2123
45514

Так вот, мне надо научится обращаться к скрипту из Дельфи. А ответ забивать в переменную.
Ответить с цитированием
  #2  
Старый 24.10.2014, 23:16
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Пример из 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  
Старый 27.10.2014, 12:59
draginimp draginimp вне форума
Прохожий
 
Регистрация: 02.04.2014
Сообщения: 37
Версия Delphi: delphi 7
Репутация: 10
По умолчанию Спасибо, маленько не получается ))

запускаю пинг все ок
Код:
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  
Старый 28.10.2014, 06:59
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от draginimp
...в командной строке все работает...
Это в смысле если в неё "ручками" всё это забивать что-ли? Интересно, а через WinExec(Ex) такое прокатит
Код:
...
WinExec(PAnsiChar( {$path} '\..\dom\php\php.exe \..\dom\php\dt.php 9754'), SW_SHOWNORMAL);
...
Ответить с цитированием
  #5  
Старый 28.10.2014, 09:43
draginimp draginimp вне форума
Прохожий
 
Регистрация: 02.04.2014
Сообщения: 37
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Нет, запускается только до пробела.
Запускается только сам EXE.
Если в командную строку вбивать, то все работает.

Последний раз редактировалось draginimp, 28.10.2014 в 10:20.
Ответить с цитированием
  #6  
Старый 28.10.2014, 12:39
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Извнт, почти не сталкивался с пиэйчипой, не судьба была как-то ПХП юзать а если WinExecEx() задействовать, без первого акта марлезонского балету (без вызова самого php.exe) в смысле пусть винда сама определит открывателя файла dt.php с вашими параметрами, не поможет такое?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:51.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter