Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Nachricht abfangen - Maushook (https://www.delphipraxis.net/5869-nachricht-abfangen-maushook.html)

OrallY 21. Jun 2003 18:45


Nachricht abfangen - Maushook
 
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?

Sharky 22. Jun 2003 16:22

Re: Nachricht abfangen - Maushook
 
Zitat:

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?

Duffy 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

OrallY 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.

Duffy 22. Jun 2003 16:58

Hallo OrallY,
dann schmeiß das, was Du bekommen hast einfach weg und Schluß ist.
bye

OrallY 22. Jun 2003 17:20

Ja, klar! Das Problem ist ja nicht das Theoretische, sondern das Prakitsche: Wie schmeiß ich die Nachricht weg?

Duffy 22. Jun 2003 17:24

Hallo OrallY,
ich weiß ja nicht was sie macht,
Delphi-Quellcode:
CallNextHookEx(HookHandle, Code, wParam, lParam);
aber die sollte es glaube ich sein.

[edit=Daniel B]Doppelpost gelsöcht. MfG Daniel B.[/edit]

OrallY 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.

Duffy 22. Jun 2003 18:38

Hallo OrallY,
Du reichst aber die Parameter weiter, ohne sie vorher zu manipulieren.
bye

OrallY 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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.
Seite 1 von 2  1 2      

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