MapVirtualKeyExA 函式 (winuser.h)
將虛擬金鑰程式代碼轉譯為掃描碼或字元值,或將掃描碼轉譯為虛擬密鑰程式代碼。 函式會使用輸入語言和輸入地區設定標識碼來翻譯程式碼。
語法
UINT MapVirtualKeyExA(
[in] UINT uCode,
[in] UINT uMapType,
[in, out, optional] HKL dwhkl
);
參數
[in] uCode
類型:UINT
虛擬金鑰碼 或掃描金鑰的程式代碼。 此值的解譯方式取決於 uMapType 參數
[in] uMapType
類型:UINT
要執行的翻譯。 此參數的值取決於 uCode 參數的值。
價值 | 意義 |
---|---|
MAPVK_VK_TO_VSC 0 |
uCode 參數是虛擬金鑰程式代碼,並轉譯為掃描碼。 如果它是虛擬金鑰程式代碼,無法區分左鍵和右鍵,則會傳回左側掃描碼。 如果沒有轉譯,函式會傳回 0。 |
MAPVK_VSC_TO_VK 1 |
uCode 參數是掃描程式代碼,並轉譯成虛擬密鑰程式代碼,無法區分左右鍵。 如果沒有轉譯,函式會傳回 0。 Windows Vista 和更新版本:uCode 值的高位元組可以包含0xe0或0xe1來指定延伸掃描碼。 |
MAPVK_VK_TO_CHAR 2 |
uCode 參數是虛擬索引鍵程式代碼,並以傳回值的低序字轉譯成未移位的字元值。 死鍵 (變音符號) 是藉由設定傳回值的頂端位來表示。 如果沒有轉譯,函式會傳回 0。 請參閱。 |
MAPVK_VSC_TO_VK_EX 3 |
uCode 參數是掃描程式代碼,並轉譯成虛擬密鑰程式代碼,以區分左右鍵。 如果沒有轉譯,函式會傳回 0。 Windows Vista 和更新版本:uCode 值的高位元組可以包含0xe0或0xe1來指定延伸掃描碼。 |
MAPVK_VK_TO_VSC_EX 4 |
Windows Vista 和更新版本:uCode 參數是虛擬密鑰程式代碼,並轉譯為掃描碼。 如果它是虛擬金鑰程式代碼,無法區分左鍵和右鍵,則會傳回左側掃描碼。 如果掃描碼是延伸掃描碼,傳回值的高位元組會包含0xe0或0xe1來指定延伸掃描碼。 如果沒有轉譯,函式會傳回 0。 |
[in, out, optional] dwhkl
類型:HKL
用於翻譯指定程式代碼的輸入地區設定標識碼。 此參數可以是先前由loadKeyboardLayout 函式
傳回值
類型:UINT
傳回值是掃描碼、虛擬索引鍵程式代碼或字元值,視 uCode 的值和 uMapType的值而定。 如果沒有轉譯,則傳回值為零。
言論
輸入地區設定標識碼是比鍵盤版面配置更廣泛的概念,因為它也可以包含語音轉換程式、輸入法編輯器(IME)或任何其他形式的輸入。
應用程式可以使用 MapVirtualKeyEx,將掃描碼轉譯為虛擬密鑰程式程式碼常數,VK_SHIFT、VK_CONTROL和 VK_MENU,反之亦然。 這些翻譯不會區分 SHIFT、CTRL 或 ALT 鍵的左右實例。
應用程式可以呼叫 mapVirtualKeyEx,並將 uCode 設為下列其中一個虛擬密鑰常數,以取得對應至下列其中一個密鑰的左側或右實例的掃描程式代碼:
- VK_LSHIFT
- VK_RSHIFT
- VK_LCONTROL
- VK_RCONTROL
- VK_LMENU
- VK_RMENU
只有透過 getKeyboardState、
在 MAPVK_VK_TO_CHAR 模式中,虛擬密鑰碼,即 'A'。Z' 索引鍵會轉譯為大寫 'A'。'不論目前的鍵盤配置為何,Z' 字元。 如果您想要將虛擬密鑰程式代碼轉譯為對應的字元,請使用 ToAscii 函式。
注意
winuser.h 標頭會根據 UNICODE 預處理器常數的定義,將 MapVirtualKeyEx 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winuser.h (包括 Windows.h) |
連結庫 | User32.lib |
DLL | User32.dll |