RSS
 

 

Как определить, что программа запущенна из-под IDE Delphi?

10 Ноя

При проектировании приложений бывает нужно определить в режиме run time, запущена ли программа из под IDE Delphi или обычным способом.

Есть много описанных в сети способов  решения данного вопроса. Проверка родительского процесса, поиск определенного окна и много других.

Я нашел  самый простой и наиболее действенный из них. хотя и не без недостатков

Как же определить, что программа запущенна из-под IDE Delphi?

В модуле System есть интересная системная переменная:

  DebugHook: Byte platform = 0;        { 1 to notify debugger of non-Delphi exceptions
                                >1 to notify debugger of exception unwinding }

Используя эту переменную можно и определить запушено ли приложение из под отладчика.

Предлагаю как всегда, как дополнение к полезным функциям библиотеки ZFunctions. Ниже приведен код функции которая определят запущена ли программа из под отладчика IDE Delphi или любого другого:

unit ZFunctions;
...
 
function RunningFromIDE: Boolean;
...
implementation
...
function RunningFromIDE: Boolean;
begin
  {$IFDEF LINUX}
    Result := False;
  {$ELSE}
    Result := (DebugHook > 0);
  {$ENDIF}
end;
...

По моему проще и не бывает...

Однако данный метод имеет недостатки.

Недостатки:
1. Реагирует на любой отладчик, не только среду Delphi
2. Почему то считает запуск в среде VirtualBox тоже, как запуск из под отладчика (другие виртуалки не проверял).


 
 

Метки: , , , , 10.11.2011