GetKeyVK

Ruft den virtuellen Tastencode einer Taste ab.

VK := GetKeyVK(TasteName)

Parameter

TasteName

Typ: Zeichenkette

Ein beliebiges Zeichen oder einer der Tastennamen aus der Tastenliste. Beispiele: B, 5, LWin, RControl, Alt, Enter, Escape.

Alternativ kann dieser Parameter ein expliziter virtueller Tastencode wie vkFF, ein expliziter Scancode wie sc01D oder eine Kombination aus VK und SC (in dieser Reihenfolge) wie vk1Bsc001 sein. Beachten Sie, dass diese Codes hexadezimal sein müssen.

Rückgabewert

Typ: Integer

Diese Funktion gibt den virtuellen Tastencode der angegebenen Taste zurück, oder 0, wenn die Taste ungültig ist oder keinen virtuellen Tastencode hat.

Bemerkungen

Bevor der virtuelle Tastencode mit einer internen Funktion wie Hotkey oder GetKeyState verwendet werden kann, muss er zunächst in das hexadezimale Format umgewandelt werden, z.B. mit Format("vk{:X}", vk_code). Extern aufgerufene Funktionen via DllCall verwenden dagegen meist direkt den numerischen Wert.

Wenn TasteName einem Scancode oder einem einzelnen Zeichen entspricht, versucht die Funktion, den Wert einem virtuellen Tastencode zuzuordnen, indem sie bestimmte Systemfunktionen aufruft, die sich auf der aktuellen Tastaturbelegung des Skripts beziehen. Diese Tastaturbelegung kann von der Tastaturbelegung des aktiven Fensters abweichen.

Wenn TasteName ein ASCII-Buchstabe im Bereich von A bis Z ist und keine Zuordnung innerhalb der Tastaturbelegung hat, wird die entsprechende virtuelle Taste im Bereich von vk41 bis vk5A als Fallback verwendet.

Einige Tastaturbelegungen haben keine 1:1-Zuordnung von virtuellen Tastencodes zu Scancodes. Wenn mehrere Interpretationen möglich sind, werden die Systemfunktionen voraussichtlich eine auswählen, die auf der in der Tastaturbelegung festgelegten Reihenfolge basiert, was nicht immer die gängigste oder logischste Wahl ist.

GetKeySC, GetKeyName, GetKeyState, Tastenliste, Format

Beispiele

Ermittelt und meldet den hexadezimalen virtuellen Tastencode von Esc.

vk_code := GetKeyVK("Esc")
MsgBox Format("vk{:X}", vk_code) ; Meldet vk1B