![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FileExecuteWait [D6]
бобёр © (2002-11-18 18:14:00)Кто нибудь может объяснить в чём различие между двумя следующими вариантами использования FileExecuteWait:
1) FileexecuteWait("pgp.exe","-kv > D:\key.txt","",sw_Hide);
2) FileexecuteWait("D:\test.bat","","",sw_Hide);
Содержимое test.bat
pgp.exe -kv > D:\key.txt
2-й вариант работает, а первый нет. В чём может быть ошибка?
Андрей Прокофьев (2002-11-18 19:21:00) [1]а если CMD.EXE
Anatoly Podgoretsky (2002-11-18 19:20:00) [2]Путь до "С:\COMMAND.COM" автоматически прописан в системе, зато самого "С:\COMMAND.COM" может не быть.
Marcus (2002-11-18 19:19:00) [3]А если ты напишешь просто "COMMAND.COM", она и будет искать сначала в текущем каталоге, а если обломается, то полезет в PATH...
бобёр (2002-11-18 19:17:00) [4]FileexecuteWait("С:\COMMAND.COM","/C pgp.exe -kv > D:\key.txt","",sw_Hide);
Так работает.
Как вместо С:\COMMAND.COM поставить тот путь что прописан в PATH, и в котрых ищет винда файлы по Path. (Хотелось бы чтобы прога была переносная и не зависела от местоположения COMMAND.COM)
Anatoly Podgoretsky (2002-11-18 19:14:00) [5]Перенаправление занимается командный процессор
Marcus (2002-11-18 19:09:00) [6]Сделай проще:
function CreateProcessAndWait(AppName: PChar; const CmdLine: string; WorkDir: PChar): boolean;
var
si: STARTUPINFO;
pi: PROCESS_INFORMATION;
begin
ZeroMemory(@si, SizeOf(si));
si.cb := SizeOf(si);
si.dwFlags := STARTF_USESHOWWINDOW;
si.wShowWindow := SW_HIDE;
Result := CreateProcess(nil, PChar(Format(""%s" "%s"", [AppName, CmdLine])), nil, nil, FALSE,
NORMAL_PRIORITY_CLASS, nil, WorkDir, si, pi);
if Result then begin
WaitForSingleObject(pi.hProcess, INFINITE);
end;
CloseHandle(pi.hProcess);
end;
Song (2002-11-18 18:54:00) [7]Надо смотреть FileExecuteWait()
Андрей Прокофьев (2002-11-18 18:53:00) [8]
FileexecuteWait("С:\COMMAND.COM","/C pgp.exe -kv > D:\key.txt","",sw_Hide);
бобёр (2002-11-18 18:51:00) [9]После вызова функции
GetLastError=6
Внутри ExitCode=15
FileexecuteWait("","pgp.exe -kv > D:\key.txt","",sw_Hide);
не помогает. ExitCode при таком варианте = 1242792
При отработке через батник ExitCode=0
Marcus (2002-11-18 18:20:00) [10]Спроси GetLastError. Или попробуй так:
FileexecuteWait("","pgp.exe -kv > D:\key.txt","",sw_Hide);