Определение работы в Delphi IDE

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

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 }

{/codecitation}

Добавить комментарий