Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запуск программы из под IDE. Проблемы..


Страницы:   1 2

jack128 ©   (2004-09-08 04:14:00) 

Мдя.. На такую фигню сейчас наткнулся:

Есть несколько досовских программ, их нужно запустить из моей программы. Все очень просто - CreateProcess, и вперед и с песнями..
Запускаю с помощью такой функции:

 function RunAndWait(FileName: string): Cardinal;
 var
   si: TStartupInfo;
   pi: TProcessInformation;
 begin
   ZeroMemory(@si, SizeOf(si));
   si.cb := SizeOf(si);
   Win32Check(CreateProcess(nil, PChar(FileName), nil, nil, False, 0, nil,
     PChar(ExtractFilePath(FileName)), si, pi));
   try
     CloseHandle(pi.hThread);
     if WaitForSingleObject(pi.hProcess, INFINITE) <> WAIT_OBJECT_0 then
       RaiseLastWin32Error;
     Win32Check(GetExitCodeProcess(pi.hProcess, Result));
   finally
     CloseHandle(pi.hProcess);
   end;
 end;


Так вот, если я запускаю свою программу из под IDE и в ней вызываю эту функцию, то досовская прога аварийно завершается со словами: "Процессор NTDVM обнаружел недопустимую инструкцию. CS:040a IP:0569 OP:8d f3 03 b7 00 Для завершения работы приложения нажнмите кнопку "Закрыть"" И 2 кнопки - Закрыть и Пропустить..  В тоже время есть я свою прогу запускаю из Эксплоерера, то все работает нормально...  Может кто знает, чем причина??


GuAV   (2004-09-08 21:07:00) [21]


> я запускаю свою программу из под IDE

В интерированном отладчике дело или нет?
если Tools->Debugger Options->Integrated debuggingвыкл, то что тогда ?

зы [7] - маловероятно, написал не заметив


> своюпрогу запускаю из Эксплоерера


GuAV   (2004-09-08 20:54:00) [22]

При попытке дизасемблирования ShellExecuteEx выяснено, что заместо 0 использваны следующие флаги:

CREATE_DEFAULT_ERROR_MODE
CREATE_NEW_PROCESS_GROUP
CREATE_NEW_CONSOLE  // при каких-то обстоятельствах, каких - не разбрал.

Имхо дело в этих флагах.


VMcL   (2004-09-08 15:27:00) [23]

>> jack128 ©  (08.09.04 13:43) [3]

Кстати, независимо от того, запускаешь ли ты через PIF или напрямую через EXE/COM, Windows запускает через одноименный PIF, если он, конечно, есть.


jack128   (2004-09-08 14:41:00) [24]

VMcL ©   (08.09.04 13:49) [4]
нет. Тут вообще ни одной проги не прописано. Только внешний вид консоли.


VMcL   (2004-09-08 13:49:00) [25]

>> jack128 ©  (08.09.04 13:43) [3]

Посмотри сюда, здесь нет записи о твоей программе?
HKEY_CURRENT_USER\Console


jack128   (2004-09-08 13:43:00) [26]

Digitman ©   (08.09.04 9:05) [2]
вероятно, такое разное поведение связано с наличием или отсутствием соответствующих pif-файлов

В смысле?? pif'ов нету нигде. И потом, я же не pif запускаю, а непосредственно EXE.


Digitman   (2004-09-08 09:05:00) [27]

вероятно, такое разное поведение связано с наличием или отсутствием соответствующих pif-файлов


jack128   (2004-09-08 04:19:00) [28]

Да. Аварийно завершаются не ВСЕ досовские проги, а только некоторые(точнее пока одна, но нет гарантии, что остальные так себя не будут вести..)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо