AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Über Hook rechte Maustaste sperren
Thema durchsuchen
Ansicht
Themen-Optionen

Über Hook rechte Maustaste sperren

Ein Thema von yvesdaeschle · begonnen am 7. Jan 2005 · letzter Beitrag vom 7. Jan 2005
Antwort Antwort
yvesdaeschle

Registriert seit: 22. Nov 2004
Ort: Efringen
26 Beiträge
 
Delphi 6 Personal
 
#1

Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 13:35
Hallo Zusammen,

ich hab einen Mousehook, welcher mir an mein Programm die Mousehooks schickt.
Jetzt möchte ich aber das klicken der rechten Maustaste verbieten... also sperren.

Was mucc ich da in meinem Mousehook änder?

Yves
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 13:47
wenn du damit windows funktionen platt machen willst dann mach das lieber über gruppenrichtlinien in windows.
den (datei-)explorer bekommst du damit klein.

gruss
  Mit Zitat antworten Zitat
yvesdaeschle

Registriert seit: 22. Nov 2004
Ort: Efringen
26 Beiträge
 
Delphi 6 Personal
 
#3

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 14:10
Hi,

ich möchte die Maustaste eigentlich nur deaktivieren in Verbindung mit der Strg Taste.
Also wird Strg + Rechtemaustaste gedrückt... Message an mein Programm.

Problem dabei: Es wird dabei auf einem Textfeld immer das Popupmenü geöffnet, das möchte ich in diesem Fall nicht. Ansonsten darf die Maustaste machen was sie will.

Yves
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 14:14
schlampiger weise könntest du mit GetKeyState gucken ob Strg gedrückt ist und wenn ja im MouseHook die Hookchain unterbrechen...


Greetz
Boombuler
  Mit Zitat antworten Zitat
yvesdaeschle

Registriert seit: 22. Nov 2004
Ort: Efringen
26 Beiträge
 
Delphi 6 Personal
 
#5

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 14:16
Hi,

Delphi-Quellcode:
if wParam = WM_RBUTTONDOWN then
  begin
     wParam := WM_NULL;
     lParam := 0;
  end;
  Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
Das habe ich Probiert, geht aber nicht. Was ist HookChain?? Und wie kann ich das unterbrechen?

Danke, Yves
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 14:36
Delphi-Quellcode:
if wParam <> WM_RBUTTONDOWN then
  begin
     Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
  end;
Dadurch das du "CallNextHookEx" wegläst unterbrichst du die Hookchain!
habs jetzt nich groß probier aber so wie oben hassu mehr change musst dann nur noch nach Strg gedrückt prüfen

Greetz
Boombuler

PS: wie schreibst du n Hook wennu nicht weißt was die Hookchain is?
  Mit Zitat antworten Zitat
yvesdaeschle

Registriert seit: 22. Nov 2004
Ort: Efringen
26 Beiträge
 
Delphi 6 Personal
 
#7

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 14:47
HI,

das mit der Hookchain, ist mir shcon klar, wusste nur nicht dass die so heißt!

Hab folgendes probiert:

Delphi-Quellcode:
if (TPMsg(lParam)^.message = WM_RBUTTONDOWN) or (TPMsg(lParam)^.message = WM_RBUTTONUP) then
        begin
          SendMessage(MMFData.WinHandle, WM_USER + 2706, wParam, lParam);
          Kill := True;
        end;

        if not Kill then // TPMsg(lParam)^.message := WM_NULL;
          Result := CallNextHookEx(MMFData.NextHook, Code, wParam, lParam)
Das mit dem Strg ist mir dann klar, aber leider funktioniert der Code nicht, weil immer noch die Funktion der rechten Maustaste funktioniert!

Sitz schon zwei Tage dran und weis einfach nicht weiter. Was für einen HookTyp muss ich denn verwenden, probiers gerade mit WH_GETMESSAGE, aber mit WH_MOUSE geht es auch nicht!

Yves
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#8

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 14:50
Zitat von Boombuler:
Dadurch das du "CallNextHookEx" wegläst unterbrichst du die Hookchain!
Richtig, aber 'unhöflich'...
Code:
Return Value

    If nCode is less than zero, the hook procedure must return the value returned by CallNextHookEx.

    If nCode is greater than or equal to zero, and the hook procedure did not process the message, [color=red]it is highly recommended that you call CallNextHookEx and return the value it returns; otherwise, other applications that have installed WH_MOUSE hooks will not receive hook notifications and may behave incorrectly as a result.[/color] [color=green]If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the target window procedure.[/color]
  Mit Zitat antworten Zitat
yvesdaeschle

Registriert seit: 22. Nov 2004
Ort: Efringen
26 Beiträge
 
Delphi 6 Personal
 
#9

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 14:53
Wie kann ich dann dennoch den Klick verhindern? Ohne das mitd em CallNectHookEx, wegzulassen was ohne hin auch nicht geht. Vielleicht liegt es ja auch dan dem WH_MOUSE??
  Mit Zitat antworten Zitat
yvesdaeschle

Registriert seit: 22. Nov 2004
Ort: Efringen
26 Beiträge
 
Delphi 6 Personal
 
#10

Re: Über Hook rechte Maustaste sperren

  Alt 7. Jan 2005, 15:24
Es geht!!

Ich Erstelle den Hook so: also mit WH_GETMESSAGE:

SetWindowsHookEx(WH_GETMESSAGE, MsgFilterFunc, HInstance, 0); Und ich prüfe die Kombination von Strg und der rechten Maustaste so:

Delphi-Quellcode:
if (TPMsg (lParam)^.message = WM_RBUTTONUP) then
begin
  if GetASYNCKeyState (VK_CONTROL) <> 0 then
    TPMsg (lParam)^.message := WM_NULL;
end;
Result := CallNextHookEx(MMFData.NextHook, Code, wParam, lParam);
Ich ändere ja den Parameter, macht das was, gegenüber den anderen Programmen die diesen Hook verwenden?

Zitat:
Return Value

If nCode is less than zero, the hook procedure must return the value returned by CallNextHookEx.

If nCode is greater than or equal to zero, and the hook procedure did not process the message, it is highly recommended that you call CallNextHookEx and return the value it returns; otherwise, other applications that have installed WH _MOUSE hooks will not receive hook notifications and may behave incorrectly as a result. If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the target window procedure.
Danke euch nochmal!
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:22 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