![]() |
Re: Wiedermal Maushook
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo halinchen,
wenn du das Fensterhandle unter der Maus willst brauchst du keine Maushook. Ich benutze Delphi 5 und mach das so:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);// Interval so klein wie möglich(,aber nicht kleiner als 200 würde ich sagen, sonst wird es zu langsam.)
var pos:TPoint; h:THandle; WinCaption : string; Len: integer; begin GetCursorPos(pos); //Mausposition abfragen h:=WindowFromPoint(pos); //Fenster-handle an dieser Position speichern Label1.Caption:='Mausposition: '+IntToStr(pos.x)+'/'+IntToStr(pos.y); //Nich so wichtig: Mausposition anzeigen if h>0 then //Handle prüfen begin Len := GetWindowTextLength(h); //Titellänge abfragen SetLength(WinCaption, Len); //Länge setzen GetWindowText(h, PChar(WinCaption), Len+1); //Text holen Label2.Caption:='Fenstertitel: '+WinCaption; //Titel anzeigen end else Label2.Caption:='Fenstertitel: Kein Titel'; //Fehlerbehandlung end; |
Re: Wiedermal Maushook
also wenn ich mir das Beispiel angucke bekomm ich Angst. :shock: Da wird doch nicht etwa in jeden gehookten Prozess noch ein Form mit gepackt? Leider ist das Projekt unvollständig so das man auch nicht sehen kann ob das Form auch in jedem Prozess instanziert wird mit Laden der dll. Wenn dem nicht so ist bekomme ich noch mehr angst weil dann in jedem Prozess eine Zugriffsverletzung vorprogrammiert ist.
Wer solche Dinge nutzt sollte tunlichst auch wissen was er da macht! |
Re: Wiedermal Maushook
Zitat:
warum unvollständig, in Beitrag #1 ist doch der komplette ![]() |
Re: Wiedermal Maushook
Zitat:
Ähm,... Wieso DLL? Bei einem Journal-Hook ist der Hook doch in der Exe drin und wird nicht in jeden anderen Prozess geladen. Oder hab ich da was total falsch verstanden? Zugriffsverletzungen hab ich bisher noch nicht gehabt. [Wennfalschdannbitteberichtigen-Modus] Und selbst wenn:Ein Journal-Hook geht nur in einer EXE, wofür ist der sonst gedacht? [/Wennfalschdannbitteberichtigen-Modus] Falls ich total auf den Schlauch stehe bin ich natürlich lernfähig. (D.h. das oben war in _keiner_ Hinsicht böse, abfällig oder sonstwas gemeint.) Zitat:
|
Re: Wiedermal Maushook
hmm, jetzt bin ich verwirrt - Auszug aus der Hilfe:
Zitat:
Allerdings sollte man dann mit SetWindowsHookEx auch angeben das die Funktion nur im aktuellen Thread ist. (sollte ja dann immer noch funktionieren und man fährt kein Risiko das es nach einem Windows-Update nicht mehr funktioniert) |
Re: Wiedermal Maushook
Zitat:
Ich teste das sofort mal. Aber logischerweise sollte der Hook dann nicht mehr global funktionieren... [edit]
Delphi-Quellcode:
oder
JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, hInstance, GetCurrentThread);
Delphi-Quellcode:
So funktioniert der Hook überhaupt nicht mehr.
JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, hInstance, GetCurrentThreadID);
[/edit] |
Re: Wiedermal Maushook
mal noch eine andere Bemerkung, unter Vista funktioniert der Hook nicht mehr.
Soll das so sein, oder gibts da eine anderen Lösung. Sind diese und andere Hooks jetzt generell abgeschafft worden? WH_Mouse geht nämlich auch nicht mehr ... hmm |
Re: Wiedermal Maushook
Hi
habe das selbe Problem wie Halinchen hatte bzw. vll heute noch hat.
Delphi-Quellcode:
verursacht Freeze...
FMouseHook := SetWindowsHookEx(WH_JOURNALRECORD, @TFMain.JournalProc, hInstance, 0);
warum? MfG |
Re: Wiedermal Maushook
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr. |
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