daMMned
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ребят, может кто подскажет. Возникла проблема. Запускаю 3d Mark 06 с помощью CreateProcess Код: function Tfrm_Main.TestRunner(const FileName, Params: String; const WinState: Word):boolean; var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; CmdLine: String; begin CmdLine := '"' + Filename + '" ' + Params; with StartInfo do begin FillChar(StartInfo, SizeOf(StartInfo), #0); cb := SizeOf(StartInfo); end; if FileExists (filename)=false then ShowMessage('Не найден файл '+filename) else begin Result := CreateProcess(nil, PChar(String(cmdline)), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar(String(ExtractFilePath(Filename))),StartInfo,ProcInfo); if Result=true then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end; end; end; | проблема в следующем: если компьютер только что загрузился, или я не запускал 3dMark с помощью своей программы, то когда я его запускаю (вызываю сию финкцию), он зависает при первом запуске, и то, при условии, что на Windows XP стоит IE7. Под Вистой всегда все нормально, и с Windows XP SP2 с IE6 тоже. Обнаружил, что если закомментировать waitForSingleObject, и все что после него (CloseHandle), то все запускается нормально всегда. Если использовать ShellExecute - тоже все нормально. Соль в том, что мне нужно дождаться, когда 3dMark сам завершится (чтобы выполнять след. действия). Кто можь подскажет, в чем проблема? | Всего записей: 68 | Зарегистр. 07-11-2005 | Отправлено: 08:11 20-02-2008 | Исправлено: daMMned, 08:21 20-02-2008 |
|