AGB  ·  Datenschutz  ·  Impressum  







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

Nachricht abfangen - Maushook

Ein Thema von OrallY · begonnen am 21. Jun 2003 · letzter Beitrag vom 24. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#1

Nachricht abfangen - Maushook

  Alt 21. Jun 2003, 18:45
So, ich habe es jetzt endlich hingekriegt, meinen Maushook zum laufen zu bringen. Jedesmal, wenn irgendwas mit der Maus passiert, schickt meine Hook-DLL meinem Programm eine Nachricht.
Wie kann ich nun verhindern, dass andere Programme auch eine Nachricht erhalten? Also zum Beispiel die WM_MOUSEMOVE-Nachricht abfangen?
Eigentlich sind ja Hooks dazu gemacht, eben dies zu vermeiden. Doch gibt es irgendeine Möglichkeit?
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Nachricht abfangen - Maushook

  Alt 22. Jun 2003, 16:22
Zitat von OrallY:
...
Wie kann ich nun verhindern, dass andere Programme auch eine Nachricht erhalten? Also zum Beispiel die WM_MOUSEMOVE-Nachricht abfangen?
Eigentlich sind ja Hooks dazu gemacht, eben dies zu vermeiden. Doch gibt es irgendeine Möglichkeit?
Hai OrallY,

ich kenne mich damit nicht so richtig aus. Aber wäre es eventuell möglich dies über PeekMessage zu lösen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#3
  Alt 22. Jun 2003, 16:41
Hallo OrallY,
wenn Du einen Hook installiert hast, dann bekommst Du die Nachricht als erstes, es sei den jemand anderes installiert einen Hook nach Dir und läßt Dich dumm sterben. "Worm/Bugbear.B" macht das zur Zeit mit einem Trojaner. Also Du hast keine Chance, wenn Dich einer austrickst. Es sei denn, Du nimmst ihn auch wieder den Ball ab.
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#4
  Alt 22. Jun 2003, 16:54
Kann mir vielleicht einer erklären, wie ich, wenn es die richtige Funktion ist, PeekMessage in meiner DLL einzusetzen habe? So funktioniert es auf jedenfall nicht:
Delphi-Quellcode:
var
   Msg: TMsg;

function MouseHookProc(Code: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  if code = HC_ACTION then
  begin
    FileMapObj := OpenFileMapping(FILE_MAP_READ, False,'HookMapFile');
    if FileMapObj <> 0 then
    begin
      FileMapView := MapViewOfFile(FileMapObj, FILE_MAP_READ, 0, 0, 0);
      PostMessage(FileMapView^, WM_HOOKMAP, wParam, lParam);
      PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE or PM_NOYIELD);
      UnmapViewOfFile(FileMapView);
      CloseHandle(FileMapObj);
    end;
  end;
  Result := CallNextHookEx(HookHandle, Code, wParam, lParam);
end;
Der Sinn eines Hooks ist ja die Messages nach verarbeitungen weiterzuleiten. Aber genau das will ich verhindern. Ich will, dass weder ein normales Fenster, noch der Desktop noch irgendein anderes Teil was eine Mausnachricht erhalten kann, sie nicht bekommt.
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#5
  Alt 22. Jun 2003, 16:58
Hallo OrallY,
dann schmeiß das, was Du bekommen hast einfach weg und Schluß ist.
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#6
  Alt 22. Jun 2003, 17:20
Ja, klar! Das Problem ist ja nicht das Theoretische, sondern das Prakitsche: Wie schmeiß ich die Nachricht weg?
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#7
  Alt 22. Jun 2003, 17:24
Hallo OrallY,
ich weiß ja nicht was sie macht,
CallNextHookEx(HookHandle, Code, wParam, lParam); aber die sollte es glaube ich sein.

[edit=Daniel B]Doppelpost gelsöcht. MfG Daniel B.[/edit]
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#8
  Alt 22. Jun 2003, 18:32
Diese Prozedur stellt nur sicher, dass andere Hooks ebenfalls noch Nachrichten empfangen. Das hat leider nichts mit der Nachrichtenverarbeitung der Programme zu tun.
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#9
  Alt 22. Jun 2003, 18:38
Hallo OrallY,
Du reichst aber die Parameter weiter, ohne sie vorher zu manipulieren.
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von OrallY
OrallY

Registriert seit: 29. Apr 2003
268 Beiträge
 
#10
  Alt 23. Jun 2003, 15:55
Wie ich schon schrieb hat die CallNextHookEx nur die funktion sicher zu stellen, dass etwaige Hooks, die in der Rangliste unter dem eigenen stehen auch noch die Nachricht erhält. Deswegen hilft weder das weglassen des Befehls noch das Verändern der Parameter der Lösung meines Problems.
Kann mir bitte mal jemand die Verwendung von PeekMessage erklären und was es genau macht. Die englische Erklärung im PSDK habe ich nicht zu genüge verstanden.
.oO'rallY
Linux is like a tipi: no gates, no windows and a gnu-eating apache inside...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:35 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