Текущий архив: 2004.01.13;
Скачать: CL | DM;
ВнизКак под ХР запустить и дождаться завершения дос-приложения ? Найти похожие ветки
← →
Andrey V. (2003-12-29 13:21) [0]Как под ХР запустить bat файл или досовское приложение?
Делаю примерно так(под 98 это работает) :
Var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
cmdline : string;
SaveCursor : TCursor;
begin
result :=false;
SaveCursor :=Screen.Cursor;
Screen.Cursor:=crHourGlass;
try
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
//-----------------------
si.dwFlags:=STARTF_USESHOWWINDOW;
si.wShowWindow:=SW_HIDE;
//-----------------------
cmdline:="c:\somejob.bat";
if CreateProcess( nil,// Используем командную строку.
PChar(cmdline), // Командная строка.
nil,
nil, //
False, //
CREATE_SUSPENDED, // флаги создания
nil, // переменные окружения не меняем
nil, // текущая директория не изменна
si, // указатель на структуру STARTUPINFO .
pi ) // указатель на структуру PROCESS_INFORMATION .
then begin
Result:=True;
end;
WaitForSingleObject( pi.hProcess, INFINITE );
тут пробовал и WaitForSingleObject( pi.hProcess, 10000 );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
except
result:=false;
end;
Screen.Cursor := SaveCursor;
end;
не работает :(
← →
alex_*** (2003-12-29 13:47) [1]что неработает? не запускается? или не ждет?
← →
Andrey V. (2003-12-29 19:45) [2]Если стоит INFINITE - висит (ждет) беконечно долго, пока я его не прибью.
Если WaitForSingleObject( pi.hProcess, 10000 );
то ждет 10 сек и сваливает не выполнив работу , а работы там на 2 секунды. Там что-то типа arj x file.arj
пробовал cmdline:="arj x file.arj"- та же ерунда. Причем из среды все пускается и отрабатывает.
← →
Pat (2003-12-30 00:46) [3]>si.wShowWindow:=SW_HIDE;
Попробуй sw_show и посмотри закрывается ли у тебя окно по окончанию сеанса.
← →
Andrey V. (2003-12-31 08:58) [4]Если кому интиресно ,
надо ставить флаг CREATE_SEPARATE_WOW_VDM.
А в 98 - CREATE_SUSPENDED
Страницы: 1 вся ветка
Текущий архив: 2004.01.13;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.008 c