「IME.ahk」の編集履歴(バックアップ)一覧はこちら

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 &amp; 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() 動作チェック &amp; 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,&amp;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,&amp;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,&amp;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,&amp;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,&amp;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,&amp;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,&amp;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 &amp; 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() 動作チェック &amp; 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,&amp;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,&amp;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,&amp;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,&amp;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,&amp;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,&amp;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,&amp;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>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
人気記事ランキング
目安箱バナー