AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WM_KEYDOWN lparam bit 30 auslesen?
Thema durchsuchen
Ansicht
Themen-Optionen

WM_KEYDOWN lparam bit 30 auslesen?

Ein Thema von Hedge · begonnen am 13. Jul 2007 · letzter Beitrag vom 13. Jul 2007
Antwort Antwort
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#1

WM_KEYDOWN lparam bit 30 auslesen?

  Alt 13. Jul 2007, 03:10
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;
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: WM_KEYDOWN lparam bit 30 auslesen?

  Alt 13. Jul 2007, 06:45
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?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: WM_KEYDOWN lparam bit 30 auslesen?

  Alt 13. Jul 2007, 06:49
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
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#4

Re: WM_KEYDOWN lparam bit 30 auslesen?

  Alt 13. Jul 2007, 10:19
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 :/
  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 14:38 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