Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
ВнизWinExec и Ping Найти похожие ветки
← →
S46E © (2006-07-22 14:01) [0]WinExec(Pchar("ping 127.0.0.1 > c:\1.txt"), SW_show);
пишу в cmd "ping 127.0.0.1 > c:\1.txt" - работает.
пишу в Выполнить - не работает.
пишу в дельфи - тоже.
пишу "ping 127.0.0.1" - везде работает.
Задача: запустить из дельфи "ping 127.0.0.1 > c:\1.txt" что-бы пинг не ругался "Неверный параметр".
← →
Anatoly Podgoretsky © (2006-07-22 14:20) [1]Сам же пишешь, что пишешь в CMD, вот и в Дельфи также делай или перенаправляй потоки вывода. Символ переназначения обрабатывается командным процессором.
← →
Palladin © (2006-07-22 14:56) [2]символ > это фича коммандного процессора, который, запуская приложение, заменяет stdin на файл указанный после этого символа, ни winexec ни createprocess ни shellexecute естественно этот символ никак не обрабатывают и передают параметром приложению, ping конечно же будет ругаться на этот неизвестный параметр...
потому если хочешь записать вывод результата ping в файл, то придется организовать что то вроде этого...
Var
si:STARTUPINFO;
h:THandle;
pi:PROCESS_INFORMATION;
sa:SECURITY_ATTRIBUTES;
Begin
ZeroMemory(@si,sizeof(si));
With sa Do
Begin
nLength:= SizeOf(sa);
lpSecurityDescriptor:=Nil;
bInheritHandle:=BOOL(True);
End;
h:=CreateFile("c:\1.txt",GENERIC_WRITE,0,@sa,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,0);
With si do
Begin
cb:=SizeOf(si);
hStdOutput:=h;
hStdInput:=STD_INPUT_HANDLE;
hStdError:=STD_ERROR_HANDLE;
dwFlags:=STARTF_USESTDHANDLES;
End;
CreateProcess(nil,"ping 127.0.0.1",nil,nil,true,0,nil,nil,si,pi);
WaitForSingleObject(pi.hProcess,WAIT_OBJECT_0);
FileClose(h);
End;
хотя я так понимаю выполняешь ты это с целью последующего чтения из этого файла :) ну а вышеприведенный пример косвенно показывает, что можно обойтись и без файла... как? пусть это будет домашним заданием...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c