AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WM_KEYDOWN lparam

Ein Thema von Neutral General · begonnen am 22. Jun 2007 · letzter Beitrag vom 29. Apr 2009
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

WM_KEYDOWN lparam

  Alt 22. Jun 2007, 17:51
Hi,

Ich verstehe nicht genau was MSDN mir mit der Beschreibung des LPARAMs sagen will..

Zitat:
Parameters

nVirtKey

Value of wParam. Specifies the virtual-key code of the nonsystem key.

lKeyData (<-- lparam)

Value of lParam. Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table:

Value Description
0-15 Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key.
16-23 Specifies the scan code. The value depends on the original equipment manufacturer (OEM).
24 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
25-28 Reserved; do not use.
29 Specifies the context code. The value is always 0 for a WM_KEYDOWN message.
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.
31 Specifies the transition state. The value is always 0 for a WM_KEYDOWN message.
Es geht mir vorallem um

Zitat:
24 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an
Muss ich da jetzt im lparam 24 angeben wenn ich mitteilen will das es sind um einen "extended key" handelt?
PS: Ist VK_LEFT ein Extended Key?

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: WM_KEYDOWN lparam

  Alt 22. Jun 2007, 17:54
Moin Michael,

nein, Bit 24 muss gesetzt sein.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: WM_KEYDOWN lparam

  Alt 22. Jun 2007, 17:55
Zitat:
Muss ich da jetzt im lparam 24 angeben wenn ich mitteilen will das es sind um einen "extended key" handelt?
Du musst bit nummer 24 testen, ob es gesetzt ist oder nicht
if (lparam and 2^24)=2^24 then extended_key (2^24 natürlich ausrechnen)

Zitat:
PS: Ist VK_LEFT ein Extended Key?
Ich denke nicht. Aber probiers doch aus!
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: WM_KEYDOWN lparam

  Alt 22. Jun 2007, 18:09
Hi,

Danke. Also wenn ich nur bit 24 gesetzt haben will dann brauch ich eigentlich nur 2^24 ausrechnen und diese Zahl als Parameter übergeben oder? Naja es klappt trotzdem nicht.

Versuche gerade

Delphi-Quellcode:
PostMessage(Handle,WM_KEYDOWN,VK_LEFT,0);
PostMessage(Handle,WM_KEYUP,VK_LEFT,0);
an meine Anwendung zu senden. Es passiert im KeyPress aber nichts... Wenn ich VK_LEFT durch Ord('A') ersetze funktioniert es.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: WM_KEYDOWN lparam

  Alt 22. Jun 2007, 18:12
Und mit gesetztem Bit?
Delphi-Quellcode:
PostMessage(Handle,WM_KEYDOWN,VK_LEFT,1 shl 24);
PostMessage(Handle,WM_KEYUP,VK_LEFT,1 shl 24);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: WM_KEYDOWN lparam

  Alt 22. Jun 2007, 18:20
Hab herausgefunden das WM_KEYUP sowohl mit als auch ohne gesetztem Bit geht. WM_KEYDOWN geht weder mit noch ohne -.-
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: WM_KEYDOWN lparam

  Alt 23. Jun 2007, 13:25
Es sind noch nicht ganz 24 Stunden rum aber ich wollt doch schonmal nachfragen ob jemand den Grund dafür weiß.. Weil ich finde das schons seltsam das das WM_KEYUP ankommt und WM_KEYDOWN nicht..Dann ist auch klar warums nicht ins OnKeyPress Ereignis kommt.. Wo sind denn hier die WinAPI Experten ?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#8

Re: WM_KEYDOWN lparam

  Alt 29. Apr 2009, 13:47
Bevor jetzt noch einer mit diesem Problem rumhanpeln muss (wie ich gerade eine ganze zeit lang) poste ich mal die (mögliche) Fehlerquelle:

Insgesamt wird schon das richtige verschickt. Jedoch sagt Windows bzw. der Compiler bei einem VK_Left/Up/Right/Down auf einen Button/Formular/etc wird das Control gewechselt und das KeyEvent gilt als Handled.
Somit wird kein weiteres OnKeyDown/OnKeyUp mehr aufgerufen.
Mit einer EditBox funktioniert´s ganz gut, da wechselt der nicht die Controls. (sowohl mit als auch ohne ExtendedKey)
  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 00:21 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