Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Hook auf VK_ADD macht Probleme (https://www.delphipraxis.net/142788-hook-auf-vk_add-macht-probleme.html)

lbccaleb 3. Nov 2009 20:59


Hook auf VK_ADD macht Probleme
 
Hey,

ich habe eine Hook erstellt, ähnlich nach nem Bsp. von toms hier in der DB (leider kann ich dieses irgendwie gerade nicht mehr finden, poste den Link wenn es mir wieder unterkommt).

Der Hook ersetzt das Numernblock "+" mit der Tabulator Taste, soweit so gut, nur leider habe ich jetzt das Problem das auch bei druck auf das normale "k" die Tabulatortaste ausgeführt wird! Woran kann das liegen? haben die Tasten die selben Codes?

Alles andere funktioniert prima!

Für Tipps, oder hilfen währe ich sehr dankbar.

Luckie 3. Nov 2009 21:03

Re: Hook auf VK_ADD macht Probleme
 
Tja, ohne deinen Code zu kennen, woher sollen wir da wissen, was da falsch ist?

lbccaleb 3. Nov 2009 21:06

Re: Hook auf VK_ADD macht Probleme
 
Das nicht mein Code, das eher toms Code, mit ein paar änderungen für mich, soll nur meiner Bequemlichkeit dienen :)

So sieht das ganze aus:

Delphi-Quellcode:
function MsgFilterFunc(Code: Integer; wParam, lParam: Longint): Longint;
var
  MMFHandle: THandle;
  MMFData: PMMFData;
//  Kill: boolean;
begin
  Result := 0;
  MMFHandle := OpenMMF(MMFName);
  if MMFHandle <> 0 then
  begin
    MMFData := MapMMF(MMFHandle);
    if MMFData <> nil then
    begin
      if (Code < 0) or (wParam = PM_NOREMOVE) then
        Result := CallNextHookEx(MMFData.NextHook, Code, wParam, lParam)
      else
      begin

        //Kill := False;
        with TMsg(Pointer(lParam)^) do
        begin
          if wParam = VK_ADD then wParam := VK_TAB;//Kill := True;
        end;
     //   if Kill then TPMsg(lParam)^.message := VK_TAB;

        Result := CallNextHookEx(MMFData.NextHook, Code, wParam, lParam)
      end;
      UnMapMMF(MMFData);
    end;
    CloseMMF(MMFHandle);
  end;
end;

lbccaleb 3. Nov 2009 21:17

Re: Hook auf VK_ADD macht Probleme
 
Habe gerade den Beitrag von toms wieder gefunden!
Dort befindet sich der original Code.

Taste sperren

lbccaleb 4. Nov 2009 19:37

Re: Hook auf VK_ADD macht Probleme
 
Kann mir da keiner weiter helfen? :(

Flocke 4. Nov 2009 21:10

Re: Hook auf VK_ADD macht Probleme
 
Ich vermisse da in deinem Code irgendwie die Prüfung auf die Art der Meldung, die geschickt wurde...
Delphi-Quellcode:
        with TMsg(Pointer(lParam)^) do
    {->}  if (Message = WM_KEYDOWN) or (Message = WM_KEYUP) then
          begin
            if wParam = VK_ADD then wParam := VK_TAB;//Kill := True;
          end;

lbccaleb 6. Nov 2009 14:12

Re: Hook auf VK_ADD macht Probleme
 
Danke für den Tipp!
Jetzt klappt es wunderbar!

Hatte es auch probiert, mit den Abfragen auf die Message, aber immer nur WM_KEYUP oder WM_KEYDOWN. Aber leider nie beide zusammen, ich Schussel!
Manchmal sieht man den Wald vpr lauter Bäumen nicht. :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 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