Dreamine.UI.Wpf.Equipment 1.0.1
Dreamine.UI.Wpf.Equipment 사용자 인터페이스 기능과 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
ImeHelper.cs
이 파일의 문서화 페이지로 가기
2
11public static class ImeHelper
12{
21 private const uint IME_CMODE_NATIVE = 0x0001;
22
39 public static bool GetImeMode()
40 {
41 IntPtr hwnd = Win32Api.GetForegroundWindow();
42 IntPtr hIMC = Win32Api.ImmGetContext(hwnd);
43
44 if (hIMC == IntPtr.Zero)
45 return false;
46
47 bool isOpen = Win32Api.ImmGetOpenStatus(hIMC);
48 if (!isOpen)
49 {
50 Win32Api.ImmReleaseContext(hwnd, hIMC);
51 return false;
52 }
53
54 Win32Api.ImmGetConversionStatus(hIMC, out uint conv, out _);
55 Win32Api.ImmReleaseContext(hwnd, hIMC);
56
57 return (conv & IME_CMODE_NATIVE) != 0
58 ? true
59 : false;
60 }
61
86 public static bool SetImeMode(bool native)
87 {
88 IntPtr hwnd = Win32Api.GetForegroundWindow();
89 IntPtr hIMC = Win32Api.ImmGetContext(hwnd);
90
91 if (hIMC == IntPtr.Zero)
92 return false;
93
94 try
95 {
96 Win32Api.ImmSetOpenStatus(hIMC, native);
97
98 if (Win32Api.ImmGetConversionStatus(hIMC, out uint conv, out uint sentence))
99 {
100 conv = native ? conv | IME_CMODE_NATIVE : conv & ~IME_CMODE_NATIVE;
101 Win32Api.ImmSetConversionStatus(hIMC, conv, sentence);
102 }
103
104 return true;
105 }
106 finally
107 {
108 Win32Api.ImmReleaseContext(hwnd, hIMC);
109 }
110 }
111}
static bool ImmSetConversionStatus(IntPtr hIMC, uint fdwConversion, uint fdwSentence)
static bool ImmReleaseContext(IntPtr hWnd, IntPtr hIMC)
static bool ImmGetConversionStatus(IntPtr hIMC, out uint pdwConversion, out uint pdwSentence)
static bool ImmSetOpenStatus(IntPtr hIMC, bool fOpen)