「;=ん」が非常に気に入ったので
名前を与えておこうと思う。
きゅうり配列に似ているので、"Armoise"と呼ぼう。
AutoHotkeyでArmoiseを実装すると、次のようになります。
動かなかったのを修正しました
こちらに新しいテスト版があります。
; 下駄配列スクリプトより拝借 ; 48バイトを確保して初期化しておく VarSetCapacity(stGTI, 48) DllCall("RtlFillMemory", "UInt", &stGTI, "UInt", 48, "UChar", 0) DllCall("RtlFillMemory", "UInt", &stGTI, "UInt", 1, "UChar", 48) IME_IfRomaKana() { global stGTI ; フォアグラウンドスレッドの情報を取得 if( !DllCall("GetGUIThreadInfo", Uint,0, Uint, &stGTI) ) { Return 0 } ; メニュー選択中なら帰る(このチェックは今ひとつ頼りにならない?) if( *(&stGTI+4) & 0x1E ){ Return 0 } ; hwndFocus をとりだす hWnd:=*(&stGTI+15)<<24 | *(&stGTI+14)<<16 | *(&stGTI+12) | *(&stGTI+13)<<8 ; IME にメッセージを送って変換モードを教えてもらう ; IMC_GETOPENSTATUS=5, IMC_GETCONVERSIONMODE=1 hImeWnd:=DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint) DetectSave := A_DetectHiddenWindows DetectHiddenWindows,ON SendMessage 0x283, 0x005,"",,ahk_id %hImeWnd% if( ErrorLevel ) { SendMessage 0x283, 0x001,"",,ahk_id %hImeWnd% if( ErrorLevel==0x19) { DetectHiddenWindows,%DetectSave% Return 1 } } DetectHiddenWindows,%DetectSave% Return 0 } $sc027:: If IME_IfRomaKana() == 1 { Send, nn } else { Send, `; } return