AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wiedermal Maushook

Ein Thema von ghost007 · begonnen am 19. Mai 2007 · letzter Beitrag vom 9. Nov 2008
Antwort Antwort
Seite 2 von 2     12   
Delphi-Fan-Friedrichsdorf

Registriert seit: 10. Mär 2007
Ort: Friedrichsdorf
24 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: Wiedermal Maushook

  Alt 8. Jun 2007, 14:42
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;
Angehängte Dateien
Dateityp: exe fensterinfo_734.exe (294,0 KB, 17x aufgerufen)
Sebastian
"Alle großen Mathematiker haben ein "th" im Namen: Thales, Pythgoras,..."
Dr. M. BarTH, Mathelehrer
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Wiedermal Maushook

  Alt 8. Jun 2007, 14:53
also wenn ich mir das Beispiel angucke bekomm ich Angst. 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!
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Wiedermal Maushook

  Alt 8. Jun 2007, 15:11
Zitat von SirThornberry:
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!
Hallo,

warum unvollständig, in Beitrag #1 ist doch der komplette Code.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Wiedermal Maushook

  Alt 8. Jun 2007, 15:22
Zitat von SirThornberry:
also wenn ich mir das Beispiel angucke bekomm ich Angst. 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!
Falls du den Code meinst, den ich benutze:

Ä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 von Delphi-Fan-Friedrichsdorf:
Hallo halinchen,
wenn du das Fensterhandle unter der Maus willst brauchst du keine Maushook.
Ich benutze Delphi 5 und mach das so:
So hatte ich es bisher auch. Aber 1. brauch ich den Hook noch für was anderes und 2. Ist es doch so besser, da es sofort angezeigt wird.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Wiedermal Maushook

  Alt 8. Jun 2007, 15:56
hmm, jetzt bin ich verwirrt - Auszug aus der Hilfe:
Zitat:
The JournalRecordProc hook procedure is an application-defined or library-defined callback function
Naja, hab ich auch mal was dazu gelernt, ich hatte anfangs doch Angst was da abgeht.
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)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von halinchen
halinchen

Registriert seit: 13. Jun 2006
508 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Wiedermal Maushook

  Alt 8. Jun 2007, 16:01
Zitat von SirThornberry:
Allerdings sollte man dann mit SetWindowsHookEx auch angeben das die Funktion nur im aktuellen Thread ist.
Ich schätze du meinst als letzten Parameter GetCurrentThread (oder GetCurrentThreadID) zu nehmen.
Ich teste das sofort mal. Aber logischerweise sollte der Hook dann nicht mehr global funktionieren...

[edit]
JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, hInstance, GetCurrentThread); oder
JHook := SetWindowsHookEx(WH_JOURNALRECORD, @JournalProc, hInstance, GetCurrentThreadID); So funktioniert der Hook überhaupt nicht mehr.
[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#17

Re: Wiedermal Maushook

  Alt 9. Jun 2007, 10:11
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
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Coder1990
Coder1990

Registriert seit: 2. Nov 2007
116 Beiträge
 
Delphi 2005 Personal
 
#18

Re: Wiedermal Maushook

  Alt 29. Jul 2008, 12:34
Hi

habe das selbe Problem wie Halinchen hatte bzw. vll heute noch hat.

FMouseHook := SetWindowsHookEx(WH_JOURNALRECORD, @TFMain.JournalProc, hInstance, 0); verursacht Freeze...
warum?

MfG
  Mit Zitat antworten Zitat
The Riddler
(Gast)

n/a Beiträge
 
#19

Re: Wiedermal Maushook

  Alt 9. Nov 2008, 18:38
Zitat von stoxx:
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
Ich greife die Frage mal auf. Ich suche für meine Anwendung eine Möglichkeit auf Maustasten zu reagieren, bräuchte also einen Mouse-Hook für WinXP und Vista. Gibt es da noch nichts?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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