Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi VkKeyScan (https://www.delphipraxis.net/42743-vkkeyscan.html)

day 23. Mär 2005 10:40


VkKeyScan
 
Hallo

Ich habe folgendes Problem. Wenn ich ein "_" sende bekomme ich von der funktion VkKeyScan() eine -67 zurück. Es sollte aber eine 95 zurückgebeben werden.

lKey := VkKeyScan (Keys[I]);

NicoDE 23. Mär 2005 11:02

Re: VkKeyScan
 
Zitat:

Zitat von day
lKey := VkKeyScan (Keys[I]);

Im höherwertigen Byte sind einige Flags enthalten (u.a. treiberspezifische, siehe Dokumentation).
Deshalb solltest Du nur das niederwertige Byte nutzen.

day 23. Mär 2005 12:03

Re: VkKeyScan
 
hallo

ich habe es so probiert aber ohne erfolg.


lKey := lo( VkKeyScan (Keys[I]) );

NicoDE 23. Mär 2005 12:04

Re: VkKeyScan
 
Dann könnte mehr Code wohl nicht schaden um das Problem nachvollziehen zu können...

day 23. Mär 2005 12:15

Re: VkKeyScan
 
so das ist der gesamte code. Ich möchte alle werte welche sich in "Keys" befinden über den tastatur buffer ausgeben.

Delphi-Quellcode:

For I := 0 To Length( Keys ) Do
  Begin

    lCapitalKeyState := GetKeyState(VK_CAPITAL);
    If (( lCapitalKeyState = 1) And (IsCapslockEnabled = False)) Then
    Begin
      keybd_event( VK_CAPITAL,0, 0, 0 );
      keybd_event( VK_CAPITAL,0, KEYEVENTF_KEYUP, 0 );
      IsCapslockEnabled := True;
    End;

    If ( Ord( Keys[I] ) in [65..90] ) Then
    Begin
        keybd_event( VK_SHIFT,0 , 0, 0 );
    End;


    lKey := lo( VkKeyScan (Keys[I]) );


    keybd_event( lKey, 0, 0, 0 );
    Sleep( 5 );
    keybd_event( lKey, 0, KEYEVENTF_KEYUP, 0 );

    If ( Ord( Keys[I] ) in [65..90] ) Then
    Begin
        keybd_event( VK_SHIFT,0, KEYEVENTF_KEYUP, 0 );
        Application.ProcessMessages;
    End;
  End;

  If (( GetKeyState(VK_CAPITAL) = 0 ) And ( IsCapslockEnabled )) Then
  Begin
    keybd_event( VK_CAPITAL,0, 0, 0 );
    keybd_event( VK_CAPITAL,0, KEYEVENTF_KEYUP, 0 );
  End;


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