Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: xevuel
Biblioteki C/C++

keybd_event

[funkcja] Symuluje puszczenie lub wciśnięcie klawisza poprzez wysłanie komunikatu WM_KEYUP lub WM_KEYDOWN.

Składnia

C/C++
#include <windows.h>

VOID WINAPI keybd_event(
BYTE bVk,
BYTE bScan,
DWORD dwFlags,
ULONG_PTR dwExtraInfo
);

Argumenty

ArgumentOpis
bVkWirtualny kod klawisza. Wartość musi się zawierać w przedziale od 1 do 254.
bScanSprzętowy kod klawisza.
dwFlagsKontroluje różne aspekty działania funkcji. Możesz użyć dowolnej kombinacji następujących flag:

  • KEYEVENTF_EXTENDEDKEY (0x0001)
    Oznacza, że kod klawisza został poprzedzony prefiksem 0xE0 (224). Używana do oznaczenia klawiszy "specjalnych".

  • KEYEVENTF_KEYUP (0x0002)
    Użycie tej flagi spowoduje zasymulowanie puszczenia klawisza.

dwExtraInfoDodatkowa wartość związana z naciśnięciem klawisza.

Opis szczegółowy

Funkcja keybd_event symuluje puszczenie lub wciśnięcie klawisza poprzez wysłanie komunikatu WM_KEYUP lub WM_KEYDOWN. Można ją też wykorzystać w celu zrobienia zrzutu ekranu - w tym celu należy użyć argumentu bVk ustawionego na VK_SNAPSHOT.

Dodatkowe informacje

Niniejsza funkcja została zastąpiona przez funkcję SendInput.

Wymagania

Minimalny obsługiwany klientWindows 2000 Professional
Minimalny obsługiwany serwerWindows 2000 Server
NagłówekWinuser.h (wewnątrz Windows.h)
BibliotekaUser32.lib
DLLUser32.dll

Przykład

Poniższy kod spowoduje wyłączenie klawisza Caps Lock oraz zgaszenie diody przy tym przycisku (jeśli taka się tam znajduje).
C/C++
#include <windows.h>

void SetCapsLockState( bool bState )
{
    BYTE keysState[ 256 ];
   
    GetKeyboardState(( LPBYTE ) & keysState );
    if(( bState && !( keysState[ VK_CAPITAL ] & 1 ) ) ||( !bState &&( keysState[ VK_CAPITAL ] & 1 ) ) ) //\
     sprawdzenie czy stan klawisza nie odpowiada argumentowi bState, \
     tj. czy np. nie chcemy wyłączyć Caps Locka podczas gdy jest on już wyłączony.
    {
        keybd_event( VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY, 0 ); //symuluje naciśnięcie klawisza
        keybd_event( VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 ); //symuluje zwolnienie klawisza
    }
}

int main()
{
    SetCapsLockState( false ); //wyłączamy Caps Locka.
    return 0;
}

Zagadnienia powiązane

SetKeyboardStateKopiuje tablicę stanów poszczególnych klawiszy do odpowiedniej tablicy wywołującego wątku. (funkcja)

Linki zewnętrzne