共用方式為


MapVirtualKeyA 函式 (winuser.h)

將虛擬金鑰程式代碼轉譯為掃描碼或字元值,或將掃描碼轉譯為虛擬密鑰程式代碼。

語法

UINT MapVirtualKeyA(
  [in] UINT uCode,
  [in] UINT uMapType
);

參數

[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。

傳回值

類型:UINT

傳回值是掃描碼、虛擬索引鍵程式代碼或字元值,視 uCode 的值和 uMapType的值而定。 如果沒有轉譯,則傳回值為零。

言論

若要指定用於翻譯指定程式代碼的鍵盤配置句柄,請使用 mapVirtualKeyEx 函式

應用程式可以使用 MapVirtualKey,將掃描碼轉譯為虛擬密鑰程式程式碼常數,VK_SHIFTVK_CONTROLVK_MENU,反之亦然。 這些翻譯不會區分 SHIFT、CTRL 或 ALT 鍵的左右實例。

應用程式可以藉由呼叫 mapVirtualKey,並將 uCode 設定為下列其中一個虛擬密鑰常數,以取得對應至下列其中一個密鑰的左側或右側實例的掃描程式代碼:

  • VK_LSHIFT
  • VK_RSHIFT
  • VK_LCONTROL
  • VK_RCONTROL
  • VK_LMENU
  • VK_RMENU

只有透過 getKeyboardState、SetKeyboardStateGetAsyncKeyStateGetKeyStateMapVirtualKeyMapVirtualKeyEx 函式,才能讓 應用程式使用這些左右辨別常數。 如需虛擬金鑰代碼的完整資料表,請參閱 虛擬金鑰碼

MAPVK_VK_TO_CHAR 模式中,虛擬密鑰碼,即 'A'。Z' 索引鍵會轉譯為大寫 'A'。'不論目前的鍵盤配置為何,Z' 字元。 如果您想要將虛擬密鑰程式代碼轉譯為對應的字元,請使用 ToAscii 函式。

注意

winuser.h 標頭會將 MapVirtualKey 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 winuser.h (包括 Windows.h)
連結庫 User32.lib
DLL User32.dll

另請參閱