Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   IDE oder exe - Start erkennen? (https://www.delphipraxis.net/210269-ide-oder-exe-start-erkennen.html)

NoGAD 27. Mär 2022 17:34

IDE oder exe - Start erkennen?
 
Hallo, ich weiß leider nicht genau, wie ich den Titel beschreiben soll.


Ist es möglich zu erkennen, ob ein Programm per IDE gestartet ODER per Exe-Datei gestartet wurde?

LG Mathias

KodeZwerg 27. Mär 2022 17:54

AW: IDE oder exe - Start erkennen?
 
Es ist nur wage Beschrieben was Du Wissen möchtest.
Also innerhalb deiner .exe könntest Du Dir eine PID von deinem Programm abholen und prüfen was dessen Parent-PID ist falls Du verstehst was ich meine.

jaenicke 27. Mär 2022 18:05

AW: IDE oder exe - Start erkennen?
 
Ich denke einmal es genügt mit IsDebuggerPresent zu arbeiten. Das gibt zurück, ob das Programm im Debugger läuft.

Wenn man aus Delphi heraus ohne Debugger startet, gibt es aber natürlich False zurück. Das braucht man aber normalerweise auch nicht wissen.

NoGAD 27. Mär 2022 19:33

AW: IDE oder exe - Start erkennen?
 
Hallo Sebastian,


dein Hinweis war gut. Ich möchte einfach bei der Programmierung einige Optionen zusätzlich zum Debuggen nutzen.
Bisher habe ich das imemr über Stert - Parameter mittels Schalter gemacht und suchte eine andere Variante.

DebugHook ist dann sicherlich das, worauf Dein Hinweis hinausläuft?

Das hier https://entwickler-ecke.de/topic_Fes...t_78079,0.html habe ich dann gefunden.

Wenn ich nun aber eine programmweite, globale Variable definiere, wird die in der initialization - Sektion nicht berücksichtigt. Das heißt, DebugHook funktioniert dort gar nicht.

Wo sollte ich meine Variable also korrekt initialisieren?



Edit: Nachdem ich die Variable direkt in der Unit, in der ich sie deklariert habe, unter initialization zugewiesen habe, funktioniert es perfekt.

Vielen Dank!


LG Mathias

jaenicke 27. Mär 2022 21:02

AW: IDE oder exe - Start erkennen?
 
Du brauchst keine Variable oder irgendetwas anderes. Delphi bietet die Funktion IsDebuggerPresent (aus der Windows API) an. Du musst sie nur nutzen:
Delphi-Quellcode:
if IsDebuggerPresent then
  ShowMessage('Debug Meldung');
Du musst lediglich die Unit Winapi.Windows in deiner uses haben.

NoGAD 27. Mär 2022 22:42

AW: IDE oder exe - Start erkennen?
 
Dankeschön :-)

LG und eine schöne Woche!

jaenicke 28. Mär 2022 08:14

AW: IDE oder exe - Start erkennen?
 
Übrigens noch ein Tipp, auch für spätere Leser des Threads:
Auf diese Weise kann man auch einen Dienst debuggen. Dafür startet man die IDE mit Adminrechten, fügt nach dem begin in der .dpr oder in initialization eine Schleife, die auf den Debugger wartet, ein, startet den Dienst und verbindet sich damit. So kann man auch Probleme beim Starten eines Dienstes debuggen.
Delphi-Quellcode:
while not IsDebuggerPresent do
  Sleep(50);

freimatz 28. Mär 2022 09:02

AW: IDE oder exe - Start erkennen?
 
Zitat:

Zitat von NoGAD (Beitrag 1503989)
Ich möchte einfach bei der Programmierung einige Optionen zusätzlich zum Debuggen nutzen.
Bisher habe ich das imemr über Stert - Parameter mittels Schalter gemacht und suchte eine andere Variante.

In etlichen Bereichen der Softwareentwicklung benutzt man dazu FeatureFlags. Vielleicht wäre das ein Alternative.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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