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/)
-   -   Delphi WM_KEYDOWN lparam bit 30 auslesen? (https://www.delphipraxis.net/95786-wm_keydown-lparam-bit-30-auslesen.html)

Hedge 13. Jul 2007 02:10


WM_KEYDOWN lparam bit 30 auslesen?
 
Hab schon gesehen dass es einen ähnlichen Thread wie diesen gibt-> http://www.delphipraxis.net/internal...keydown+lparam
...aber trotzdem krieg ich es nicht hin das 30. Bit des lparam auszulesen (aus MSDN: 30 Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up. )

Habe einen Journalhook:

Delphi-Quellcode:
function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  P: PEventMsg;
begin
  If nCode = HC_ACTION then
   begin
    If lParam <> 0 then
     begin
      P := PEventMsg(lParam);
      if P^.message = WM_KEYDOWN then
        begin
        if (lparam and $20000000)=$20000000 then Beep;
        end;
      end;
   end;
end;

Robert Marquardt 13. Jul 2007 05:45

Re: WM_KEYDOWN lparam bit 30 auslesen?
 
Da war letztens ein Thread ueber JOURNALHOOKs hier bei dem das auch nicht ging. Warum erwartest du uebrigens das die Mausmessages die gleichen Parameter wie Keyboardmessages haben?

marabu 13. Jul 2007 05:49

Re: WM_KEYDOWN lparam bit 30 auslesen?
 
Guten Morgen.

Wenn du Konstanten mehrmals verwendest, dann ist eine Konstantenvereinbarung vorteilhaft. Wenn du dann noch die richtige Konstante verwendest - um so besser.

Delphi-Quellcode:
const
  PREV_KEY_STATE = 1 shl 30; // $40000000
begin
  // ...
  if lparam and PREV_KEY_STATE = PREV_KEY_STATE then Beep;
  // Ohne Konstante geht es auch so:
  if Odd(lparam shr 30) then Beep;
  // ..
end;
Edit: Das nur zu deinem Delphi-Problem. Zu deinem Problem mit Windows hat Robert schon was geschrieben.

Grüße vom marabu

Hedge 13. Jul 2007 09:19

Re: WM_KEYDOWN lparam bit 30 auslesen?
 
Zitat:

Warum erwartest du uebrigens das die Mausmessages die gleichen Parameter wie Keyboardmessages haben?
Reine Vermutung gepaart mit Unwissen :)

Danke für die Tipps. Habe es vorerst über WMKEYUP gelöst, aber scheinbar wird ne DLL fällig sein, denn es ist auch nicht möglich die Richtung in der man das Mausrad gescrollt hat zu ermitteln mit nem Journalhook :/


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