Programming/Windows API
LoadKeyboardLayout함수는 함수가 호출된 현재 Process에 인수로 지정한 Keyboard Layout을 Load하도록 합니다.

Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Integer) As Integer
▶VB.NET 선언

'flag 상수
Private Const KLF_ACTIVATE As Integer = &H1
Private Const KLF_NOTELLSHELL As Integer = &H80
Private Const KLF_REORDER As Integer = &H8
Private Const KLF_REPLACELANG As Integer = &H10
Private Const KLF_SUBSTITUTE_OK As Integer = &H2

LoadKeyboardLayout("00000409", KLF_ACTIVATE)

▶VB.NET 호출

[DllImport("user32.dll")]
private static extern int LoadKeyboardLayout(string pwszKLID, int flags);
▶C# 선언

//flag 상수
private const int KLF_ACTIVATE = 1;
private const int KLF_NOTELLSHELL = 128;
private const int KLF_REORDER = 8;
private const int KLF_REPLACELANG = 16;
private const int KLF_SUBSTITUTE_OK = 2;

LoadKeyboardLayout("00000409", KLF_ACTIVATE);

▶C# 호출

함수를 호출할때 전달하는 첫번째 값은 Load하고자 하는 Keyboard의 배열입니다. 이 배열에서 오른쪽 16Bit영역은 언어를 왼쪽 16Bit영역은 Load한 언어를 적용할 장치를 의미합니다.

장치는 대부분의 경우 기본값 0000을 그대로 사용하면 되나 언어는 Load하고자 하는 언어의 종류에 따라 값이 달라지게 됩니다.(위에서 표시된 0409값은 영어를 의미합니다.)

해당 언어의 값에 대한 확인은 다음 글을 참고하여 주시기 바랍니다.

[Develop/Windows API] - GetKeyboardLayoutName - Keyboard Layout 이름 반환

두번째 인수로 지정한 Flag값은 해당 Keyboardlayout을 Load하는 방법을 지정하는 것입니다.

   내용
 KLF_ACTIVATE  지정한 keyboard 배열을 load하고 활성화 합니다. (이미 load된 경우 활성화 부분만 동작합니다.)
 KLF_NOTELLSHELL  지정한 keyboard 배열을 load할때 ShellProc hook procedure로 부터 HSHELL_LANGUAGE hook 값이 전달되지 않도록 합니다.
 KLF_REORDER  지정한 keyboard layout을 배열목록으로 부터 상위로 이동하도록 합니다.
 KLF_REPLACELANG  지정한 keyboard layout의 언어가 현재 활성화된 keyboard layout의 언어와 일치할 경우 지정한 keyboard layout을 해당언어의 배열을 재배치하도록 합니다.
 KLF_SUBSTITUTE_OK  하위 keyboard 배열

LoadKeyboardLayout 함수가 호출될때 함수의 실행이 실패하는 경우에는 Null이, 성공하는 경우 Load하고자 하는 Keyboard배열의 Handle이 반환됩니다.
0 0