Programming/Windows API
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
0 0