Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programm innerhalb IDE gestartet? (https://www.delphipraxis.net/10211-programm-innerhalb-ide-gestartet.html)

Domino 13. Okt 2003 20:07


Programm innerhalb IDE gestartet?
 
Hallo DP,

wie kann man feststellen, ob ein Programm innerhalb der IDE gestartet wurde?

Gruß Domino

toms 13. Okt 2003 20:16

Re: Programm innerhalb IDE gestartet?
 
Hi!

Gib wahrscheinlich verschiedene Möglichkeiten, dies herauszufinden.

Hier mal eine Möglichkeit:

Delphi-Quellcode:
type
  TIsDebuggerPresent = function: BOOL;

function IsDebuggerPresent: Boolean;
var
  hKernel32: Integer;
  IsDebuggerPresent: TIsDebuggerPresent;
  VerInfo: TOsVersionInfo;
begin
  Result := False;
  VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo);
  GetVersionEx(VerInfo);
  if (VerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) and
    (VerInfo.dwMajorVersion >= 4) then
  begin
    hKernel32 := LoadLibrary('KERNEL32.DLL');
    if hKernel32 > 0 then
    begin
      IsDebuggerPresent := GetProcAddress(hKernel32, 'IsDebuggerPresent');
      if Assigned(IsDebuggerPresent) then
        Result := IsDebuggerPresent;
      FreeLibrary(hKernel32);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsDebuggerPresent() = True then
    ShowMessage( 'Debugger or IDE entdeckt' )
  else
    ShowMessage( 'Debugger or IDE NICHT entdeckt' );
end;

APP 13. Okt 2003 20:18

Re: Programm innerhalb IDE gestartet?
 
Hallo

ich würde es so machen:

Delphi-Quellcode:
   
FUNCTION inIDE: Boolean;
   BEGIN
      // Klassenname von Delphi is TAppbuilder
      Result := FindWindow('TAPPBUILDER', NIL) <> 0;
   END;

toms 13. Okt 2003 20:30

Re: Programm innerhalb IDE gestartet?
 
Die Function inIDE ist aber nicht unbedingt sicher,
d.h kann leicht ausgetrickst werden.

APP 13. Okt 2003 20:40

Re: Programm innerhalb IDE gestartet?
 
Hallo toms,

da hast Du natürlich Recht, Deine Funktion ist total sophisticated,
aber wer denkt bei obiger Fragestellung schon etwas Böses :mrgreen: :mrgreen:

Falls Domino Komponenten oä. nur in der IDE lauffähig anbieten möchte
(z.B. als Shareware), dann ist meine Lösung unsicher, zum schnellen
Auffinden ob IDE oder nicht aber kürzer :zwinker:

Daniel B 13. Okt 2003 20:40

Re: Programm innerhalb IDE gestartet?
 
Zitat:

Zitat von toms
Die Function inIDE ist aber nicht unbedingt sicher,
d.h kann leicht ausgetrickst werden.

Na Klar, aber von wem?

toms 13. Okt 2003 20:42

Re: Programm innerhalb IDE gestartet?
 
Zitat:

Falls Domino Komponenten oä. nur in der IDE lauffähig anbieten möchte
(z.B. als Shareware), dann ist meine Lösung unsicher
That's the point.

Domino 14. Okt 2003 08:49

Re: Programm innerhalb IDE gestartet?
 
Hallo toms,
vielen Dank für Deine Lösung.
Mir ist noch eine Möglichkeit eingefallen: Beim Start innerhalb der IDE einen Parameter mitgeben und diesen auswerten.
Hintergrund der Fragestellung: eine Dll zur Kommunikation mit einer S7-Steuerung funktioniert nicht in der Entwicklungsumgebung von Delphi !?!. Für die Entwicklungsumgebung gibt es eine abgespeckte Version. Daher muss ich die entsprechende Dll zur Laufzeit dynamisch einbinden..

Gruß
Domino

toms 14. Okt 2003 10:07

Re: Programm innerhalb IDE gestartet?
 
Zitat:

Beim Start innerhalb der IDE einen Parameter mitgeben und diesen auswerten.
Für deinen Fall wäre das sicher eine angemessene Lösung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz