БОЛЬШОЙ FAQ ПО DELPHI



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


 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 }
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ