keybd_event 함수는 실제 Keyboard의 특정 Key나 Mouse의 Button을 누른 것과 같은 효과를 발생시킵니다.
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
- VB.NET 선언
Private Const VK_CAPITAL = &H14
keybd_event(VK_CAPITAL, 0, 0, 0)
- VB.NET 호출
[DllImport("user32.dll")]
public static extern bool keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
- C# 선언
private const int VK_CAPITAL = 0x14;
keybd_event(VK_CAPITAL, 0, 0, 0);
- C# 호출
함수 호출시 전달해야할 첫번째 인수로는 Keyboard의 가상 Key Code를 지정합니다. 위 예제에서 사용된 인수는 VK_CAPITAL 상수로서 이 상수값은 Keyboard의 Caps Lock Key에 해당하는 값을 가집니다.
그 외 다른 가상 Key Code에 대한 내용은 아래 글을 참고하여 주십시오.
[Windows API for .NET] - 가상 Key Code표
keybd_event 함수의 두번째 인수로는 Scan Code를 지정하고 네번째 인수는 Key인수의 정보를 전달하는 부분입니다.
마지막 인수는 작동할 Key Code에 해당하는 Key가 어떤 형태로 동작할지를 지정하는 것으로 0값이 전달될 경우 key가 눌러지는 경우가 되고, 2의 값이 전달되는 경우에는 Key가 떼지는 동작을 수행하게 됩니다.
따라서 만일 어떠한 Key가 눌러진 상태에서 다시 떨어지는 것을 수행하고자 할때는 다음과 같이 함수를 호출하시면 됩니다.
Private Const VK_CAPITAL = &H14
Private Const KEYEVENTF_KEYUP = &H2
keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0)
- VB.NET
private const int VK_CAPITAL = 0x14;
private const int KEYEVENTF_KEYUP = 0x2;
keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0);
- C#
세번째 인수를 0으로 하여 Caps Lock을 설정한 경우라면 위 KEYUP을 인수로 해서 keybd_event 함수를 한번 더 호출한뒤 다시 0으로 keybd_event 함수를 호출합니다.
이렇게 되면 결과적으로 Caps Lock 설정이 on/off되는 결과를 보이게 될 것입니다.
keybd_event 함수와 비슷한 역활을 수행하는 함수로 SetKeyboardState함수가 있으나 이 함수는 Windows NT혹은 그 이상 Version의 Windows OS에서는 작동하지 않는다는 얘기가 있으므로 참고하여 주십시오.(확실하지 않음)
'.NET > Windows API for .NET' 카테고리의 다른 글
SetCaretPos - Caret의 위치 변경 (0) | 2019.07.31 |
---|---|
GetClientRect - Window나 Control의 좌표값 얻기 (0) | 2019.07.31 |
EnableWindow - Program(Window)및 특정 Control사용가능여부설정 (0) | 2019.07.31 |
LoadCursorFromFile - 새로운 Mouse Cursor의 Load (0) | 2019.07.31 |
가상 Key Code표 (0) | 2019.07.31 |