AutoHotkey スレッド part33 (957レス)
前次1-
抽出解除 レス栞

310
(4): [sage] 2024/03/30(土) 11:50:10.91 ID:RGvUfHCk0(1/4)
>>283
書き込み不可だったので遅レスです。既に結論は出たようですが、念のため以下のスクリプト、キーボード、秀丸エディタで試してみました。

v1スクリプト
Rshift & Lshift:: ;右から左に縦書きすることもありえる言語のイメージ
ja := DllCall("LoadKeyboardLayout", "Str", "00000411", "Int", 1)
PostMessage 0x50, 0, ja,, A
Return
Lshift & Rshift:: ;左から右に横書きする言語のイメージ
es := DllCall("LoadKeyboardLayout", "Str", "0000040a", "Int", 1)
PostMessage 0x50, 0, es,, A
省6
313
(1): [sage] 2024/03/30(土) 16:07:20.59 ID:cITqqdTX0(1/2)
>>310
これキーボードの値どうやって調べました?言語の数値だけですかね?
外部リンク:learn.microsoft.com

ATOKやGoogleIME見つけたい
316
(2): 275 [sage] 2024/03/30(土) 16:43:28.60 ID:bKmQMs/80(1)
>>310
レスありがとうございます
>>275に明記しておきましたがv2のスクリプトが欲しかったので、以下のようにAHK-v2-script-converter-masterでv2に変換して実行してみましたが残念ながら入力言語の切替はできませんでした

v2スクリプト
Rshift & Lshift:: ;右から左に縦書きすることもありえる言語のイメージ
{ ; V1toV2: Added bracket
ja := DllCall("LoadKeyboardLayout", "Str", "00000411", "Int", 1)
PostMessage(0x50, 0, ja, , "A")
Return
} ; V1toV2: Added Bracket before hotkey or Hotstring
省8
359
(5): [sage] 2024/04/01(月) 23:10:02.11 ID:Nf+wvizd0(1)
>>343
>>282ですが、私の環境でもテストしたところ、ほとんどのアプリでは単純なPostMessageで変更できましたが、秀丸と一部のアプリでは無反応でした
>>310氏が秀丸でも変更できている理由はわかりませんが、当初の予想通り一部のウィンドウではIMEと干渉してWM_INPUTLANGCHANGEREQUESTを受け付けないようです

また、秀丸ではエディタ部分にフォーカスがある場合、メッセージを受け付けないようです
しかしながら、若干裏技的な方法ですが、一旦別の場所にフォーカスを移した上でWM_INPUTLANGCHANGEREQUESTをIMEに送ることで変更できるようです
その他のアプリではIMEに送るだけで変更できました

他の環境でも使えるかは分かりませんが、とりあえず下記URLのコードで秀丸と変更できなかった他のアプリでも変更できるようになったので置いておきます

v2 入力ロケール変更関数
外部リンク:pastebin.com

以下追記、スクリプトと書き込みタイミングが被るのが嫌だったので待ってる間に検証、考察したこと
省7
364
(2): [sage] 2024/04/02(火) 14:00:07.45 ID:bEpu5GzC0(1/2)
>>359
>>363

>>310です。>>282さんの丁寧なスクリプトや考察は勉強になりました。ご指摘のあった1)、2)以外にも3)の現象を見つけました。
1)自分と、他の方の環境の違い
2)フォーカスがどこにあるか、そこが何を受け付けるが受け付けないかの違い

3)input locale identifierの違い
0x4090409 .. 英語
0x4110411 .. 空き(MS-IME削除のため)
0xE0200411 .. IME Jpapanist2003
を確認した上で、
省11
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 5.658s*