Autor Beitrag
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Do 08.11.07 14:06 
Hallo alle,

gibt es eine Möglichkeit, dass ein Delphi-Programm erkennen kann, ob es in der IDE gestartet wurde (F9) oder ob es standalone läuft?

Beste Grüße
Tastaro
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1322
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Do 08.11.07 16:55 
Die einfachste Möglichkeit besteht darin einfach einen Parameter an dein Programm zu übergeben wenn du es über die IDE startest.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Mitmischer 1703
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Do 08.11.07 17:09 
Wie geht das?

_________________
Die Lösung ist nicht siebzehn.
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Do 08.11.07 17:39 
Ähm, Start->Parameter...
Stichwort ParamStr und ParamCount

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Mitmischer 1703
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Do 08.11.07 17:41 
In FoSu guck ich! :les:

_________________
Die Lösung ist nicht siebzehn.


Zuletzt bearbeitet von Mitmischer 1703 am Do 08.11.07 20:16, insgesamt 1-mal bearbeitet
Tastaro Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Do 08.11.07 17:59 
user profile iconSinspin hat folgendes geschrieben:
Die einfachste Möglichkeit besteht darin einfach einen Parameter an dein Programm zu übergeben wenn du es über die IDE startest.


Klar geht das. Aber es soll nicht nur bei mir funktionieren sondern auch bei meinen Kollegen. Und das ohne, dass man vergessen kann den Parameter anzugeben.

Beste Grüße
Tastaro
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Do 08.11.07 18:13 
Vielleicht einfach kontrollieren, ob der IDE-Prozess existiert?
Tastaro Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Do 08.11.07 18:24 
user profile iconWolle92 hat folgendes geschrieben:
Vielleicht einfach kontrollieren, ob der IDE-Prozess existiert?


Das reicht leider nicht. Denn die IDE kann ja laufen obwohl ich das Programm nicht aus der IDE gestartet habe.

Beste Grüße
Tastaro
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Do 08.11.07 18:32 
Letzte Änderung mit aktueller Zeit vergleichen?
Bei maximal 1 Minute Abweichung kann man mit ziemlicher Sicherheit davon ausgehen, dass es mit dem Debugger gestartet wurde, da es dann ja erst grade kompiliert wurde...

Oder gibt es vielleicht eine Möglichkeit, dass man die Caption eines fremden Fensters eines fremden Prozesses lesen kann? Wenn es grad am Debuggen ist, steht nämlich Running drin...
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Do 08.11.07 18:37 
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 08.11.07 19:05 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function IsDebuggerPresent: Boolean;
begin
  Result := DebugHook <> 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
if IsDebuggerPresent then Label1.caption:='in Delphi' else Label1.caption:='not in Delphi';
end;
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 10.11.07 14:18 
Prüf einfach ob ein INT 03h ne Exception wirft ;-)

Es gibt aber für nahezu jeden Debugger-Check inzwischen zahlreiche Möglichkeiten, diesen zu umgehen.

DebugHook: Einfach Nillen ;-) ...
IsDebuggerPresent: Einfach das TLS ändern ;-) ...
Parameter-Check: Einfach noppen :P ...
Datum\Uhrzeit: Erzeugt sowieso false positives :nixweiss: ... Ist daher kein Schutz ...
IDE-Prozess prüfen: Noppt man einfach die Prüfung raus oder ändert den hardcodierten Namen :mrgreen: ...
Parent-Prozess-Prüfung: Siehe vorigen Punkt 8) ...

Und nun bitte zu den ernsthaften Vorschlägen! :twisted:

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 10.11.07 14:37 
Ich glaube user profile iconTastaro geht es weniger darum, dass man die Überprüfung nicht umgehen kann, sondern darum, dass z.B. beim Debuggen zusätzliche Debug-Informationen ausgegeben werden o.ä.
Tastaro Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Mo 19.11.07 14:30 
Hallo alle,

das mit dem DebugHook ist genau das was ich brauchte.
Vielen Dank für den Tipp.

Chryzler hatte recht: Es geht mir nicht darum die Software irgendwie zu schützen sondern noch einen zusätzlichen Button mit bestimmter Funktionalität anzuzeigen wenn das Programm aus der IDE gestartet wird.

Danke an alle die versucht haben mir zu helfen.

Beste Grüße
Tastaro