Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Probleme mit Hooks (https://www.delphipraxis.net/34539-probleme-mit-hooks.html)

Alex_ITA01 24. Nov 2004 14:12


Probleme mit Hooks
 
Hallo erstmal,
habe grade angefangen mich mit Hooks zu beschäftigen und würde ganz einfach gerne in einem Label auf meiner Form, die MousePosition ausgeben.Egal ob sich die Maus auf meiner Form oder im Nirvana (Sprich irgendwo auf dem Desktop) befindet. Könnt ihr mir da ein Beispiel zeigen wie ich das realisiere?
Ehrlich gesagt komme ich mit den vorhanden Tutorials nicht zurecht...
Ich hoffe ihr könnt mir da helfen?!!

MFG Alex

Ultimator 24. Nov 2004 14:17

Re: Probleme mit Hooks
 
Für das mit der Mausposition brauchst du keinen Hook ;-)
dafür kannst du Delphi-Referenz durchsuchenGetCursorPos benutzen ;-)

jim_raynor 24. Nov 2004 14:18

Re: Probleme mit Hooks
 
Nimm einen Timer stell den auf 50ms oder so und lese über Mouse.CursorPos die Position der Maus aus ;)

Dafür braucht man noch keine Hooks.

Alex_ITA01 24. Nov 2004 14:23

Re: Probleme mit Hooks
 
ja ich weiß das es mit Timer geht, aber ich will das eben versuchen mit Hooks zu realisieren weil dann später ja mehr dazu kommt. Und bei den späteren Vorstellungen von mir reichen die Timer nicht mehr...
Trotzdem danke für die Antworten

MFG Alex

czapie 24. Nov 2004 14:29

Re: Probleme mit Hooks
 
Hast du dir schonmal die Tutorials von Assarbad angeguckt?
Assarbad

Alex_ITA01 24. Nov 2004 14:34

Re: Probleme mit Hooks
 
ja habe ich schon angeguckt nur weiß ich nicht so recht, wo der Fehler in meinem Prog ist?!!

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure WMNCHITTEST(var Message: TWMMouseMove); message WM_NCHITTEST;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;  
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  hMouseHook: HHOOK;

function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): Integer; stdcall;

implementation

{$R *.dfm}

function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): Integer; stdcall;
var
  CTRLID : Word;
begin
  case nCode < HC_ACTION of
    True: Result := CallNextHookEx(hMouseHook,nCode,wParam,lParam);
  else
    CTRLID := GetDlgCtrlID(PMOUSEHOOKSTRUCT(lParam)^.hwnd);
    //if CTRLID <> 0 then
    begin
      SendMessage(Application.Handle,WM_MOUSEMOVE,wParam,lParam);
    end;
    Result := CallNextHookEx(hMouseHook,nCode,wParam,lParam);
  end;
end;

procedure TForm1.CMMouseEnter(var Message: TMessage);
begin
end;

procedure TForm1.CMMouseLeave(var Message: TMessage);
begin
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Self.Top := 0;
  hMouseHook := SetWindowsHookEx(WH_MOUSE,@MouseHookProc,0,GetCurrentThreadId());
end;

procedure TForm1.WMNCHITTEST(var Message: TWMMouseMove);
begin
  inherited;
  Label1.Caption := IntToStr(Message.XPos) + ' x ' + IntToStr(Message.YPos);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnhookWindowsHookEx(hMouseHook);
end;

procedure TForm1.WMMouseMove(var Message: TWMMouseMove);
begin
  Label1.Caption := IntToStr(Message.XPos) + ' x ' + IntToStr(Message.YPos);
end;

end.

Ultimator 24. Nov 2004 14:39

Re: Probleme mit Hooks
 
Wie immer die Frage: Was passiert bzw. was passiert nicht? :roll:

Alex_ITA01 24. Nov 2004 14:40

Re: Probleme mit Hooks
 
er zeigt mir nur die MousePos an, wenn ich über dem Formular bin. Ich möchte aber auch alle anderen Positionen außerhalb meiner Anwendung. Und das zeigt er nicht an (in dem Label)

Luckie 24. Nov 2004 14:46

Re: Probleme mit Hooks
 
Ist der Hook in einer DLL?

czapie 24. Nov 2004 14:46

Re: Probleme mit Hooks
 
nun ja ich bin der Meinung, dass systemweite Hooks nur durch .dll relaisiert werden können.
Vielleicht solltest du da nocheinmal ansetzen.
[Edit]Mist zu langsam![/Edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Seite 1 von 4  1 23     Letzte »    

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