Определение работы Delphi III
function DelphiLoaded : boolean; { Определение работающей Delphi. Во всяком случае, дает правильный результат если Delphi минимизирован, или имеет открытый проект. Также, правильный результат получается, если вызывающее приложение автономно, или запущено из-под IDE. Код написан на основе идей Wade Tatman wtatman@onramp.net - Mike O'Hanlon, The Pascal Factory, найденных в Delphi-Talk List. } function WindowExists(ClassName, WindowName: string): boolean; { Проверяем наличие определенного окна Window, используя для этого паскалевские строки вместо PChars. } var PClassName, PWindowName: PChar; AClassName, AWindowName: array[0..63] of char; begin if ClassName = '' then PClassName := nil else PClassName := StrPCopy(@AClassName[0], ClassName); if WindowName = '' then PWindowName := nil else PWindowName := StrPCopy(@AWindowName[0], WindowName); if FindWindow(PClassName, PWindowName) <> 0 then WindowExists := true else WindowExists := false; end; {WindowExists} begin {DelphiLoaded} DelphiLoaded := false; if WindowExists('TPropertyInspector', 'Object Inspector') then if WindowExists('TMenuBuilder', 'Menu Designer') then if WindowExists('TApplication', 'Delphi') then if WindowExists('TAlignPalette','Align') then if WindowExists('TAppBuilder','') then DelphiLoaded := true; end; {DelphiLoaded} |
Следующая программа возвращает TRUE при запуске в Delphi IDE (ПРИМЕЧАНИЕ: это _не_ сработает, если подпрограмма в DLL).
function InIDE: Boolean; begin Result := Bool(PrefixSeg) and Bool(PWordArray(MemL[DSeg:36])^[8])); end; { InIDE } |
[001442]