[C#/COMMON] keybd_event API 함수를 사용해 SCROLL LOCK/NUM LOCK/CAPS LOCK 키 토글하기
C#/Common 2021. 8. 28. 13:18728x90
728x170
▶ Program.cs
using System;
using System.Runtime.InteropServices;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Import
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 키보드 이벤트 발생시키기 - keybd_event(virtualKey, scanCode, flag, extraInformationHandle)
/// <summary>
/// 키보드 이벤트 발생시키기
/// </summary>
/// <param name="virtualKey">가상 키</param>
/// <param name="scanCode">스캔 코드</param>
/// <param name="flag">플래그</param>
/// <param name="extraInformationHandle">부가 정보 핸들</param>
[DllImport("user32")]
private static extern void keybd_event(byte virtualKey, byte scanCode, uint flag, IntPtr extraInformationHandle);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// KEYEVENTF_EXTENDEDKEY
/// </summary>
private const uint KEYEVENTF_EXTENDEDKEY = 0x01;
/// <summary>
/// KEYEVENTF_KEYUP
/// </summary>
private const uint KEYEVENTF_KEYUP = 0x02;
/// <summary>
/// VK_SCROLL
/// </summary>
private const byte VK_SCROLL = 0x91;
/// <summary>
/// VK_NUMLOCK
/// </summary>
private const byte VK_NUMLOCK = 0x90;
/// <summary>
/// VK_CAPITAL
/// </summary>
private const byte VK_CAPITAL = 0x14;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
uint keyDown = KEYEVENTF_EXTENDEDKEY;
uint keyUp = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
keybd_event(VK_NUMLOCK, (byte)0, keyDown, new IntPtr(0));
keybd_event(VK_NUMLOCK, (byte)0, keyUp , new IntPtr(0));
keybd_event(VK_CAPITAL, (byte)0, keyDown, new IntPtr(0));
keybd_event(VK_CAPITAL, (byte)0, keyUp , new IntPtr(0));
keybd_event(VK_SCROLL, (byte)0, keyDown, new IntPtr(0));
keybd_event(VK_SCROLL, (byte)0, keyUp , new IntPtr(0));
}
#endregion
}
}
728x90
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 누겟 설치 : NATS.Client (0) | 2021.09.05 |
---|---|
[C#/COMMON] Console 클래스 : KeyAvailable 정적 속성 사용하기 (0) | 2021.08.28 |
[C#/COMMON] Console 클래스 : WindowWidth/WindowHeight 정적 속성 사용하기 (0) | 2021.08.28 |
[C#/COMMON] Console 클래스 : CursorVisible/CursorSize 정적 속성 사용하기 (0) | 2021.08.28 |
[C#/COMMON] DeviceIoControl API 함수를 사용해 디스크 공간에서 파일 압축 설정하기/취소하기 (0) | 2021.08.28 |
[C#/COMMON] Path 클래스 : GetTempPath/GetRandomFileName 정적 메소드를 사용해 임시 파일 경로 구하기 (0) | 2021.08.28 |
[C#/COMMON] GetKeyState API 함수를 사용해 SCROLL LOCK/NUM LOCK/CAPS LOCK 키 눌림 여부 구하기 (0) | 2021.08.27 |
[C#/COMMON] Console 클래스 : NumberLock 정적 속성을 사용해 NUM LOCK 키 눌림 여부 구하기 (0) | 2021.08.27 |
[C#/COMMON] Console 클래스 : CapsLock 정적 속성을 사용해 CAPS LOCK 키 눌림 여부 구하기 (0) | 2021.08.27 |
[C#/COMMON] 볼륨 무음/증가/감소시키기 (0) | 2021.08.27 |