Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Delphi entwicklungs umgebung (https://www.delphipraxis.net/119474-delphi-entwicklungs-umgebung.html)

EWeiss 27. Aug 2008 03:18


Delphi entwicklungs umgebung
 
Wie kann ich feststellen ob ich mich in der Delphi Entwicklungs Umgebung befinde.
Der Hintergrund .. möchte das Registrieren von Keys nur zulassen wenn das
Programm als eigenständige Exe läuft.

Da ich ansonsten nicht mehr den Quelltext vernünftig debuggen kann
weil die Tasten außer Funktion gesetzt wurden (bzw.. Funktionen im EXE-Programm steuern)

gruss Emil

RWarnecke 27. Aug 2008 04:30

Re: Delphi entwicklungs umgebung
 
Moin Emil,

könnte dieser Link nicht etwas für Dich sein.

himitsu 27. Aug 2008 04:40

Re: Delphi entwicklungs umgebung
 
oder wenn dir was Aktuelleres, von vor nichmal 6 Stunden (aktuell sogar noch auf Mitte der 1. Seite der aktuellen Themen), genehm wäre ...
http://www.delphipraxis.net/internal...t.php?t=141059

EWeiss 27. Aug 2008 05:13

Re: Delphi entwicklungs umgebung
 
Danke euch :)
Habe mich mal dafür entschieden

Delphi-Quellcode:
function IsDebuggerPresent: boolean; stdcall;
asm
  MOV    EAX, FS:[030H]
  TEST   EAX, EAX
  JS     @@W9X
@@WNT:
  MOV EAX, FS:[$18]
  MOV EAX, [EAX+$30]
  MOVZX EAX, [EAX+2]
  RET
@@W9X:
  MOV EAX, [$BFFC9CE4]
  MOV ECX, [EAX]
  CMP [ECX+$54], 00000001 
  SBB EAX, EAX
  INC EAX
  RET
end;
Innerhalb der IDE scheint es zu funktionieren

gruss Emil

Luckie 27. Aug 2008 09:22

Re: Delphi entwicklungs umgebung
 
Ähm, der Code "springt" aber auch "an", wenn ein Debugger mit deinem Prozessverbunden ist. Für Komponenten gibt es einen Componentenstate, der dir sagt, ob du dich in der IDE befindest oder nicht.

Warum musst du dass denn wissen?

EWeiss 27. Aug 2008 09:32

Re: Delphi entwicklungs umgebung
 
Zitat:

Zitat von Luckie
Ähm, der Code "springt" aber auch "an", wenn ein Debugger mit deinem Prozessverbunden ist. Für Komponenten gibt es einen Componentenstate, der dir sagt, ob du dich in der IDE befindest oder nicht.

Warum musst du dass denn wissen?

Es werden innerhalb des Quellcode (nicht von mir) die keys neu definiert.
Danach habe ich keinen zugriff mehr auf die Tasten um die zeilen durchzugehen beim debuggen.

Auszug:

Shortcut_1=F8
Shortcut_2=F7
Shortcut_3=F9

steht in der INI...

Delphi-Quellcode:
procedure ShortCut_SetupHotkey(Sender: TObject);
begin
  SetHotkey(Form1.Handle,1,ShortCut_1);
  SetHotkey(Form1.Handle,2,ShortCut_2);
  SetHotkey(Form1.Handle,3,ShortCut_3);
Code:
function SetHotkey(aHandle:THandle; HotkeyID:cardinal; Shortcut:TShortcut; AutoRegister:boolean=true):boolean;
var
   Key: Word;
   Shift:TShiftstate;
   Modifiers:integer;
begin
   result:=false;
   if Shortcut = 0 then exit;

   Modifiers:=0;
   Unregisterhotkey(aHandle,HotkeyID);

   ShortCutToKey(ShortCut, Key, Shift);  // unit Menus;
   if ssCtrl in Shift then Modifiers:=MOD_CONTROL;
   if ssAlt in Shift then Modifiers:=Modifiers or MOD_ALT;
   if ssShift in Shift then Modifiers:=Modifiers or MOD_SHIFT;
   if AutoRegister then
       result:=RegisterHotKey(aHandle, HotkeyID, Modifiers, Key)
       else
       result:=true;
end;
wie schon gesagt ist nicht von mir muss aber damit leben.
Was das debuggen extrem erschwert oder gar unmöglich macht.

gruss Emil

stahli 27. Aug 2008 10:01

Re: Delphi entwicklungs umgebung
 
Ich benutze:

if DebugHook = 0 then...


stahli


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