「IME.ahk」(2012/11/13 (火) 19:08:02) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<div style="font-family:'MS Gothic', monospace;margin-left:0;line-height:130%;">
<table style="border-collapse:collapse;border-width:0;"><tbody><tr><td style="border-style:solid;border-width:0px 1px 0px 0px;padding:3pt;text-align:right;color:#5A4F25;background-color:#FFFCF2;">
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
60<br />
61<br />
62<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
76<br />
77<br />
78<br />
79<br />
80<br />
81<br />
82<br />
83<br />
84<br />
85<br />
86<br />
87<br />
88<br />
89<br />
90<br />
91<br />
92<br />
93<br />
94<br />
95<br />
96<br />
97<br />
98<br />
99<br />
100<br />
101<br />
102<br />
103<br />
104<br />
105<br />
106<br />
107<br />
108<br />
109<br />
110<br />
111<br />
112<br />
113<br />
114<br />
115<br />
116<br />
117<br />
118<br />
119<br />
120<br />
121<br />
122<br />
123<br />
124<br />
125<br />
126<br />
127<br />
128<br />
129<br />
130<br />
131<br />
132<br />
133<br />
134<br />
135<br />
136<br />
137<br />
138<br />
139<br />
140<br />
141<br />
142<br />
143<br />
144<br />
145<br />
146<br />
147<br />
148<br />
149<br />
150<br />
151<br />
152<br />
153<br />
154<br />
155<br />
156<br />
157<br />
158<br />
159<br />
160<br />
161<br />
162<br />
163<br />
164<br />
165<br />
166<br />
167<br />
168<br />
169<br />
170<br />
171<br />
172<br />
173<br />
174<br />
175<br />
176<br />
177<br />
178<br />
179<br />
180<br />
181<br />
182<br />
183<br />
184<br />
185<br />
186<br />
187<br />
188<br />
189<br />
190<br />
191<br />
192<br />
193<br />
194<br />
195<br />
196<br />
197<br />
198<br />
199<br />
200<br />
201<br />
202<br />
203<br />
204<br />
205<br />
206<br />
207<br />
208<br />
209<br />
210<br />
211<br />
212<br />
213<br />
214<br />
215<br />
216<br />
217<br />
218<br />
219<br />
220<br />
221<br />
222<br />
223<br />
224<br />
225<br />
226<br />
227<br />
228<br />
229<br />
230<br />
231<br />
232<br />
233<br />
234<br />
235<br />
236<br />
237<br />
238<br />
239<br />
240<br />
241<br />
242<br />
243<br />
244<br />
245<br />
246<br />
247<br />
248<br />
249<br />
250<br />
251<br />
252<br />
253<br />
254<br />
255<br />
256<br />
257<br />
258<br />
259<br />
260<br />
261<br />
262<br />
263<br />
264<br />
265<br />
266<br />
267<br />
268<br />
269<br />
270<br />
271<br />
272<br />
273<br />
274<br />
275<br />
276<br />
277<br />
278<br />
279<br />
280<br />
281<br />
282<br />
283<br />
284<br />
285<br />
286<br />
287<br />
288<br />
289<br />
290<br />
291<br />
292<br />
293<br />
294<br />
295<br />
296<br />
297<br />
298<br />
299<br />
300<br />
301<br />
302<br />
303<br />
304<br />
305<br />
306<br />
307<br />
308<br />
309<br />
310<br />
311<br />
312<br />
313<br />
314<br />
315<br />
316<br />
317<br />
318<br />
319<br />
320<br />
321<br />
322<br />
323<br />
324<br />
325<br />
326<br />
327<br />
328<br />
329<br />
330<br />
331<br />
332<br />
333<br />
334<br />
335<br />
336<br />
337<br />
338<br />
339<br />
340<br />
341<br />
342<br />
343<br />
344<br />
345<br />
346<br />
347<br />
348<br />
349<br />
350<br />
351<br />
352<br />
353<br />
354</td>
<td style="white-space:nowrap;padding:5pt;color:#373737;background-color:#FFFCF2;">
<div style="color:#373737;background-color:#FFFCF2;"><span style="color:#008000;background-color:#FFFCF2;">/*****************************************************************************</span><br /><span style="color:#008000;background-color:#FFFCF2;"> IME制御用 関数群
(IME.ahk)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;"> グローバル変数 :
なし</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 各関数の依存性 :
なし(必要関数だけ切出してコピペでも使えます)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;"> AutoHotkey: L
1.1.08.01</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Language:
Japanease</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Platform:
NT系</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Author:
eamat. http://www6.atwiki.jp/eamat/</span><br /><span style="color:#008000;background-color:#FFFCF2;">*****************************************************************************</span><br /><span style="color:#008000;background-color:#FFFCF2;">履歴</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2008.07.11 v1.0.47以降の
関数ライブラリスクリプト対応用にファイル名を変更</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2008.12.10
コメント修正</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.07.03
IME_GetConverting() 追加</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Last Found
Windowが有効にならない問題修正、他。</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.12.03</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ・IME 状態チェック
GUIThreadInfo 利用版 入れ込み</span><br /><span style="color:#008000;background-color:#FFFCF2;">
(IEや秀丸8βでもIME状態が取れるように)</span><br /><span style="color:#008000;background-color:#FFFCF2;">
http://blechmusik.xrea.jp/resources/keyboard_layout/DvorakJ/inc/IME.ahk</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ・Google日本語入力β
向け調整</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 入力モード 及び
変換モードは取れないっぽい</span><br /><span style="color:#008000;background-color:#FFFCF2;"> IME_GET/SET() と
IME_GetConverting()は有効</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;"> 2012.11.10 x64 &
Unicode対応</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 実行環境を AHK_L U64に
(本家およびA32,U32版との互換性は維持したつもり)</span><br /><span style="color:#008000;background-color:#FFFCF2;">
・LongPtr対策:ポインタサイズをA_PtrSizeで見るようにした</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">
;==================================</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;
GUIThreadInfo</span><br /><span style="color:#008000;background-color:#FFFCF2;">
;=================================</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; 構造体
GUITreadInfo</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;typedef
struct tagGUITHREADINFO {(x86) (x64)</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;
DWORD cbSize; 0 0</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;
DWORD flags; 4 4 ※</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndActive; 8 8</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndFocus; 12 16 ※</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndCapture; 16 24</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndMenuOwner; 20 32</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndMoveSize; 24 40</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndCaret; 28 48</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; RECT
rcCaret; 32 56</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;}
GUITHREADINFO, *PGUITHREADINFO;</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">
・WinTitleパラメータが実質無意味化していたのを修正</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 対象がアクティブウィンドウの時のみ
GetGUIThreadInfoを使い</span><br /><span style="color:#008000;background-color:#FFFCF2;">
そうでないときはControlハンドルを使用</span><br /><span style="color:#008000;background-color:#FFFCF2;">
一応バックグラウンドのIME情報も取れるように戻した</span><br /><span style="color:#008000;background-color:#FFFCF2;">
(取得ハンドルをWindowからControlに変えたことでブラウザ以外の大半の</span><br /><span style="color:#008000;background-color:#FFFCF2;">
アプリではバックグラウンドでも正しく値が取れるようになった。</span><br /><span style="color:#008000;background-color:#FFFCF2;">
※ブラウザ系でもアクティブ窓のみでの使用なら問題ないと思う、たぶん)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">*/</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 動作確認用 内部ルーチン
(マウスカーソル位置のウィンドウのIME状態を見る)</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
単体起動時のテスト用なので削除しても問題なし</span><br /><div style="color:#000080;background-color:#EEEEEE;">
_ImeAutoExecuteSample:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">Hotkey</span>,#<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,_ImeGetTest<br />
<span style="color:#5353FF;background-color:#FFFCF2;">Hotkey</span>,#<span style="color:#0000FF;background-color:#FFFCF2;">2</span>,_ImeSetTest<br />
<span style="color:#5353FF;background-color:#FFFCF2;">Hotkey</span>,#<span style="color:#0000FF;background-color:#FFFCF2;">3</span>,_ImeIsConvertingTest<br />
<span style="color:#5353FF;background-color:#FFFCF2;">Hotkey</span>,+<span style="color:#EE7264;background-color:#FFFCF2;">ESC</span>,_ImeTestExt<br />
<span style="color:#5353FF;background-color:#FFFCF2;">SetTimer</span>,_ImeInfoTimer,<span style="color:#9425A7;background-color:#FFFCF2;">ON</span><br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;--- IME状態表示タイマ
---</span><br /><div style="color:#000080;background-color:#EEEEEE;">_ImeInfoTimer:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">Tooltip</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>"IME_GET : " .
IME_GET(_mhwnd()) . "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetConvMode : " . IME_GetConvMode(_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetSentenceMode : " . IME_GetSentenceMode(_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetConverting : " . IME_GetConverting(_mhwnd())<br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;--- IME Get Test
[Win]+[1] ---</span><br /><div style="color:#000080;background-color:#EEEEEE;">_ImeGetTest:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">MsgBox</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>"IME_GET : " .
IME_GET(_mhwnd()) . "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetConvMode : " . IME_GetConvMode(_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetSentenceMode : " . IME_GetSentenceMode(_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><span style="color:#008000;background-color:#FFFCF2;">;--- IME Get Test
[Win]+[2] ---</span><br /><div style="color:#000080;background-color:#EEEEEE;">_ImeSetTest:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">MsgBox</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>"IME_SET : " .
IME_SET(<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_SetConvMode : " . IME_SetConvMode(<span style="color:#0000FF;background-color:#FFFCF2;">0x08</span>,_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_SetSentenceMode : " . IME_SetSentenceMode(<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,_mhwnd()) . "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br /><div style="color:#FF0000;background-color:#FFE6EE;">_mhwnd(){<span style="color:#008000;background-color:#FFE6EE;"> ;background test</span></div>
<span style="color:#5353FF;background-color:#FFFCF2;">MouseGetPos</span>,x,,hwnd<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>"<span style="color:#9425A7;background-color:#FFFCF2;">ahk_id</span>" . hwnd<br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
IME窓のクラス名を調べるテストルーチン</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
入力or変換状態でIme窓にマウスカーソル持ってって [Win]+[3]押す</span><br /><span style="color:#008000;background-color:#FFFCF2;">; Clipboardに
Class名がコピーされる。入力窓/候補窓 それぞれ調べる。</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 調べたクラス名は
正規表現になおして</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
IME_GetConverting("A","入力窓クラス","候補窓クラス")</span><br /><span style="color:#008000;background-color:#FFFCF2;">; とかやって使う。(もしくは
IME_GetConverting()の中に直接追加する)</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; あああ ← 入力窓の上に
マウスカーソル持ってって [Win]+[3]押す</span><br /><span style="color:#008000;background-color:#FFFCF2;">;  ̄ ̄ ̄ Clipboardに
Class名がコピーされる。</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ※ MS
Office系のシームレス入力状態では取れないっぽい</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
DetectHiddenWindows,ONでもダメ。シームレスOFFにしないと無理</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 愛</span><br /><span style="color:#008000;background-color:#FFFCF2;">; |愛 | ←
候補窓の上にマウスカーソル持ってって [Win]+[3]押す</span><br /><span style="color:#008000;background-color:#FFFCF2;">; |亜依 | Clipboardに
Class名がコピーされる。</span><br /><span style="color:#008000;background-color:#FFFCF2;">; |あい |</span><br /><span style="color:#008000;background-color:#FFFCF2;">; |藍 |</span><br /><span style="color:#008000;background-color:#FFFCF2;">; | : |</span><br /><span style="color:#008000;background-color:#FFFCF2;">;  ̄ ̄ ̄ ̄</span><br /><span style="color:#008000;background-color:#FFFCF2;">;------------------------------------------------------------------</span><br /><div style="color:#000080;background-color:#EEEEEE;">
_ImeIsConvertingTest:</div>
_ImeTestClassCheck()<br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">_ImeTestClassCheck()
{</div>
<span style="color:#5353FF;background-color:#FFFCF2;">MouseGetPos</span>,,,hwnd<br />
<span style="color:#5353FF;background-color:#FFFCF2;">WinGetClass</span>,Imeclass,<span style="color:#9425A7;background-color:#FFFCF2;">ahk_id</span><span style="color:#EE7264;background-color:#FFFCF2;">%</span>hwnd<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#EE7264;background-color:#FFFCF2;">Clipboard</span>:=
Imeclass<br />
<span style="color:#008000;background-color:#FFFCF2;">;IME_GetConverting()
動作チェック & IME 入力窓/候補窓 Class名確認</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">MsgBox</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>Imeclass "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>" IME_GetConverting()<br />
}<br /><span style="color:#008000;background-color:#FFFCF2;">;--- 常駐テスト終了
[Shift]+[ESC] ---</span><br /><div style="color:#000080;background-color:#EEEEEE;">_ImeTestExt:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ExitApp</span><br /><span style="color:#008000;background-color:#FFFCF2;">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;---------------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 汎用関数
(多分どのIMEでもいけるはず)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IMEの状態の取得</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 1:ON /
0:OFF</span><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">IME_GET(WinTitle="A")
{</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ?<span style="color:#0000FF;background-color:#FFFCF2;">4</span>: A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize,
stGTI, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
"UInt") <span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd :=<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
?<span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span><span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt,<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt,<span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span><span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0x0005</span><span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_GETOPENSTATUS</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>) <span style="color:#008000;background-color:#FFFCF2;">;lParam : 0</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IMEの状態をセット</span><br /><span style="color:#008000;background-color:#FFFCF2;">; SetSts 1:ON
/ 0:OFF</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 0:成功 /
0以外:失敗</span><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">IME_SET(SetSts,
WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ?<span style="color:#0000FF;background-color:#FFFCF2;">4</span>: A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize,
stGTI, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
"UInt") <span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd :=<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
?<span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span><span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt,<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt,<span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span><span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0x006</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_SETOPENSTATUS</span><br />
, Int, SetSts)<span style="color:#008000;background-color:#FFFCF2;">;lParam : 0 or 1</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;===========================================================================</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 入力モード (どの
IMEでも共通っぽい)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; DEC HEX
BIN</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 0 (0x00 0000 0000)
かな 半英数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 3 (0x03 0000
0011) 半カナ</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 8 (0x08 0000
1000) 全英数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 9 (0x09 0000
1001) ひらがな</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 11 (0x0B 0000
1011) 全カタカナ</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 16 (0x10 0001 0000)
ローマ字半英数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 19 (0x13 0001
0011) 半カナ</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 24 (0x18 0001
1000) 全英数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 25 (0x19 0001
1001) ひらがな</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 27 (0x1B 0001
1011) 全カタカナ</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">; ※ 地域と言語のオプション - [詳細] -
詳細設定</span><br /><span style="color:#008000;background-color:#FFFCF2;">; -
詳細なテキストサービスのサポートをプログラムのすべてに拡張する</span><br /><span style="color:#008000;background-color:#FFFCF2;">; が
ONになってると値が取れない模様</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
(Google日本語入力βはここをONにしないと駄目なので値が取れないっぽい)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;-------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 入力モード取得</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値
入力モード</span><br /><span style="color:#008000;background-color:#FFFCF2;">;--------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_GetConvMode(WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ?<span style="color:#0000FF;background-color:#FFFCF2;">4</span>: A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize,
stGTI, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
"UInt") <span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd :=<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
?<span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span><span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt,<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt,<span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span><span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0x001</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_GETCONVERSIONMODE</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>) <span style="color:#008000;background-color:#FFFCF2;">;lParam : 0</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;-------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 入力モードセット</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ConvMode
入力モード</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 0:成功 /
0以外:失敗</span><br /><span style="color:#008000;background-color:#FFFCF2;">;--------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_SetConvMode(ConvMode,WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ?<span style="color:#0000FF;background-color:#FFFCF2;">4</span>: A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize,
stGTI, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
"UInt") <span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd :=<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
?<span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span><span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt,<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt,<span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span> <span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0x002</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_SETCONVERSIONMODE</span><br />
, Int, ConvMode) <span style="color:#008000;background-color:#FFFCF2;">;lParam : CONVERSIONMODE</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;===========================================================================</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 変換モード
(ATOKはver.16で調査、バージョンで多少違うかも)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">; MS-IME 0:無変換 /
1:人名/地名 / 8:一般 /16:話し言葉</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ATOK系 0:固定 /
1:複合語 / 4:自動 / 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WXG /
1:複合語 / 2:無変換 / 4:自動 / 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; SKK系 /
1:ノーマル (他のモードは存在しない?)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; Googleβ
/ 8:ノーマル</span><br /><span style="color:#008000;background-color:#FFFCF2;">;------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 変換モード取得</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 MS-IME 0:無変換
1:人名/地名 8:一般 16:話し言葉</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ATOK系 0:固定
1:複合語 4:自動 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WXG4
1:複合語 2:無変換 4:自動 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">;------------------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_GetSentenceMode(WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ?<span style="color:#0000FF;background-color:#FFFCF2;">4</span>: A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize,
stGTI, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
"UInt") <span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd :=<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
?<span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span><span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt,<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt,<span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span><span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0x003</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_GETSENTENCEMODE</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>) <span style="color:#008000;background-color:#FFFCF2;">;lParam : 0</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;----------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 変換モードセット</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
SentenceMode</span><br /><span style="color:#008000;background-color:#FFFCF2;">; MS-IME 0:無変換
1:人名/地名 8:一般 16:話し言葉</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ATOK系 0:固定
1:複合語 4:自動 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WXG
1:複合語 2:無変換 4:自動 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 0:成功 /
0以外:失敗</span><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_SetSentenceMode(SentenceMode,WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ?<span style="color:#0000FF;background-color:#FFFCF2;">4</span>: A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize,
stGTI, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
"UInt") <span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd :=<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
?<span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span><span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt,<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt,<span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span> <span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int,<span style="color:#0000FF;background-color:#FFFCF2;">0x004</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_SETSENTENCEMODE</span><br />
, Int, SentenceMode) <span style="color:#008000;background-color:#FFFCF2;">;lParam : SentenceMode</span><br />
}<br /><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;---------------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
IMEの種類を選ぶかもしれない関数</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;==========================================================================</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME
文字入力の状態を返す</span><br /><span style="color:#008000;background-color:#FFFCF2;">; (パクリ元 :
http://sites.google.com/site/agkh6mze/scripts#TOC-IME- )</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 標準対応IME : ATOK系 /
MS-IME2002 2007 / WXG / SKKIME</span><br /><span style="color:#008000;background-color:#FFFCF2;">; その他のIMEは
入力窓/変換窓を追加指定することで対応可能</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ConvCls=""
入力窓のクラス名 (正規表現表記)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; CandCls=""
候補窓のクラス名 (正規表現表記)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 1 :
文字入力中 or 変換中</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 2 :
変換候補窓が出ている</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 0 :
その他の状態</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ※ MS-Office系で
入力窓のクラス名 を正しく取得するにはIMEのシームレス表示を</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
OFFにする必要がある</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
オプション-編集と日本語入力-編集中の文字列を文書に挿入モードで入力する</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
のチェックを外す</span><br /><span style="color:#008000;background-color:#FFFCF2;">;==========================================================================</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_GetConverting(WinTitle="A",ConvCls="",CandCls="") {</div>
<br />
<span style="color:#008000;background-color:#FFFCF2;">;IME毎の 入力窓/候補窓Class一覧
("|" 区切りで適当に足してけばOK)</span><br />
ConvCls .= (ConvCls ? "|" :<span style="color:#EE7264;background-color:#FFFCF2;">""</span>) <span style="color:#008000;background-color:#FFFCF2;">;--- 入力窓 ---</span><br />
. "ATOK<span style="color:#800080;background-color:#FFF4FF;">\d</span>+CompStr"
<span style="color:#008000;background-color:#FFFCF2;">; ATOK系</span><br />
. "|imejpstcnv<span style="color:#800080;background-color:#FFF4FF;">\d</span>+"
<span style="color:#008000;background-color:#FFFCF2;">; MS-IME系</span><br />
. "|WXGIMEConv" <span style="color:#008000;background-color:#FFFCF2;">; WXG</span><br />
. "|SKKIME<span style="color:#800080;background-color:#FFF4FF;">\d</span>+<span style="color:#800080;background-color:#FFF4FF;">\.</span>*<span style="color:#800080;background-color:#FFF4FF;">\d</span>+UCompStr"
<span style="color:#008000;background-color:#FFFCF2;">; SKKIME
Unicode</span><br />
. "|MSCTFIME Composition" <span style="color:#008000;background-color:#FFFCF2;">; Google日本語入力</span><br /><br />
CandCls .= (CandCls ? "|" :<span style="color:#EE7264;background-color:#FFFCF2;">""</span>) <span style="color:#008000;background-color:#FFFCF2;">;--- 候補窓 ---</span><br />
. "ATOK<span style="color:#800080;background-color:#FFF4FF;">\d</span>+Cand"
<span style="color:#008000;background-color:#FFFCF2;">; ATOK系</span><br />
. "|imejpstCandList<span style="color:#800080;background-color:#FFF4FF;">\d</span>+|imejpstcand<span style="color:#800080;background-color:#FFF4FF;">\d</span>+"<span style="color:#008000;background-color:#FFFCF2;">; MS-IME 2002(8.1)XP付属</span><br />
. "|mscandui<span style="color:#800080;background-color:#FFF4FF;">\d</span>+<span style="color:#800080;background-color:#FFF4FF;">\.</span>candidate"
<span style="color:#008000;background-color:#FFFCF2;">; MS Office
IME-2007</span><br />
. "|WXGIMECand" <span style="color:#008000;background-color:#FFFCF2;">; WXG</span><br />
. "|SKKIME<span style="color:#800080;background-color:#FFF4FF;">\d</span>+<span style="color:#800080;background-color:#FFF4FF;">\.</span>*<span style="color:#800080;background-color:#FFF4FF;">\d</span>+UCand"
<span style="color:#008000;background-color:#FFFCF2;">; SKKIME
Unicode</span><br />
CandGCls := "GoogleJapaneseInputCandidateWindow"<span style="color:#008000;background-color:#FFFCF2;">;Google日本語入力</span><br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ?<span style="color:#0000FF;background-color:#FFFCF2;">4</span>: A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize,
stGTI, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
"UInt") <span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd :=<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
?<span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">WinGet</span>, pid,
PID,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>"<span style="color:#9425A7;background-color:#FFFCF2;">ahk_id</span>" hwnd<br />
tmm:=<span style="color:#EE7264;background-color:#FFFCF2;">A_TitleMatchMode</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">SetTitleMatchMode</span>, RegEx<br />
ret :=<span style="color:#4A0095;background-color:#FFFCF2;">WinExist</span>("<span style="color:#9425A7;background-color:#FFFCF2;">ahk_class</span>" . CandCls .
"<span style="color:#9425A7;background-color:#FFFCF2;">ahk_pid</span>" pid)
?<span style="color:#0000FF;background-color:#FFFCF2;">2</span><br />
: <span style="color:#4A0095;background-color:#FFFCF2;">WinExist</span>("<span style="color:#9425A7;background-color:#FFFCF2;">ahk_class</span>" . CandGCls
) ?<span style="color:#0000FF;background-color:#FFFCF2;">2</span><br />
: <span style="color:#4A0095;background-color:#FFFCF2;">WinExist</span>("<span style="color:#9425A7;background-color:#FFFCF2;">ahk_class</span>" . ConvCls .
"<span style="color:#9425A7;background-color:#FFFCF2;">ahk_pid</span>" pid)
?<span style="color:#0000FF;background-color:#FFFCF2;">1</span><br />
: <span style="color:#0000FF;background-color:#FFFCF2;">0</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">SetTitleMatchMode</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>tmm<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>ret<br />
}<br />
</div>
</td>
</tr></tbody></table></div>
<div style="font-family:'MS Gothic', monospace;margin-left:1em;line-height:130%;">
<table style="border-collapse:collapse;border-width:0;"><tr><td style="border-style:solid;border-width:0px 1px 0px 0px;padding:3pt;text-align:right;color:#5A4F25;background-color:#FFFCF2;">
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
31<br />
32<br />
33<br />
34<br />
35<br />
36<br />
37<br />
38<br />
39<br />
40<br />
41<br />
42<br />
43<br />
44<br />
45<br />
46<br />
47<br />
48<br />
49<br />
50<br />
51<br />
52<br />
53<br />
54<br />
55<br />
56<br />
57<br />
58<br />
59<br />
60<br />
61<br />
62<br />
63<br />
64<br />
65<br />
66<br />
67<br />
68<br />
69<br />
70<br />
71<br />
72<br />
73<br />
74<br />
75<br />
76<br />
77<br />
78<br />
79<br />
80<br />
81<br />
82<br />
83<br />
84<br />
85<br />
86<br />
87<br />
88<br />
89<br />
90<br />
91<br />
92<br />
93<br />
94<br />
95<br />
96<br />
97<br />
98<br />
99<br />
100<br />
101<br />
102<br />
103<br />
104<br />
105<br />
106<br />
107<br />
108<br />
109<br />
110<br />
111<br />
112<br />
113<br />
114<br />
115<br />
116<br />
117<br />
118<br />
119<br />
120<br />
121<br />
122<br />
123<br />
124<br />
125<br />
126<br />
127<br />
128<br />
129<br />
130<br />
131<br />
132<br />
133<br />
134<br />
135<br />
136<br />
137<br />
138<br />
139<br />
140<br />
141<br />
142<br />
143<br />
144<br />
145<br />
146<br />
147<br />
148<br />
149<br />
150<br />
151<br />
152<br />
153<br />
154<br />
155<br />
156<br />
157<br />
158<br />
159<br />
160<br />
161<br />
162<br />
163<br />
164<br />
165<br />
166<br />
167<br />
168<br />
169<br />
170<br />
171<br />
172<br />
173<br />
174<br />
175<br />
176<br />
177<br />
178<br />
179<br />
180<br />
181<br />
182<br />
183<br />
184<br />
185<br />
186<br />
187<br />
188<br />
189<br />
190<br />
191<br />
192<br />
193<br />
194<br />
195<br />
196<br />
197<br />
198<br />
199<br />
200<br />
201<br />
202<br />
203<br />
204<br />
205<br />
206<br />
207<br />
208<br />
209<br />
210<br />
211<br />
212<br />
213<br />
214<br />
215<br />
216<br />
217<br />
218<br />
219<br />
220<br />
221<br />
222<br />
223<br />
224<br />
225<br />
226<br />
227<br />
228<br />
229<br />
230<br />
231<br />
232<br />
233<br />
234<br />
235<br />
236<br />
237<br />
238<br />
239<br />
240<br />
241<br />
242<br />
243<br />
244<br />
245<br />
246<br />
247<br />
248<br />
249<br />
250<br />
251<br />
252<br />
253<br />
254<br />
255<br />
256<br />
257<br />
258<br />
259<br />
260<br />
261<br />
262<br />
263<br />
264<br />
265<br />
266<br />
267<br />
268<br />
269<br />
270<br />
271<br />
272<br />
273<br />
274<br />
275<br />
276<br />
277<br />
278<br />
279<br />
280<br />
281<br />
282<br />
283<br />
284<br />
285<br />
286<br />
287<br />
288<br />
289<br />
290<br />
291<br />
292<br />
293<br />
294<br />
295<br />
296<br />
297<br />
298<br />
299<br />
300<br />
301<br />
302<br />
303<br />
304<br />
305<br />
306<br />
307<br />
308<br />
309<br />
310<br />
311<br />
312<br />
313<br />
314<br />
315<br />
316<br />
317<br />
318<br />
319<br />
320<br />
321<br />
322<br />
323<br />
324<br />
325<br />
326<br />
327<br />
328<br />
329<br />
330<br />
331<br />
332<br />
333<br />
334<br />
335<br />
336<br />
337<br />
338<br />
339<br />
340<br />
341<br />
342<br />
343<br />
344<br />
345<br />
346<br />
347<br />
348<br />
349<br />
350<br />
351<br />
352<br />
353<br />
354<br /></td>
<td style="white-space:nowrap;padding:5pt;color:#373737;background-color:#FFFCF2;">
<div style="color:#373737;background-color:#FFFCF2;"><span style="color:#008000;background-color:#FFFCF2;">/*****************************************************************************</span><br /><span style="color:#008000;background-color:#FFFCF2;"> IME制御用 関数群
(IME.ahk)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;"> グローバル変数 :
なし</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 各関数の依存性 :
なし(必要関数だけ切出してコピペでも使えます)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;"> AutoHotkey: L
1.1.08.01</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Language:
Japanease</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Platform:
NT系</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Author:
eamat. http://www6.atwiki.jp/eamat/</span><br /><span style="color:#008000;background-color:#FFFCF2;">*****************************************************************************</span><br /><span style="color:#008000;background-color:#FFFCF2;">履歴</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2008.07.11 v1.0.47以降の
関数ライブラリスクリプト対応用にファイル名を変更</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2008.12.10
コメント修正</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.07.03
IME_GetConverting() 追加</span><br /><span style="color:#008000;background-color:#FFFCF2;"> Last Found
Windowが有効にならない問題修正、他。</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 2009.12.03</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ・IME 状態チェック
GUIThreadInfo 利用版 入れ込み</span><br /><span style="color:#008000;background-color:#FFFCF2;">
(IEや秀丸8βでもIME状態が取れるように)</span><br /><span style="color:#008000;background-color:#FFFCF2;">
http://blechmusik.xrea.jp/resources/keyboard_layout/DvorakJ/inc/IME.ahk</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ・Google日本語入力β
向け調整</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 入力モード 及び
変換モードは取れないっぽい</span><br /><span style="color:#008000;background-color:#FFFCF2;"> IME_GET/SET() と
IME_GetConverting()は有効</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;"> 2012.11.10 x64 &
Unicode対応</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 実行環境を AHK_L U64に
(本家およびA32,U32版との互換性は維持したつもり)</span><br /><span style="color:#008000;background-color:#FFFCF2;">
・LongPtr対策:ポインタサイズをA_PtrSizeで見るようにした</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">
;==================================</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;
GUIThreadInfo</span><br /><span style="color:#008000;background-color:#FFFCF2;">
;=================================</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; 構造体
GUITreadInfo</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;typedef
struct tagGUITHREADINFO {(x86) (x64)</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;
DWORD cbSize; 0 0</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;
DWORD flags; 4 4 ※</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndActive; 8 8</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndFocus; 12 16 ※</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndCapture; 16 24</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndMenuOwner; 20 32</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndMoveSize; 24 40</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; HWND
hwndCaret; 28 48</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ; RECT
rcCaret; 32 56</span><br /><span style="color:#008000;background-color:#FFFCF2;"> ;}
GUITHREADINFO, *PGUITHREADINFO;</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">
・WinTitleパラメータが実質無意味化していたのを修正</span><br /><span style="color:#008000;background-color:#FFFCF2;"> 対象がアクティブウィンドウの時のみ
GetGUIThreadInfoを使い</span><br /><span style="color:#008000;background-color:#FFFCF2;">
そうでないときはControlハンドルを使用</span><br /><span style="color:#008000;background-color:#FFFCF2;">
一応バックグラウンドのIME情報も取れるように戻した</span><br /><span style="color:#008000;background-color:#FFFCF2;">
(取得ハンドルをWindowからControlに変えたことでブラウザ以外の大半の</span><br /><span style="color:#008000;background-color:#FFFCF2;">
アプリではバックグラウンドでも正しく値が取れるようになった。</span><br /><span style="color:#008000;background-color:#FFFCF2;">
※ブラウザ系でもアクティブ窓のみでの使用なら問題ないと思う、たぶん)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">*/</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 動作確認用 内部ルーチン
(マウスカーソル位置のウィンドウのIME状態を見る)</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
単体起動時のテスト用なので削除しても問題なし</span><br /><div style="color:#000080;background-color:#EEEEEE;">
_ImeAutoExecuteSample:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">Hotkey</span>,#<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,_ImeGetTest<br />
<span style="color:#5353FF;background-color:#FFFCF2;">Hotkey</span>,#<span style="color:#0000FF;background-color:#FFFCF2;">2</span>,_ImeSetTest<br />
<span style="color:#5353FF;background-color:#FFFCF2;">Hotkey</span>,#<span style="color:#0000FF;background-color:#FFFCF2;">3</span>,_ImeIsConvertingTest<br />
<span style="color:#5353FF;background-color:#FFFCF2;">Hotkey</span>,+<span style="color:#EE7264;background-color:#FFFCF2;">ESC</span>,_ImeTestExt<br />
<span style="color:#5353FF;background-color:#FFFCF2;">SetTimer</span>,_ImeInfoTimer,<span style="color:#9425A7;background-color:#FFFCF2;">ON</span><br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;--- IME状態表示タイマ
---</span><br /><div style="color:#000080;background-color:#EEEEEE;">_ImeInfoTimer:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">Tooltip</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span> "IME_GET : " .
IME_GET(_mhwnd()) . "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetConvMode : " . IME_GetConvMode(_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetSentenceMode : " . IME_GetSentenceMode(_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetConverting : " . IME_GetConverting(_mhwnd())<br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;--- IME Get Test
[Win]+[1] ---</span><br /><div style="color:#000080;background-color:#EEEEEE;">_ImeGetTest:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">MsgBox</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span> "IME_GET : " .
IME_GET(_mhwnd()) . "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetConvMode : " . IME_GetConvMode(_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_GetSentenceMode : " . IME_GetSentenceMode(_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><span style="color:#008000;background-color:#FFFCF2;">;--- IME Get Test
[Win]+[2] ---</span><br /><div style="color:#000080;background-color:#EEEEEE;">_ImeSetTest:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">MsgBox</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span> "IME_SET : " .
IME_SET(<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_SetConvMode : " . IME_SetConvMode(<span style="color:#0000FF;background-color:#FFFCF2;">0x08</span>,_mhwnd()) .
"<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br />
. "IME_SetSentenceMode : " . IME_SetSentenceMode(<span style="color:#0000FF;background-color:#FFFCF2;">1</span>,_mhwnd()) . "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>"<br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><br /><div style="color:#FF0000;background-color:#FFE6EE;">_mhwnd(){<span style="color:#008000;background-color:#FFE6EE;"> ;background test</span></div>
<span style="color:#5353FF;background-color:#FFFCF2;">MouseGetPos</span>,x,,hwnd<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
"<span style="color:#9425A7;background-color:#FFFCF2;">ahk_id</span> " .
hwnd<br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
IME窓のクラス名を調べるテストルーチン</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
入力or変換状態でIme窓にマウスカーソル持ってって [Win]+[3]押す</span><br /><span style="color:#008000;background-color:#FFFCF2;">; Clipboardに
Class名がコピーされる。入力窓/候補窓 それぞれ調べる。</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 調べたクラス名は
正規表現になおして</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
IME_GetConverting("A","入力窓クラス","候補窓クラス")</span><br /><span style="color:#008000;background-color:#FFFCF2;">; とかやって使う。(もしくは
IME_GetConverting()の中に直接追加する)</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; あああ ← 入力窓の上に
マウスカーソル持ってって [Win]+[3]押す</span><br /><span style="color:#008000;background-color:#FFFCF2;">;  ̄ ̄ ̄ Clipboardに
Class名がコピーされる。</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ※ MS
Office系のシームレス入力状態では取れないっぽい</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
DetectHiddenWindows,ONでもダメ。シームレスOFFにしないと無理</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 愛</span><br /><span style="color:#008000;background-color:#FFFCF2;">; |愛 | ←
候補窓の上にマウスカーソル持ってって [Win]+[3]押す</span><br /><span style="color:#008000;background-color:#FFFCF2;">; |亜依 | Clipboardに
Class名がコピーされる。</span><br /><span style="color:#008000;background-color:#FFFCF2;">; |あい |</span><br /><span style="color:#008000;background-color:#FFFCF2;">; |藍 |</span><br /><span style="color:#008000;background-color:#FFFCF2;">; | : |</span><br /><span style="color:#008000;background-color:#FFFCF2;">;  ̄ ̄ ̄ ̄</span><br /><span style="color:#008000;background-color:#FFFCF2;">;------------------------------------------------------------------</span><br /><div style="color:#000080;background-color:#EEEEEE;">
_ImeIsConvertingTest:</div>
_ImeTestClassCheck()<br /><span style="color:#5353FF;background-color:#FFFCF2;">return</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">_ImeTestClassCheck()
{</div>
<span style="color:#5353FF;background-color:#FFFCF2;">MouseGetPos</span>,,,hwnd<br />
<span style="color:#5353FF;background-color:#FFFCF2;">WinGetClass</span>,Imeclass,<span style="color:#9425A7;background-color:#FFFCF2;">ahk_id</span>
<span style="color:#EE7264;background-color:#FFFCF2;">%</span>hwnd<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#EE7264;background-color:#FFFCF2;">Clipboard</span> :=
Imeclass<br />
<span style="color:#008000;background-color:#FFFCF2;">;IME_GetConverting()
動作チェック & IME 入力窓/候補窓 Class名確認</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">MsgBox</span>,<span style="color:#EE7264;background-color:#FFFCF2;">%</span> Imeclass "<span style="color:#EE7264;background-color:#FFFCF2;">`n</span>" IME_GetConverting()<br />
}<br /><span style="color:#008000;background-color:#FFFCF2;">;--- 常駐テスト終了
[Shift]+[ESC] ---</span><br /><div style="color:#000080;background-color:#EEEEEE;">_ImeTestExt:</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ExitApp</span><br /><span style="color:#008000;background-color:#FFFCF2;">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;---------------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 汎用関数
(多分どのIMEでもいけるはず)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IMEの状態の取得</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 1:ON /
0:OFF</span><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">IME_GET(WinTitle="A")
{</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ? <span style="color:#0000FF;background-color:#FFFCF2;">4</span> : A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize, stGTI,
<span style="color:#0000FF;background-color:#FFFCF2;">0</span>, "UInt")
<span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd := <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
? <span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt, <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt, <span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span> <span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0x0005</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_GETOPENSTATUS</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>) <span style="color:#008000;background-color:#FFFCF2;">;lParam : 0</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IMEの状態をセット</span><br /><span style="color:#008000;background-color:#FFFCF2;">; SetSts 1:ON
/ 0:OFF</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 0:成功 /
0以外:失敗</span><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">IME_SET(SetSts,
WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ? <span style="color:#0000FF;background-color:#FFFCF2;">4</span> : A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize, stGTI,
<span style="color:#0000FF;background-color:#FFFCF2;">0</span>, "UInt")
<span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd := <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
? <span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt, <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt, <span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span> <span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0x006</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_SETOPENSTATUS</span><br />
, Int, SetSts) <span style="color:#008000;background-color:#FFFCF2;">;lParam : 0 or 1</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;===========================================================================</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 入力モード (どの
IMEでも共通っぽい)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; DEC HEX
BIN</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 0 (0x00 0000 0000)
かな 半英数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 3 (0x03 0000
0011) 半カナ</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 8 (0x08 0000
1000) 全英数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 9 (0x09 0000
1001) ひらがな</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 11 (0x0B 0000
1011) 全カタカナ</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 16 (0x10 0001 0000)
ローマ字半英数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 19 (0x13 0001
0011) 半カナ</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 24 (0x18 0001
1000) 全英数</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 25 (0x19 0001
1001) ひらがな</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 27 (0x1B 0001
1011) 全カタカナ</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">; ※ 地域と言語のオプション - [詳細] -
詳細設定</span><br /><span style="color:#008000;background-color:#FFFCF2;">; -
詳細なテキストサービスのサポートをプログラムのすべてに拡張する</span><br /><span style="color:#008000;background-color:#FFFCF2;">; が
ONになってると値が取れない模様</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
(Google日本語入力βはここをONにしないと駄目なので値が取れないっぽい)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;-------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 入力モード取得</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値
入力モード</span><br /><span style="color:#008000;background-color:#FFFCF2;">;--------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_GetConvMode(WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ? <span style="color:#0000FF;background-color:#FFFCF2;">4</span> : A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize, stGTI,
<span style="color:#0000FF;background-color:#FFFCF2;">0</span>, "UInt")
<span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd := <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
? <span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt, <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt, <span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span> <span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0x001</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_GETCONVERSIONMODE</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>) <span style="color:#008000;background-color:#FFFCF2;">;lParam : 0</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;-------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 入力モードセット</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ConvMode
入力モード</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 0:成功 /
0以外:失敗</span><br /><span style="color:#008000;background-color:#FFFCF2;">;--------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_SetConvMode(ConvMode,WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ? <span style="color:#0000FF;background-color:#FFFCF2;">4</span> : A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize, stGTI,
<span style="color:#0000FF;background-color:#FFFCF2;">0</span>, "UInt")
<span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd := <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
? <span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt, <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt, <span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span> <span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0x002</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_SETCONVERSIONMODE</span><br />
, Int, ConvMode) <span style="color:#008000;background-color:#FFFCF2;">;lParam : CONVERSIONMODE</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;===========================================================================</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 変換モード
(ATOKはver.16で調査、バージョンで多少違うかも)</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">; MS-IME 0:無変換 /
1:人名/地名 / 8:一般 /16:話し言葉</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ATOK系 0:固定 /
1:複合語 / 4:自動 / 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WXG /
1:複合語 / 2:無変換 / 4:自動 / 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; SKK系 /
1:ノーマル (他のモードは存在しない?)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; Googleβ
/ 8:ノーマル</span><br /><span style="color:#008000;background-color:#FFFCF2;">;------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 変換モード取得</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 MS-IME 0:無変換
1:人名/地名 8:一般 16:話し言葉</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ATOK系 0:固定
1:複合語 4:自動 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WXG4
1:複合語 2:無変換 4:自動 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">;------------------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_GetSentenceMode(WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ? <span style="color:#0000FF;background-color:#FFFCF2;">4</span> : A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize, stGTI,
<span style="color:#0000FF;background-color:#FFFCF2;">0</span>, "UInt")
<span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd := <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
? <span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt, <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt, <span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span> <span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0x003</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_GETSENTENCEMODE</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>) <span style="color:#008000;background-color:#FFFCF2;">;lParam : 0</span><br />
}<br /><br /><span style="color:#008000;background-color:#FFFCF2;">;----------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME 変換モードセット</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
SentenceMode</span><br /><span style="color:#008000;background-color:#FFFCF2;">; MS-IME 0:無変換
1:人名/地名 8:一般 16:話し言葉</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ATOK系 0:固定
1:複合語 4:自動 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WXG
1:複合語 2:無変換 4:自動 8:連文節</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 0:成功 /
0以外:失敗</span><br /><span style="color:#008000;background-color:#FFFCF2;">;-----------------------------------------------------------------</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_SetSentenceMode(SentenceMode,WinTitle="A") {</div>
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ? <span style="color:#0000FF;background-color:#FFFCF2;">4</span> : A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize, stGTI,
<span style="color:#0000FF;background-color:#FFFCF2;">0</span>, "UInt")
<span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd := <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
? <span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span>
<span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("<span style="color:#5353FF;background-color:#FFFCF2;">SendMessage</span>"<br />
, UInt, <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("imm32\ImmGetDefaultIMEWnd",
Uint,hwnd)<br />
, UInt, <span style="color:#0000FF;background-color:#FFFCF2;">0x0283</span> <span style="color:#008000;background-color:#FFFCF2;">;Message : WM_IME_CONTROL</span><br />
, Int, <span style="color:#0000FF;background-color:#FFFCF2;">0x004</span> <span style="color:#008000;background-color:#FFFCF2;">;wParam :
IMC_SETSENTENCEMODE</span><br />
, Int, SentenceMode) <span style="color:#008000;background-color:#FFFCF2;">;lParam : SentenceMode</span><br />
}<br /><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;---------------------------------------------------------------------------</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
IMEの種類を選ぶかもしれない関数</span><br /><br /><span style="color:#008000;background-color:#FFFCF2;">;==========================================================================</span><br /><span style="color:#008000;background-color:#FFFCF2;">; IME
文字入力の状態を返す</span><br /><span style="color:#008000;background-color:#FFFCF2;">; (パクリ元 :
http://sites.google.com/site/agkh6mze/scripts#TOC-IME- )</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 標準対応IME : ATOK系 /
MS-IME2002 2007 / WXG / SKKIME</span><br /><span style="color:#008000;background-color:#FFFCF2;">; その他のIMEは
入力窓/変換窓を追加指定することで対応可能</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; WinTitle="A"
対象Window</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ConvCls=""
入力窓のクラス名 (正規表現表記)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; CandCls=""
候補窓のクラス名 (正規表現表記)</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 戻り値 1 :
文字入力中 or 変換中</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 2 :
変換候補窓が出ている</span><br /><span style="color:#008000;background-color:#FFFCF2;">; 0 :
その他の状態</span><br /><span style="color:#008000;background-color:#FFFCF2;">;</span><br /><span style="color:#008000;background-color:#FFFCF2;">; ※ MS-Office系で
入力窓のクラス名 を正しく取得するにはIMEのシームレス表示を</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
OFFにする必要がある</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
オプション-編集と日本語入力-編集中の文字列を文書に挿入モードで入力する</span><br /><span style="color:#008000;background-color:#FFFCF2;">;
のチェックを外す</span><br /><span style="color:#008000;background-color:#FFFCF2;">;==========================================================================</span><br /><div style="color:#FF0000;background-color:#FFE6EE;">
IME_GetConverting(WinTitle="A",ConvCls="",CandCls="") {</div>
<br />
<span style="color:#008000;background-color:#FFFCF2;">;IME毎の 入力窓/候補窓Class一覧
("|" 区切りで適当に足してけばOK)</span><br />
ConvCls .= (ConvCls ? "|" : <span style="color:#EE7264;background-color:#FFFCF2;">""</span>)
<span style="color:#008000;background-color:#FFFCF2;">;--- 入力窓 ---</span><br />
. "ATOK<span style="color:#800080;background-color:#FFF4FF;">\d</span>+CompStr"
<span style="color:#008000;background-color:#FFFCF2;">; ATOK系</span><br />
. "|imejpstcnv<span style="color:#800080;background-color:#FFF4FF;">\d</span>+"
<span style="color:#008000;background-color:#FFFCF2;">; MS-IME系</span><br />
. "|WXGIMEConv" <span style="color:#008000;background-color:#FFFCF2;">; WXG</span><br />
. "|SKKIME<span style="color:#800080;background-color:#FFF4FF;">\d</span>+<span style="color:#800080;background-color:#FFF4FF;">\.</span>*<span style="color:#800080;background-color:#FFF4FF;">\d</span>+UCompStr"
<span style="color:#008000;background-color:#FFFCF2;">; SKKIME
Unicode</span><br />
. "|MSCTFIME Composition" <span style="color:#008000;background-color:#FFFCF2;">; Google日本語入力</span><br /><br />
CandCls .= (CandCls ? "|" : <span style="color:#EE7264;background-color:#FFFCF2;">""</span>)
<span style="color:#008000;background-color:#FFFCF2;">;--- 候補窓 ---</span><br />
. "ATOK<span style="color:#800080;background-color:#FFF4FF;">\d</span>+Cand"
<span style="color:#008000;background-color:#FFFCF2;">; ATOK系</span><br />
. "|imejpstCandList<span style="color:#800080;background-color:#FFF4FF;">\d</span>+|imejpstcand<span style="color:#800080;background-color:#FFF4FF;">\d</span>+" <span style="color:#008000;background-color:#FFFCF2;">; MS-IME 2002(8.1)XP付属</span><br />
. "|mscandui<span style="color:#800080;background-color:#FFF4FF;">\d</span>+<span style="color:#800080;background-color:#FFF4FF;">\.</span>candidate"
<span style="color:#008000;background-color:#FFFCF2;">; MS Office
IME-2007</span><br />
. "|WXGIMECand" <span style="color:#008000;background-color:#FFFCF2;">; WXG</span><br />
. "|SKKIME<span style="color:#800080;background-color:#FFF4FF;">\d</span>+<span style="color:#800080;background-color:#FFF4FF;">\.</span>*<span style="color:#800080;background-color:#FFF4FF;">\d</span>+UCand"
<span style="color:#008000;background-color:#FFFCF2;">; SKKIME
Unicode</span><br />
CandGCls := "GoogleJapaneseInputCandidateWindow" <span style="color:#008000;background-color:#FFFCF2;">;Google日本語入力</span><br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">ControlGet</span>,hwnd,HWND,,,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>WinTitle<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">if</span>
(<span style="color:#4A0095;background-color:#FFFCF2;">WinActive</span>(WinTitle)) {<br />
ptrSize := !A_PtrSize ? <span style="color:#0000FF;background-color:#FFFCF2;">4</span> : A_PtrSize<br />
<span style="color:#4A0095;background-color:#FFFCF2;">VarSetCapacity</span>(stGTI,
cbSize:=<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+<span style="color:#0000FF;background-color:#FFFCF2;">4</span>+(PtrSize*<span style="color:#0000FF;background-color:#FFFCF2;">6</span>)+<span style="color:#0000FF;background-color:#FFFCF2;">16</span>, <span style="color:#0000FF;background-color:#FFFCF2;">0</span>)<br />
<span style="color:#4A0095;background-color:#FFFCF2;">NumPut</span>(cbSize, stGTI,
<span style="color:#0000FF;background-color:#FFFCF2;">0</span>, "UInt")
<span style="color:#008000;background-color:#FFFCF2;">; DWORD
cbSize;</span><br />
hwnd := <span style="color:#4A0095;background-color:#FFFCF2;">DllCall</span>("GetGUIThreadInfo",
Uint,<span style="color:#0000FF;background-color:#FFFCF2;">0</span>,
Uint,&stGTI)<br />
? <span style="color:#4A0095;background-color:#FFFCF2;">NumGet</span>(stGTI,<span style="color:#0000FF;background-color:#FFFCF2;">8</span>+PtrSize,"UInt") : hwnd<br />
}<br /><br />
<span style="color:#5353FF;background-color:#FFFCF2;">WinGet</span>, pid,
PID,<span style="color:#EE7264;background-color:#FFFCF2;">%</span>
"<span style="color:#9425A7;background-color:#FFFCF2;">ahk_id</span> " hwnd<br />
tmm:=<span style="color:#EE7264;background-color:#FFFCF2;">A_TitleMatchMode</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">SetTitleMatchMode</span>, RegEx<br />
ret := <span style="color:#4A0095;background-color:#FFFCF2;">WinExist</span>("<span style="color:#9425A7;background-color:#FFFCF2;">ahk_class</span> " . CandCls . "
<span style="color:#9425A7;background-color:#FFFCF2;">ahk_pid</span> " pid) ?
<span style="color:#0000FF;background-color:#FFFCF2;">2</span><br />
: <span style="color:#4A0095;background-color:#FFFCF2;">WinExist</span>("<span style="color:#9425A7;background-color:#FFFCF2;">ahk_class</span> " . CandGCls
) ? <span style="color:#0000FF;background-color:#FFFCF2;">2</span><br />
: <span style="color:#4A0095;background-color:#FFFCF2;">WinExist</span>("<span style="color:#9425A7;background-color:#FFFCF2;">ahk_class</span> " . ConvCls . "
<span style="color:#9425A7;background-color:#FFFCF2;">ahk_pid</span> " pid) ?
<span style="color:#0000FF;background-color:#FFFCF2;">1</span><br />
: <span style="color:#0000FF;background-color:#FFFCF2;">0</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">SetTitleMatchMode</span>,
<span style="color:#EE7264;background-color:#FFFCF2;">%</span>tmm<span style="color:#EE7264;background-color:#FFFCF2;">%</span><br />
<span style="color:#5353FF;background-color:#FFFCF2;">return</span> ret<br />
}<br /><br /></div>
</td>
</tr></table></div>
表示オプション
横に並べて表示:
変化行の前後のみ表示: