Share via


keybd_event函式 (winuser.h)

合成按鍵。 系統可以使用這類合成按鍵來產生 WM_KEYUPWM_KEYDOWN 訊息。 鍵盤驅動程式的插斷處理程式會呼叫 keybd_event 函式。

注意 此函式已被取代。 請改用 SendInput
 

語法

void keybd_event(
  [in] BYTE      bVk,
  [in] BYTE      bScan,
  [in] DWORD     dwFlags,
  [in] ULONG_PTR dwExtraInfo
);

參數

[in] bVk

類型: BYTE

虛擬金鑰程式代碼。 程式代碼必須是範圍 1 到 254 中的值。 如需完整清單,請參閱 虛擬密鑰代碼

[in] bScan

類型: BYTE

金鑰的硬體掃描代碼。

[in] dwFlags

類型: DWORD

控制函式作業的各種層面。 此參數可以是下列一或多個值。

意義
KEYEVENTF_EXTENDEDKEY
0x0001
如果指定,掃描程式代碼前面會加上前置詞位元組,其值0xE0 (224) 。
KEYEVENTF_KEYUP
0x0002
如果指定,則會釋放金鑰。 如果未指定,則會抑制密鑰。

[in] dwExtraInfo

類型: ULONG_PTR

與按鍵筆劃相關聯的額外值。

傳回值

備註

應用程式可以模擬 PRINTSCRN 鍵的按下,以取得螢幕快照集並將其儲存至剪貼簿。 若要這樣做,請呼叫 keybd_event ,並將 bVk 參數設定為 VK_SNAPSHOT

範例

下列範例程式會使用 keybd_event 搭配虛擬密鑰 的 VK_NUMLOCK 來切換 NUM LOCK 光線。 它會採用布爾值,指出光線應該關閉 (FALSE) 或 (TRUE) 。 相同的技巧可用於 CAPS LOCK 鍵 (VK_CAPITAL) 和 SCROLL LOCK 鍵 (VK_SCROLL) 。


   #include <windows.h>

   void SetNumLock( BOOL bState )
   {
      BYTE keyState[256];

      GetKeyboardState((LPBYTE)&keyState);
      if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
          (!bState && (keyState[VK_NUMLOCK] & 1)) )
      {
      // Simulate a key press
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );

      // Simulate a key release
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      }
   }

   void main()
   {
      SetNumLock( TRUE );
   }

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 winuser.h (包含 Windows.h)
程式庫 User32.lib
Dll User32.dll

另請參閱