.NET/Windows API for .NET

GetKeyboardLayout - Keyboard배열및 언어확인

클리엘 2019. 8. 9. 16:25
728x90

GetKeyboardLayout함수는 특정 Thread에서 사용중인 Keyboard의 입력언어및 배열값을 확인합니다.

Declare Function GetKeyboardLayout Lib "user32" Alias "GetKeyboardLayout" (ByVal dwLayout As Integer) As Integer

▶VB.NET 선언

GetKeyboardLayout(0)

▶VB.NET 호출

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int GetKeyboardLayout(int dwLayout);

▶C# 선언

GetKeyboardLayout(0);

▶C# 호출


GetKeyboardLayout함수는 Thread를 구분하는 값을 인수로 건네주며 이때 0을 인수로 전달하면 현재의 Thread를 의미하게 됩니다. 또한 실제 Program에서 GetKeyboardLayout함수를 호출하면 10진수 형태의 숫자로된 값을 반환하는데 이 값을 그대로 인식하기는 어려우므로 다음과 같이 16진수로 변환합니다.

Hex(Val(GetKeyboardLayout(0)))

▶VB.NET

Convert.ToString(GetKeyboardLayout(0), 16);

▶C#


GetKeyboardLayout함수반환값을16진수로 변환하면 전체 8자리 형태의 값이 생성됩니다.

 

X00000000 

 

X는 문자를 의미합니다.

위 값에서 가장 오른쪽 부터 4자리는 현재 키보드의 입력언어를, 이후 4자리는 키보드 Layout을 나타냅니다. 다음은 결과값에 따른 국가별 언어 Layout을 정리한 표입니다.(일부)

 값  국가  Keyboard Layout
 E0010404  중국  번체(Phonetic)
 E0010411  일본  Microsoft Soft IME - 2002
 E0010412  한국  Microsoft Soft IME - 2000
 E0010804  중국  간체(QuanPin)
 E0020412  -  Microsoft Soft IME - 2003

 

728x90