вторник, 27 августа 2013 г.

Определяем, что запущенный процесс написан на Delphi

Если программа написана на Delphi и использует модуль Controls, то при её запуске будет создан глобальный атом вида
'Delphi[восьмизначный идентификатор процесса (PID)]'.
Таким образом чтобы проверить написан ли запущенный процесс с использованием Delphi (модуля Controls) достаточно проверить наличие атома с соответствующим идентификатором процесса:
  ShowMessage(
    BoolToStr(
      GlobalFindAtom(
        PChar(Format('Delphi%.8X', [StrToInt(Edit1.Text)]))
      ) <> 0
    , True)
    );

Естественно можно написать программу и без использования Controls. В таком случае можно проверить поле TimeDateStamp PE заголовка программы - для программ написанных на Delphi он равен $2A425E19 (19.06.1992 22:22:17)