Virtual Scan Code in ASCII
Verfasst: 03.09.2005 15:23
Ich bekomme es einfach nicht hin einen virtual Scan code in ein ASCII Symbol zu konvertieren mit der Funktion "ToAscii". Kann mir da jemand helfen
[/Edit]MSDN (ToAscii) hat geschrieben:Translates the specified virtual-key code and keyboard state to the corresponding character or characters.
(...)
Typically, ToAscii performs the translation based on the virtual-key code. In some cases, however, bit 15 of the uScanCode parameter may be used to distinguish between a key press and a key release. The scan code is used for translating ALT+ number key combinations.
Code: Alles auswählen
; PB 4.60 beta 3 / Regenduft
CompilerIf Defined(MAPVK_VSC_TO_VK,#PB_Constant)=0
#MAPVK_VSC_TO_VK=1
CompilerEndIf
CompilerIf Defined(MAPVK_VK_TO_CHAR,#PB_Constant)=0
#MAPVK_VK_TO_CHAR=2
CompilerEndIf
Layout = GetKeyboardLayout_(0)
VirtualScanCode = 45 ; = X-Taste
Debug Chr(MapVirtualKeyEx_(MapVirtualKeyEx_(VirtualScanCode,#MAPVK_VSC_TO_VK,Layout),#MAPVK_VK_TO_CHAR,Layout))
Code: Alles auswählen
; PB 4.60 beta 3 / Regenduft
EnableExplicit
CompilerIf Defined(MAPVK_VK_TO_VSC ,#PB_Constant)=0 : #MAPVK_VK_TO_VSC =0 : CompilerEndIf
CompilerIf Defined(MAPVK_VSC_TO_VK ,#PB_Constant)=0 : #MAPVK_VSC_TO_VK =1 : CompilerEndIf
CompilerIf Defined(MAPVK_VK_TO_CHAR ,#PB_Constant)=0 : #MAPVK_VK_TO_CHAR =2 : CompilerEndIf
CompilerIf Defined(MAPVK_VSC_TO_VK_EX,#PB_Constant)=0 : #MAPVK_VSC_TO_VK_EX=3 : CompilerEndIf
CompilerIf Defined(MAPVK_VK_TO_VSC_EX,#PB_Constant)=0 : #MAPVK_VK_TO_VSC_EX=4 : CompilerEndIf ; erst ab Vista unterstützt!
Procedure.i VkToAsc(VirtualKey)
ProcedureReturn MapVirtualKeyEx_(VirtualKey,#MAPVK_VK_TO_CHAR,GetKeyboardLayout_(0))
EndProcedure
Procedure.s VkToChr(VirtualKey)
ProcedureReturn Chr(MapVirtualKeyEx_(VirtualKey,#MAPVK_VK_TO_CHAR,GetKeyboardLayout_(0)))
EndProcedure
Procedure.s VkToStr(VirtualKey)
Protected Ergebnis${127}
GetKeyNameText_(MapVirtualKeyEx_(VirtualKey,#MAPVK_VK_TO_VSC,GetKeyboardLayout_(0))<<16,@Ergebnis$,128)
ProcedureReturn Ergebnis$
EndProcedure
Procedure.s VkToStrEx(VirtualKey) ; erst ab Vista unterstützt!
Protected Ergebnis${127}
GetKeyNameText_(MapVirtualKeyEx_(VirtualKey,#MAPVK_VK_TO_VSC_EX,GetKeyboardLayout_(0))<<16,@Ergebnis$,128) ; erst ab Vista unterstützt!
ProcedureReturn Ergebnis$
EndProcedure
Procedure.i VkToVsc(VirtualKey)
ProcedureReturn MapVirtualKeyEx_(VirtualKey,#MAPVK_VK_TO_VSC,GetKeyboardLayout_(0))
EndProcedure
Procedure.i VkToVscEx(VirtualKey) ; erst ab Vista unterstützt!
ProcedureReturn MapVirtualKeyEx_(VirtualKey,#MAPVK_VK_TO_VSC_EX,GetKeyboardLayout_(0)) ; erst ab Vista unterstützt!
EndProcedure
Procedure.i VscToAsc(VirtualScanCode)
Protected Layout = GetKeyboardLayout_(0)
ProcedureReturn MapVirtualKeyEx_(MapVirtualKeyEx_(VirtualScanCode,#MAPVK_VSC_TO_VK,Layout),#MAPVK_VK_TO_CHAR,Layout)
EndProcedure
Procedure.s VscToChr(VirtualScanCode)
Protected Layout = GetKeyboardLayout_(0)
ProcedureReturn Chr(MapVirtualKeyEx_(MapVirtualKeyEx_(VirtualScanCode,#MAPVK_VSC_TO_VK,Layout),#MAPVK_VK_TO_CHAR,Layout))
EndProcedure
Procedure.s VscToStr(VirtualScanCode)
Protected Ergebnis${127}
GetKeyNameText_(VirtualScanCode<<16,@Ergebnis$,128)
ProcedureReturn Ergebnis$
EndProcedure
Procedure.i VscToVk(VirtualScanCode)
ProcedureReturn MapVirtualKeyEx_(VirtualScanCode,#MAPVK_VSC_TO_VK,GetKeyboardLayout_(0))
EndProcedure
Procedure.i VscToVkEx(VirtualScanCode)
ProcedureReturn MapVirtualKeyEx_(VirtualScanCode,#MAPVK_VSC_TO_VK_EX,GetKeyboardLayout_(0))
EndProcedure