[過去ログ] AutoHotkey スレッド part33 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
553: [sage] 2024/04/24(水) 13:44:54.66 ID:kG8HRXKl0(2/2)
>>552
キーSendってキーを送ったってだけじゃなくてキーSendに伴う処理がおこるんだよ
キーSendは一瞬だがキーSendに伴う処理は長い
キーSendに伴う処理が完了したかどうかがわからない
ahk書いたことある?
554
(1): [sage] 2024/04/24(水) 13:48:52.26 ID:XB91l7uY0(2/2)
それはahkの責任じゃなくてWindowsや割り込ませるアプリ側の問題でしょ
555: [sage] 2024/04/24(水) 16:32:26.28 ID:EfyRblfu0(1)
>>554
俺はこっちを支持する

ID:kG8HRXKl0はどんなコーディングしてるんだ
書いた事ある?って煽りいれくらいなんだからちゃんと処理かましてるのか
ログ出力要所要所にセッティングしてないのか
556: [sage] 2024/04/24(水) 18:57:53.92 ID:pvpph20n0(1)
ahkに限る話題じゃないんだけど
こんな便利なソフトがなんで無料で使えるんだ・・
ボランティア精神?別の方法で換金?オープンソースの集合知?
557: [sage] 2024/04/24(水) 19:15:03.58 ID:q+9Hn44c0(1)
あったら便利なのに無いねんなー
ほな自分でつくったろ!
せっかく作ったし便利だから他の人にもお裾分けや!
の精神は昔のフリーウェアにはよくあった
ahkはなんでだろうね
558: 警備員[Lv.5][新][苗][芽] [sage] 2024/04/24(水) 19:35:24.57 ID:FAdcHYUg0(2/2)
イマイチ詳細が分からんけどAutoIt側からしたらahk開発は敵みたいだし、
ベースがほぼAutoItなAHKが直接金絡めたら顰蹙買うんじゃないの
559: [sage] 2024/04/24(水) 19:43:54.92 ID:4t6VnFGb0(1)
IMEをOFFにしてSendで文字打ってからONに戻すみたいなときに
適切にSleepしないと入力途中で切り替わっちゃうのはあるね

安定とかデバッグ言ってる意味はわからないけど
560
(1): [sage] 2024/04/24(水) 19:53:20.79 ID:yZQu+D7b0(1)
AutoIt v3と言えば、コード書きやすいのでAutoHotkey導入後もずーっと使い続けてるので思うことがある
『AutoItにキーリマップ機能付けてくれよぉ』・・・やっぱ無理かなぁ(´・ω・`)
561: [sage] 2024/04/24(水) 21:49:22.00 ID:Sp2175cE0(1)
qiita.com/yutaka-tanaka/items/79287a6a401b20d77208
AutoItをAutoHotkeyより評価してる2021年の記事
AutoItは2022から更新されてない
UWSCの作者は亡くなられているそうです
いろいろわかったから情報共有
562: [sage] 2024/04/24(水) 22:23:36.88 ID:K3lfeGqV0(1)
>>560
ahkが始まった理由もそんな感じで要望出したのにスルーされたからだったな
AutoItがユーザーの意見を頻繁に取り入れていたら今のahkはなかった
563
(1): 543 [sage] 2024/04/24(水) 23:31:33.80 ID:nV70RY2A0(2/2)
みなさんありがとうございます。
結論から言うと>>551さんに教えていただいた中括弧の位置とキーの名称でした。

今から覚えるとしたら、これから主流となるv2のほうがいいんですかね。
しばらく使ってみて、v2のサンプルコードが多ければまだ良かったんですが、あまり転がってないですよね。
>>546さんのクイックガイドいちから見たほうがいいっていうのはあるんですが…。

あと追加で確認したいんですが、
>>543のコードでキーだと長押し反応するんですが、マウスのx1で試すと長押しができません。
ハードウエア的に押した状態っていう処理ができないんですかね?
564: [] 2024/04/24(水) 23:31:44.64 ID:DQrkUuwo0(1)
まぁどんな年代であれだけ貰ったら
565: [sage] 2024/04/24(水) 23:56:13.98 ID:aBgFYHOd0(1)
パスワードを使い回している人はご愁傷様
裏ではないし
566: [] 2024/04/25(木) 00:45:18.69 ID:3uy0qHiZ0(1)
またに塗ったら
567
(1): [] 2024/04/25(木) 00:57:42.60 ID:UIFjLXbD0(1)
だから全力で支えてくれたんだろうな
画像リンク

568: [sage] 2024/04/25(木) 00:58:51.36 ID:SnCFIrCb0(1)
推しじゃないけどゲーミングお嬢様とか
569: [] 2024/04/25(木) 01:18:29.50 ID:Xzgg3PVF0(1)
暇なお盆休みにアイスタは優しく注意喚起したろ
570: [安倍晋三] 2024/04/25(木) 01:24:27.96 ID:mBXRPskV0(1)
>>567
澤さん zkzjzl R
嫌澤さん zkzkzl SR
女鹿澤さん zkzlzlzl SSR
儀賀澤さん zjzjzkzlzi UR
寺澤さん zkzkzl USSR
戸田澤さん zlzlzl LR
571: [] 2024/04/25(木) 01:49:46.16 ID:NCwzBTps0(1)
防衛はさらなる予算追加確実
川重追加なるか分からんが
外部リンク:llz.fch
572
(4): [sage] 2024/04/25(木) 11:41:07.22 ID:jv5oAMGO0(1)
Ctrl+↑(↓)は通常時ショートカットでHome(End)に割り当てられていて文字入力時は文頭(末)に移動に変わります
通常時Ctrl+←(→)は空いている(文字入力時は単語毎に前か後ろに移動)のでPgUp(PgDn)に割り当てたいんですが、文字入力時以外という指定って出来ますっけ?
wikiに「IMEが現在文字を入力している、もたは変換中であるかどうかを得ることはできる?」に「一部可能(インライン化しているアプリでは無理)」と書かれていますが、今でもそうなのでしょうか?
今v1.1.37.02ですがv2で可能なんて事あるでしょうか?
それか代替案があれば教えて頂きたいのですが、文字入力時諦めて常に効かせるくらいでしょうか?
何かアドバイスよろしくお願いします
573
(2): [sage] 2024/04/25(木) 12:00:58.77 ID:OGhPq50i0(1)
キャレット座標が入ってる組込変数A_CaretXとA_CaretYがあるけど
キャレットが無い時は空白になるらしいからそれでなんとかできない?
574
(1): [sage] 2024/04/25(木) 12:28:47.33 ID:V++ok1f30(1/2)
>>563
v2を覚えていくことをお勧めします。今からv1を習熟していく価値はありません

追加の質問についてですが、まずは自分で書いたコードを書き込んでください。大抵の場合はコードか設定に問題があります
あえてエスパーするならKeyWaitのキーの指定漏れとかだと思いますが、その質問の仕方では第三者から見た場合どこに原因が存在するかまったくわかりません
実際に環境面での問題が発生するのはレアケースであり、仮にそうだとしても回避策がある場合ほとんどですが、適切なヒアリングができない場合、第三者では解決できません

>>572
基本的には不可能です。IMEの仕様上の問題なのでv1でもv2でも同じです
IME.ahkのIME_GetConverting()で変換候補窓を取得することは可能ですが、IMEへのアプローチでは変換確定前の下線部のみの状態を取得することはできません
ただし、AccやUIAライブラリで下線部のみの状態のオブジェクトを認識できるのでがんばればなんとかならないこともないかもしれません

>>573
省1
575
(1): [sage] 2024/04/25(木) 13:29:37.63 ID:o5xHq4Bc0(1)
>>572
あなたが問題にしているwikiのURLを示す必要があるのでは?
示してないからあなたが何を言ってるのかがわからない
576
(1): [sage] 2024/04/25(木) 14:32:33.46 ID:xrsuOVDl0(1)
>>572
文字入力時以外=IMEオフ、ならば、
;v1スクリプト
#If ! IME_GET()
^Left::Send, {PgUp}
^Right::Send, {PgDn}
#If

文字入力時以外=IMEオフまたはIMEオンで未入力状態、ならば、
;v1スクリプト
#If ! IME_GET() || ! IME_GETConverting()
省4
577: [sage] 2024/04/25(木) 20:02:22.55 ID:qwj88I6c0(1/2)
v2のクラスメソッドってどう書くの?
廃止になっちゃったの?

class MyClass
{
Add(a,b)
{
return a + b
}
}

MsgBox(MyClass.Add(10,20))
578
(1): [sage] 2024/04/25(木) 20:44:46.03 ID:V++ok1f30(2/2)
その記述の場合、インスタンス化する必要があります
MC := MyClass()
MsgBox(MC.Add(10,20))

MyClassを直接参照するならクラス内の全てのメソッドとプロパティにstaticを宣言し、MyClassをシングルトンにする必要があります
class MyClass{
static Add(a,b){
return a + b
}
}
MsgBox(MyClass.Add(10,20))
579
(1): [sage] 2024/04/25(木) 21:04:08.39 ID:NqE1e19z0(1)
>>572
文字入力時って変換押した後?
なら変換キーでフラグ立てて、フラグ有効の間はショートカット無効
enter押したらショートカット有効にするとかでもできそう

個人的にはキーの見直しをお勧めする
条件次第で変わるショートカットは案外使いにくいよ
580: [sage] 2024/04/25(木) 21:59:53.31 ID:qwj88I6c0(2/2)
>>578
できた
ありがとう
581
(1): [] 2024/04/25(木) 23:28:20.18 ID:ebBUI0/90(1)
上で書いた長押しが反応しないというのは、下記の長押しした際の動作がききません。
キーボードのキーに割り当てると反応するので、マウスの仕組み上なのかなと思っていますが、
下記以外でも、長押しした場合と、ダブルクリックした場合で動作を変えるスクリプトを教えていただけないでしょうか。
v2です。

XButton2:: ;
{ ; V1toV2: Added bracket
ErrorLevel := !KeyWait("XButton2", "T0.3") ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
send "a" ;ここに任意のコマンド 長押し
省14
582: 警備員[Lv.2][新][苗][芽] [sage] 2024/04/26(金) 00:32:07.95 ID:sETLCzBx0(1)
みなさんありがとうございます
>>573
574さんが書いてる様に入力時は既にあるんですよね
>>574
基本的には無理なんですね
AHKで難しいのは出来そうに無いレベルです
>>575
wikiは1の物で、そこを特に問題にはしてないです
>>576
お、ありがとうございます
省7
583
(1): [sage] 2024/04/26(金) 13:04:28.77 ID:O4uf19cJ0(1/4)
>>581
少なくとも私の環境ではそのコードで正常に動作します
他の常駐スクリプト(v1v2両方)があれば終了して、その記述だけのテストスクリプトを起動して正常に動作するか試してください
それで正常に動作するなら既存のスクリプトのXButton2ホットキーが干渉しています。そうでなければ他の常駐アプリが干渉している可能性が高いです

マウスの挙動としては、ドライバアプリで変な設定をしているか、チャタリングが発生している という場合でない限り、XButton2の長押しができないということはないと思いますが
確認したいのであれば、ListLines()のみのテストスクリプトを他に常駐スクリプトがない状態で実行して
View → Key history and script info を表示し、F5で更新しつつXButton2を長押しして、正常に認識されているか確認してください

既存スクリプトのタスクトレイアイコンを 右クリック → Open または ダブルクリック でも同様のログを表示でき、前述したテストスクリプトだけのチェックをすっ飛ばして
XButton2押下時の実行ログやKeyhistoryを調べることもできますが、完全にスクリプト構造を理解出来ていないのであれば、個別に順序立てて調べていく方が良いと思います

下記以外でも と言うのは、別のアルゴリズムで同様の動作をするコードという意味でしょうか? そうであるならそれを求める必要性がわかりません
省17
584
(3): [] 2024/04/26(金) 14:21:19.03 ID:iAqLP9tU0(1)
USキーボードを普通に認識して刻印通りに入力できる状態で

+2::Send,{"}
@::"

などで一部のキーを109風に割り当てているんだが
右SHIFTだとAutoHotkeyが効かず通常入力になってしまう

RShift::Shift

とすると、キーボードテストサイトなどでは左右どちらも左SHIFTとして
認識するのに、やはり右だとAutoHotkeyが効かず通常入力になってしまう
省3
585
(2): [sage] 2024/04/26(金) 15:46:59.42 ID:SoWkdCK70(1)
>>584
2を"に変えるのはAHKの守備範囲外なんじゃないの
レジストリに書くだけのキー変更フリーソフトでできるはず
586
(2): [sage] 2024/04/26(金) 16:52:30.70 ID:vMLqj+un0(1/5)
#HotIf WinActive の中でInputBoxを使うと、
InputBoxから抜けた時にWinActiveの条件を満たさなくなって、
以降の処理が無視される
ちゃんと元に戻るにはどうすれば
587: [sage] 2024/04/26(金) 17:25:12.73 ID:O4uf19cJ0(2/4)
>>584
#UseHookを使うかホットキーラベルの先頭に$を追加してみてください

>>586
スクリプト内の上から順に#hotifの判定が行われますが、初期設定ではこの判定に1秒以上かかる場合
タイムアウトと判断され、それ以降の#hotif行はすべてfalseを返します
したがって、InputBoxなどの入力待ちするような物はまず正常に動作しません

詳しくはここを読んでください
外部リンク[htm]:ahkscript.github.io
588
(1): [sage] 2024/04/26(金) 18:00:50.58 ID:vMLqj+un0(2/5)
そんな感じでも無いみたい

対象のウィンドウが特殊みたいで、クリックした状態とフォーカスがある状態が別で、
フォーカスがあるだけだとキー入力が無視される
589: [sage] 2024/04/26(金) 18:10:40.52 ID:+HzGJ5Hf0(1/4)
>>586
#HotIf WinActive の中でInputBoxを使うとはどのようなコード?
^!c::
{
a := InputBox("入力してください", "入力").value
MsgBox "Control+Alt+Cを押しました" a
}
このコードで問題ないのでは?
590: [sage] 2024/04/26(金) 18:14:53.75 ID:+HzGJ5Hf0(2/4)
サンプルコードをこっちにする
#HotIf WinActive("ahk_class Notepad")
^!c:: {
a := InputBox("入力してください", "入力").value
MsgBox "Control+Alt+Cを押しました" a
}
591: [sage] 2024/04/26(金) 18:15:15.38 ID:O4uf19cJ0(3/4)
>>588
ホットキー押下でInputBoxを使用した場合、フォーカスが外れて元のウィンドウに戻らないと言うことであってますか?
そうであるなら、ホットキー押下時点でControlGetFocusを使用してフォーカス位置のhwndを取得しておき、InputBox終了後に戻せば良いです
592: [sage] 2024/04/26(金) 18:42:50.47 ID:vMLqj+un0(3/5)
MsgBoxはちゃんと動く
入力した数だけキーを押す、みたいなのが動かなくなる

実際には動いていて、アプリ側が無視してしまう
ウェイトを入れてその間にウィンドウをクリックすると動く
WinActivateでフォーカスを移しただけでは動かない

ControlGetFocus, ControlFocusも試してみる
593: [sage] 2024/04/26(金) 18:45:31.58 ID:+HzGJ5Hf0(3/4)
>>584
v2しか使ってないが
$+2::
{
Send "`""
}
$@::
{
Send "`""
}
省2
594
(1): ころころ [] 2024/04/26(金) 18:45:51.98 ID:Wiw+olk50(1)
>>583
ありがとうございます。切り分けしたところ、結論としては
下記の■のコードが邪魔しているようでした。
tooltip知らなかったんですが、便利ですね。
また、ご存知でしたら、下記の■の処理を入れた状態で、
長押しも実現するいい方法がもしわかればお教えください。
どういう分岐で動いているのか理解できないのですが、「XButton2」長押しなのに、
■の処理をまっているのか、長押しがどうさしないです。
=============================
#UseHook ;ホットキーラベルの定義で、常にフックを使用するようにする
省19
595: [sage] 2024/04/26(金) 18:58:33.05 ID:+HzGJ5Hf0(4/4)
たぶん2と"が同じキーだから無限ループ呼び出しになった
$をつけると無限ループにならないはず
596
(1): [sage] 2024/04/26(金) 19:35:57.03 ID:vMLqj+un0(4/5)
ControlGetFocusもうまく行かないけど、
InputBoxの後でMsgBoxを出すと何故かうまくいく
理由は全然判らない
597
(1): [sage] 2024/04/26(金) 20:00:42.60 ID:O4uf19cJ0(4/4)
>>594
XButton2 & LButtonがXButton2の処理を奪っているという状態になります
処理の流れとしてはXButton2押下から離されるまでの間にLButtonが押されなかった時だけXButton2の内容が実行されます
そのため長押しを検出することができません
下記のように~を先頭に追加してください。これはXButton2の処理を奪わないと言う指定になります
~XButton2 & LButton:: send "d"

ただし、この場合XButton2 & LButtonを実行する際にXButton2長押し時の処理が暴発するので#hotifで条件を分けるなどした方が良いです
長押し時の処理が他に影響を及ぼさない物でない限り、同条件下での併用は難しいと思います

>>596
状況や説明が断片的で把握できません。最終的にどうしたいのかもよく分かりません
省1
598: [sage] 2024/04/26(金) 20:34:12.12 ID:vMLqj+un0(5/5)
ahkがどうとかではなくて、対象のアプリ固有の話なのだろう
InputBoxとMsgBoxでは抜けた後のフォーカス周りが何か違う
599: [sage] 2024/04/27(土) 03:53:22.84 ID:yBsfu6Wj0(1)
vscodeのステータスバーにある
行、文字コードあたりの情報を取得する方法ないかな
画像リンク

600: 警備員[Lv.24][初]:0.00360841 [sage] 2024/04/27(土) 04:23:55.97 ID:vsLeKmXp0(1)
Acc-v2のExamplesが参考になりそうだ
外部リンク[ahk]:github.com
601: [sage] 2024/04/27(土) 11:41:32.12 ID:RdXRfe770(1/3)
>>597
よこですが
XButton2::だけだったらKeyWait(XButton2)がXButton2を待てるが
XButton2 & LButton::が追加されるとKeyWait(XButton2)がXButton2を待てなくなる
XButton2 & LButtonのキーが押されたかどうかを待たないといけなくなったから
ってことかなと思いました。
602: [sage] 2024/04/27(土) 12:02:54.56 ID:RdXRfe770(2/3)
文字コードは数が少ないからUTF-8の画像をImageSearch
1-
あと 400 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.478s*