[過去ログ] AutoHotkey スレッド part33 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
275
(13): [sage] 2024/03/26(火) 13:58:58.90 ID:z+3EYLdz0(1/3)
皆さんのお知恵を拝借させてください
下記のフォーラムで見つけたv2スクリプトについてです

●Keyboard layout RShift+LShift - AutoHotkey Community
外部リンク[php]:www.autohotkey.com

----------------ここから------------------
LShift & RShift::
RShift & LShift::changeLayout()

changeLayout() {
Static on := False
WM_INPUTLANGCHANGEREQUEST := 0x50
省14
277: 275 [sage] 2024/03/26(火) 14:17:45.84 ID:z+3EYLdz0(2/3)
日本人ですが毎日スペイン語を読み書きしております

生成AI(Copilot, Gemini, リートン)にも質問しましたがCopilotは修正後のスクリプトが修正前と同一でした(涙)

Geminiは以下の修正案を示してくれましたが A_Guiがエラー

LShift & RShift::
RShift & LShift::
{
if (A_Gui = "Hidemaru.exe") {
; Hidemaru.exe がアクティブの場合
SendMessage 0x11, 0x50, 0x02,, Hidemaru
} else {
省12
278
(1): [sage] 2024/03/26(火) 19:25:58.46 ID:aqiYnqLI0(1/3)
秀丸に対して、
>>275が効いてないのか、それともWinExist()やWinActive()が効いてないのかで
かなり話が違うんだがどちら?
280
(2): 275 [sage] 2024/03/26(火) 20:16:52.07 ID:z+3EYLdz0(3/3)
>>278 >>289
レスありがとうございます
秀丸とWPS Office 2以外のソフトでは正しく動作するので
WinExist()やWinActive()は秀丸に対して効いているのだと思います
試しに以下のように ahk_exe と ahk_class でもウィンドウを指定してみましたがやはり無反応でした。

{
window := "ahk_exe Hidemaru.exe"
; window := "ahk_class Hidemaru32Class"

if WinActive(window) {
; Hidemaru.exe がアクティブの場合
省7
281: [sage] 2024/03/26(火) 20:42:21.80 ID:aqiYnqLI0(3/3)
>>280
試しにSendMessageやChangeLayoutの代わりにMsgBoxが機能するなら
キーとWin系関数は秀丸に対しても効いてることになる

その場合>>275のメッセージ関係の修正が必要だけど
俺なら諦めてIME.ahkにすがるか
干渉してる他のホットキーを見直す
282
(3): [sage] 2024/03/26(火) 20:44:47.62 ID:vJWIf0nD0(1)
>>275
結論から言うとその方法ではおそらく不可能です
WM_INPUTLANGCHANGEREQUESTによる入力言語の変更を受け付けるか拒否するかは
アプリ側によって制御されており、アプリによって挙動が異なるためです
2バイト語圏ではIMEとの兼ね合いもあり、受け付けないアプリは結構有りそうな気もします

したがって、別の方法として単純なのは#{Space}をSendするか
Windousの切り替えホットキーで各言語ごとに別な物(LAlt+Shift+数字などの競合がなさそうな奴)を設定し
LShift & RShiftだけで変更するなら押下ごとに順番にそれらのキーをSendするスクリプトを組むのが無難な方法となります

あと、現状のAIはAHKについて独自学習でもさせない限り、間違いだらけで使い物になりません
AIの間違いを引きずって、途中からSendMessageで送るMsgが0x11になっていますが、これはWM_QUERYENDSESSIONであり本件とは全く関係ないものです
283
(2): 275 [sage] 2024/03/27(水) 05:35:52.30 ID:ZkJNtuaj0(1)
>>280
アドバイスありがとうございます
MsgBoxは機能しました
メッセージ関係の修正はややこしそうなので諦めます

>>282
助言をありがとうございます
受けつけないソフトもあるのですね
これまで通りLAlt+Shiftで切り替えることにします
AIの間違いには気づきませんでした
ご指摘どうもありがとう
312: [sage] 2024/03/30(土) 14:34:10.90 ID:RGvUfHCk0(2/4)
>>311

>>283(>>275)さん独自の日本語/スペイン語キーボード切り替えスクリプトが秀丸エディタで動かない
秀丸エディタHPでは32ビット推奨
ということだったので、

上記スクリプト + 日本語/スペイン語キーボード + 秀丸32ビット最新版
を試してみた次第です。

当然、秀丸64ビット最新版でも動きますし、32/64ビット問わずさまざまなアプリで動きます。また、スペイン語を他の言語に書き換えても動きます。スクリプト自体は、非英語圏で母国語/英語キーボード切り替え用に昔から使われているものです。
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
343
(1): 275 [sage] 2024/04/01(月) 11:47:14.88 ID:vUBkbNDt0(1)
>>336
v2スクリプトをありがとうございます
手もとの環境では秀丸エディタ(32bit)がアクティブなときは
なぜか無反応でした
>>317を参考にして試してみます
アドバイスどうもありがとう
363
(1): 275 [sage] 2024/04/02(火) 13:17:18.81 ID:314hfKlA0(1)
>>359
検証してくださりありがとうございます
やはり秀丸がアクティブだと反応しないのですね
わたくしの環境にATOK2017が入っているのが干渉を招いている原因かもしれませんね

>>361
[開く時のかな漢字変換の制御]は[何も制御しない」にチェックを入れてあります
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
369: 275 [sage] 2024/04/03(水) 14:30:21.12 ID:VsgyyUJV0(1)
f>>364
アドバイスありがとうございます
ご助言に従ってATOK2017のinput locale identifier(0xE0200411)を取得しました

Rshift & Lshift:: ;ATOK2017への切替
{
PostMessage 0x0050, 0, 0xE0200411,, "A"
Return
}
Lshift & Rshift:: ;スペイン語への切替
{
省17
374: 275 [sage] 2024/04/04(木) 12:45:47.65 ID:AefNW9vd0(1)
>>373
素晴らしいスクリプトをありがとうございます
コメント欄に明記されているとおり複数の日本語IMEを順次変更するにはSend("#{Space}")が最適であることがわかりました
おかげまで謎が解けてすっきりしました
どうもありがとう
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.739s*