Wie kann mein Programm feststellen, ob Delphi läuft?

8

Ich habe gehört, dass einige Autoren von benutzerdefinierten Komponenten eine RTL-Routine verwenden, die überprüft, ob Delphi läuft, um Shareware-Beschränkungen einzurichten. Weiß jemand, was diese Routine ist? Offensichtliche Namen wie "DelphiRunning" oder "IsDelphiRunning" zu überprüfen bringt nichts Nützliches.

    
Mason Wheeler 28.05.2009, 17:10
quelle

3 Antworten

18

Es gibt 2 verschiedene Ideen hier:
- Delphi läuft und läuft - Die Anwendung läuft unter dem Debugger

Die gängige Methode, um zu testen, ob Delphi ausgeführt wird , besteht darin, das Vorhandensein bekannter IDE-Windows mit einem bestimmten Klassennamen wie TAppBuilder oder TPropertyInspector zu überprüfen.
Diese 2 funktioniert in allen Versionen von Delphi IIRC.

Wenn Sie wissen möchten, ob Ihre Anwendung unter dem Debugger läuft , also normal von der IDE mit "Ausführen" (F9) gestartet oder während des laufenden Betriebs an den Debugger angehängt ist, müssen Sie es einfach tun Testen Sie die globale Variable DebugHook.
Beachten Sie, dass "Detach from program" den DebugHook-Wert nicht entfernt, aber "Attach to process" setzt es.

%Vor%

Wenn die Verwendung einer Testversion Ihrer Komponente einschränken soll, wenn die Anwendung gerade entwickelt wird, haben beide Fehler :
- Versteckte Fenster mit dem richtigen Klassennamen / Titel können in der Anwendung enthalten sein - DebugHook kann manuell im Code eingestellt werden

    
François 28.05.2009, 18:54
quelle
3

Sie können DebugHook & lt; & gt; 0 von Ihrem Komponentencode. DebugHook ist eine globale Variable (IIRC, es befindet sich in der Systemeinheit), die von der IDE von Delphi / RAD Studio festgelegt wird und von woanders nicht festgelegt werden konnte.

Es gibt andere Techniken (FindWindow () für TAppBuilder zum Beispiel), aber DebugHook nimmt all die Arbeit daraus.

    
Ken White 28.05.2009 17:16
quelle
1
Moayad Mardini 28.05.2009 17:15
quelle

Tags und Links