探検


AutoHotkey スレッド part29

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。
垢版 |
2021/05/12(水) 06:27:46.35ID:d0RqdHRN0
!extend:vvvvv:1000:512
!extend:vvvvv:1000:512
↑スレ立てする時は3行にして下さい

■配布元
https://autohotkey.com/download/

■前スレ
AutoHotkey スレッド part28
https://egg.5ch.net/test/read.cgi/software/1585906506/

■日本語解説等
AutoHotkey Wiki
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://hdd.s300.xrea.com/ahk/
AutoHotkeyJp(過去ログdatあり)
https://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
https://www6.atwiki.jp/eamat/

■スクリプト投稿
Autohotkey専用うpろだ
https://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
https://pastebin.com/

■その他のテンプレ(5chのURL規制が厳しいのでpastebinに退避しました)
https://pastebin.com/raw/bWipuNmt

※テンプレここまで
VIPQ2_EXTDAT: default:default:1000:512:: EXT was configured
2021/06/25(金) 20:08:14.22ID:MD0W0Kmg0
>>81
ありがとうございます
できました!
2021/06/26(土) 04:43:23.70ID:OZ8sl4AG0
またUI変わってジジババが発狂する季節か
AHKとジェスチャさせあればOSのUIがどうなろうがあんまり気にならないんだよな

【IT】「Windows 10」の後継OSは「Windows 11」 Microsoftが正式発表 ★3 [ニライカナイφ★]
https://asahi.5ch.net/test/read.cgi/newsplus/1624645391/
2021/06/26(土) 08:29:23.34ID:qPTkwA1k0
そのAHKが新OSで動かない/挙動が変わった的な発狂があるわけだが
2021/06/26(土) 09:55:38.19ID:BfbWxLX80
ランチャーはどうにかなるが、タスクバーに関しては代替が効かない。
Windowsは最前面に固定したウインドウが引っ込むという不具合が、
Windows95の登場以降20年以上解決していないので、
必ずいつでも見えるガジェットがタスクバーしかない。
2021/06/26(土) 10:05:03.28ID:WNf/aJl10
タスクバー下部固定はヤバいなw
多数の反発者が出るだろう
2021/06/26(土) 11:13:53.97ID:kBF4p/q70
マルチモニター環境でプライマリディスプレイにタスクバー縦置き
これをかれこれ20年続けてる
今更下部固定とか到底受け入れられんわ
2021/06/26(土) 11:38:53.07ID:BB+0HCum0
そこで好きなだけカスタマイズできるAHKで、タスクバーいらずの快適ライフですよw
2021/06/26(土) 12:41:57.83ID:BfbWxLX80
>>88

ドラッグアンドドロップでアプリケーション間でファイルを受け渡す場合、AHKじゃ再現できない。
例えば、エクスプローラーからショートカットをドラッグして、Firefoxへ渡すという場合は
一度タスクバーの上にマウスカーソルを載せてタスクを切り替える必要がある。
2021/06/26(土) 12:45:57.77ID:UWhPk9v90
>>89
Alt+Tab「...」
Win+数字キー「...」
2021/06/26(土) 12:58:30.83ID:BfbWxLX80
>>90

わざわざそれしなくても
タスクバーがあればそれを片手で出来るんだわ、ボタンも一つだけ。
2021/06/26(土) 13:05:49.33ID:BB+0HCum0
>>89
単純な方法だと
送る(SendTo)の中にFirefoxを入れておけばいいのでは?
右クリックを押しながらFキーとかに割り当てれば早いし
2021/06/26(土) 13:07:42.90ID:9IIz9xeh0
win11ではMouseGestureL.ahkのファイルD&DをシミュレートするMG_DropFiles関数が使えなくなるのか?…困ったな
2021/06/26(土) 13:52:51.45ID:BfbWxLX80
>>92

SendToは増えすぎるとと使いにくくなるなあ、せいぜい20個ぐらいまでが限界
というかそんなことしなくてもタスクバー使えれば問題ない
2021/06/26(土) 14:22:44.63ID:BB+0HCum0
いやいや、それはただの一例だし、そもそもあなたが「できない」とか言うからさw
2021/06/26(土) 16:01:09.10ID:k0iOA11D0
If Var1 contains Win11
If (Var2 == "Win10")

この2つの式を同時に書くにはどのように書けばいいのでしょうか?
If (Var1 contains Win11 && Var2 == "Win10")
では正しく動きませんでした
97名無しさん@お腹いっぱい。
垢版 |
2021/06/26(土) 16:13:39.52ID:YMWaKQ7M0
>>96
順番を逆にしたらどうだろう?
== が先、contains が後
2021/06/26(土) 16:39:44.17ID:Mmu5TAWq0
IsContains関数を作ればいい
2021/06/26(土) 16:42:47.62ID:9IIz9xeh0
>>96
Var2が小文字の"W"で"win10"になってるんじゃ?
2021/06/26(土) 23:56:10.81ID:k0iOA11D0
>>97-99
ありがとうございます
== が先、contains が後にしてそれぞれの式に()を付けて対応しました
2021/06/29(火) 15:47:29.32ID:OmB1aiW20
任意の座標x,yにあるClassNN名を取得するにはどうしたらいい?
2021/06/29(火) 16:13:11.82ID:Dg/dHH8B0
現在座標を記憶させてからMouseMoveで指定座標に移動させて
MouseGetPosで取得した後に元の位置に戻せばいいんじゃないの?
2021/06/29(火) 16:28:22.28ID:OmB1aiW20
>>102
頭いい
ありがとう
直接ゲットするのは無理なのね
2021/06/30(水) 03:47:54.10ID:36tlCWcv0
API使ってもいいならWindowFromPoint関数が使えるかもしれんけど、AHK自体に同等の機能があるかは分からん
2021/07/09(金) 09:54:20.68ID:gLgFTNcp0
バグなのかわからんが、Tooltipをいつも前面に出すようにしているのに、何かのきっかけで裏に隠れてしまって
出てこなくなる

なんかリフレッシュとかして表に出すようにできませんか
プログラムの途中にそういうのを入れてしまおうと思っています
2021/07/10(土) 01:10:40.88ID:OeCRwn4J0
ホバークラフトみたいだね
2021/07/10(土) 01:13:09.88ID:Um2IbjqL0
>>105
SetTimerとかで数秒おきにTooltip再表示繰り返すとかじゃアカンの?
108名無しさん@お腹いっぱい。
垢版 |
2021/07/10(土) 16:10:11.87ID:Z08514+A0
画面ロック時に実行したい処理があったので、
ahkでWin+Lをハンドリングして処理を実行してからahk側で画面ロックしようと思いました
とりあえず
#l::
(処理)
Return
と書いて実行したところ、処理が実行された後、ahk側で何もしてないのに画面ロックもされてしまいました
ahkでハンドリングしているのに、Win+Lのキー入力が生きたままWindowsに届いているようです
何故このような動作になるのでしょうか?
2021/07/10(土) 16:38:21.35ID:OebqiqzO0
>>108
Win+LはAHKよりもシステムの深い部分(ローレベル)で実行されるのでAHKで制御を奪うことはできません
そういう仕様です
110名無しさん@お腹いっぱい。
垢版 |
2021/07/10(土) 16:46:11.90ID:Z08514+A0
>>109
そうなんですね
もともと画面ロックはしたかったのでその方がありがたいですが、不思議な挙動なので気になりました
ありがとうございました
111名無しさん@お腹いっぱい。
垢版 |
2021/07/12(月) 23:27:47.23ID:1PXNZm6S0
初歩的な質問ですみません
想定通りに動かないので、1動作ずつ確認していきたいんですが、ステップイン的な機能はありますか?
2021/07/12(月) 23:35:36.80ID:+PXMAsbp0
「ステップイン的な機能」というのは分からないけど
1動作ずつ確認するならMsgBoxをはさんでおけばいいのでは?
2021/07/13(火) 00:47:44.71ID:riaXbIX+0
>>111
デバッグしたいならvscodeのプラグイン入れればいい
2021/07/15(木) 07:56:27.97ID:K/YzcHeN0
Winsetでウインドウを透明にした

前、Windows7のときは問題なかったんだが、Windows10にしたら、ウインドウの外枠が薄く残っていて
ちゃんとできない

どしたらいい?
2021/07/21(水) 13:14:44.02ID:Akc/lH+V0
ファイルの説明: AutoHotkey Unicode 32-bit
ファイル バージョン: 1.1.32.0
スクリプトとテキストファイルの文字コードはUTF-8 BOM

ドラッグ&ドロップしたテキストファイルの中身を置換したいのですが思い通りにいかず煮詰まってます
どうかエロいみなさんの知恵を貸してください
2021/07/21(水) 13:20:12.23ID:Akc/lH+V0
これ以上書き込めないorz 上のヘルプは忘れてください
2021/07/21(水) 14:07:15.75ID:YvpNlGJJ0
コード貼れないなら pastebin使うといいよ
https://pastebin.com/
118115
垢版 |
2021/07/21(水) 14:43:13.59ID:Akc/lH+V0
>>117
ありがとうございます

以下が試したスクリプトになります
ttps://pastebin.com/raw/epDAw6nM

置換前のテキスト
--------------
味噌ラーメン
ソース焼きそば
塩ラーメン
塩焼きそば
--------------
2021/07/21(水) 14:44:07.81ID:Akc/lH+V0
置換後のテキスト(上のスクリプトの実行結果)
--------------
味噌ラーメン

.ース焼きそば
塩ラーメン

.焼きそば
--------------

置換後のテキスト(希望する結果)
--------------

ソース焼きそば

塩焼きそば
--------------
2021/07/21(水) 14:52:06.07ID:Akc/lH+V0
「ラーメン」を含む行を削除したいのですが上手くいきません
ヒントをいただければ助かります

長文失礼しました
2021/07/21(水) 17:51:26.43ID:/9Jmhssj0
なんでそんな結果になってるかというとファイルポインタというもののせいなんだけど
でもオープンしたファイルの一部分だけ書き換えるのって正直面倒なんで
一旦テキスト丸ごと取り込んで置換して、wフラグで全書き換えしちゃったほうが楽
2021/07/21(水) 20:07:22.89ID:Akc/lH+V0
>>121
教えていただいたヒントで解決できました。ありがとうございました!

ttps://pastebin.com/raw/J5qL9crU
2021/07/23(金) 18:51:04.61ID:1QFXGc4F0
VSCodeのautohotkey Plusっていう拡張機能使っているんだけど、
変数とかがVSCode内で表示できるのはありがたいんだけど、KeyHistoryも同様に表示できないの?
他の拡張機能でもいいんだけど・・・
124名無しさん@お腹いっぱい。
垢版 |
2021/07/24(土) 16:45:57.57ID:zwomsF840
>>123
その拡張機能使っているが、KeyHistory見たいことなんてそうそうないな。
デバッガ使っていれば大体事足る。

あるならあるでいいし、比較的簡単に実現できそうなことだから、Issue出してみては?
2021/07/25(日) 15:22:12.08ID:gBEwBjKS0
>>124
123です。
確かに、あまり使う機会ないからそこまでVSCodeにこだわる必要なかったかもしれん・・・
ありがとう。
2021/08/02(月) 13:57:09.78ID:5Fn6X67Z0
UIAccessって機能を初めて知ったけど想像以上に凄いわ
タスクスケジューラでわざわざ管理者権限で実行してたけどこっちの方が楽だな
Runで開いたウィンドウまで管理者になっちゃうみたいな変な動作も起こらないし
127名無しさん@お腹いっぱい。
垢版 |
2021/08/04(水) 00:19:36.89ID:Z/OIH3AQ0
初心者です。押し続け・連続押しで、反応しないようにしたいです。

❶質問
例えば、F1キーに、アプリを起動するように設定しています。
f1:: Run, "C:\Users\****\****.exe"
しかし、複数開くことが可能なアプリの為、
少し押し続けたり、2回連続で押してしまった場合、
無限に複数起動してしまいます。(Esc長押しをしてしばらく削除するハメに)
そちらを防止したいです。表記法をご教示ください。

❷質問
テンキーのようなデバイスを使用しているのですが、
そちらは押し続けてもCtrl+Zが連続で認識しません。
デバイスの仕様の可能性もありますが、
一定時間(0.3秒以上)押し続けた場合に連続してキー入力する方法を教えて下さい。
(デバイスに、AHKあてるのは可能なのか試してみたい為)

お力添え宜しくお願いします。
2021/08/04(水) 00:58:43.63ID:kkqwFcjT0
>>127
上、if WinExist() とか Process, Exist とか
下、KeyWait とか SetTimer を組み合わせたり
129名無しさん@お腹いっぱい。
垢版 |
2021/08/04(水) 01:06:27.31ID:Z/OIH3AQ0
>>128
ありがとうございます。
そちらも見たのですがエラーがでてしまい、
なにか表記法も間違ってると思うんですよね
どういう表記方法か、という
2021/08/04(水) 01:14:00.85ID:Ijym+1qq0
>>127
アンサー1
長押しでリピート回避するだけなら
f1::
Run, "C:\Users\****\****.exe"
Return
で大丈夫かと
2回押しで複数起動回避はIfWinExistで分岐してすでに存在してたらWinActivateでアクティブにする
存在してなかったらRunで起動

アンサー2
そのデバイスがなんだかわからんけど
一定時間(0.3秒以上)押し続けた場合に連続してキー入力する方法は
wikiのサンプルコード集、「1つのキーに3種類以上の動作割り当て」を参考に0.3秒以上押したかどうかで分岐して
あとはLoopなどでSendを繰り返してキーを離したらBreak

>>129
何が間違ってるかはそのスクリプトを見ないと俺らに分かる訳がない
いずれにせよ単順に勉強不足かと
急がば回れ、サンプルコード集などよく見て一行ずつの意味を理解できる程度にはなってからやりたいことやった方が良い
131名無しさん@お腹いっぱい。
垢版 |
2021/08/04(水) 01:48:39.09ID:Z/OIH3AQ0
>>130
❶そのとおりに表記しましたが、できませんでした。
(Returnを表記してもしなくても同じでした。)
長押しをしても、複数起動してしまいます。
ソフトはRaptureです。

ボタンを離したら起動、ということはできないでしょうか?
動作する表記で、宜しくお願いします。
2021/08/04(水) 01:50:47.81ID:Ijym+1qq0
>>131
じゃあRunの前にKeywait, F1
2021/08/04(水) 02:00:37.20ID:kkqwFcjT0
だめだこいつ
2021/08/04(水) 02:05:39.19ID:TOoMT/X30
>>131
ホットキーの基本くらいはさすがにドキュメント読もうぜ
2021/08/04(水) 02:13:00.50ID:Ijym+1qq0
>>131
基本的にこのスレはヒントや手伝いはするけど丸投げでクレクレする場じゃないからな
wiki熟読して使い方学ぶ気がないならAHK使うの諦めた方が良い
2021/08/04(水) 02:19:13.57ID:TOoMT/X30
AHKは地味に人気あって、ちょっと検索すればwiki以外にも解説しているところが結構あるから
やる気あるかあるかの問題だと思うわ
137名無しさん@お腹いっぱい。
垢版 |
2021/08/04(水) 04:36:24.01ID:T0FNW6vV0
>>127
1.
他の人(>>128 >>130)も書いてくれているが、
多重起動防止は、すでに当該のプログラムが実行中かどうかで判断できる

プログラムが実行中かどうかは
WinExist などで調べられる
https://www.autohotkey.com/docs/commands/WinExist.htm
http://ahkwiki.net/WinExist
Process
https://www.autohotkey.com/docs/commands/Process.htm
http://ahkwiki.net/Process

AHK 多重起動防止 でぐぐったらドンピシャな記事がすぐに見つかった
Firefoxを起動 or 前面化

F1::
  Process, Exist, firefox.exe
  if ErrorLevel <> 0
    WinActivate, ahk_pid %ErrorLevel%
  else
    Run, "C:\Program Files\Mozilla Firefox\firefox.exe"
Return

これの firefox の箇所を Rapture に変えたらそのまま使えると思う
138名無しさん@お腹いっぱい。
垢版 |
2021/08/04(水) 04:45:33.72ID:T0FNW6vV0
>>127
1.補足
2chのNGワードにより、記事のURLは貼れなかった

2.
>>130が書いてくれているが、
http://ahkwiki.net/SampleCodes#1.E3.81.A4.E3.81.AE.E3.82.AD.E3.83.BC.E3.81.AB3.E7.A8.AE.E9.A1.9E.E4.BB.A5.E4.B8.8A.E3.81.AE.E5.8B.95.E4.BD.9C.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6
1つのキーに3種類以上の動作割り当て

キー::
  ループ
    KeyWait, キー, T0.3 ;0.3秒対象キーが押されたかどうか
    if 押された
      Send 連続してキー入力したいキー
    else
      break
  return
2021/08/04(水) 07:53:08.63ID:X3h92MKc0
>>138
>117

>1のテンプレとwikiも読もう
2021/08/04(水) 07:56:43.21ID:X3h92MKc0
あ、ごめん質問者じゃなくてアドバイスしてる側の人か
>139は無視して
141名無しさん@お腹いっぱい。
垢版 |
2021/08/04(水) 18:17:08.55ID:Z/OIH3AQ0
1つ目ですが、どうしても押しっぱなしの場合には起動しないようにしたかった為、
最初を ::F1 up として、ボタンを離した時のみ起動するようにしました。

追加で、1つのキーに3種類以上の動作割り当ての記事を元に、
2度押しでEveryshing等の別ソフトを起動するようにしました。
みなさま ありがとうございます。
2021/08/09(月) 18:41:17.93ID:WQb4cyKs0
すごく基本的な質問なようで恐縮だけど。
IME.ahkのカーソルの横に出るポップアップは、どうしたら非表示にできますか?
2021/08/09(月) 19:30:15.47ID:TLTXsmOr0
>>142
通常IME.ahkは関数群のスクリプトなので単独では使用しないぞ
説明書よく読んだ方が良い
2021/08/09(月) 20:00:19.79ID:WQb4cyKs0
>>143
ありがとう。
多分それはわかっているつもりで、起動しているのは同じフォルダに入れた.ahkです。
ポップアップが邪魔だ・・・・
2021/08/09(月) 20:39:38.14ID:dAASpWa80
>>144
Autoexecuteの部分は動作確認用だからまるっと削っちゃっても構わないよ
なんならIME.ahk内の使いたい関数だけコピペで移植してもおk
(それぞれの関数に依存関係はないので欲しいところだけ切貼でいける)
2021/08/09(月) 22:12:35.32ID:WQb4cyKs0
>>145
だめだ・・・削っても削ってもポップアップが消えない
orz
2021/08/09(月) 22:15:11.24ID:WpynnAdF0
あっそ
書いたもの見せる気もないんだろうし諦めればいいよ
2021/08/09(月) 22:44:14.48ID:WQb4cyKs0
書いたファイルとIME.ahkのポップアップとに関係あるんか?
$^l::
imeMode := IME_Get()
if (%imeMode% = 0)
{
Send ^l
return
}
else
{
IME_SET(0)
Send ^!l
return
}
2021/08/09(月) 22:44:16.18ID:OqeDcUJs0
>>146
#include ime.ahk ってやってるならその行外して
ime.ahkをlibフォルダに入れてみては?
というかIme.ahkのバージョン分からないのでソース貼ってもらわないとちょっと分からない
(派生の改装版を拾ってる可能性もあるし)

>1のpaste.binに呼び出してるスプリクトごと貼ってみて
2021/08/09(月) 22:47:14.97ID:OqeDcUJs0
>>148
ポップアップとは関係ないけど
if (%imeMode% = 0)

if (imeMode == 0)
2021/08/09(月) 23:00:41.45ID:q8y2my1H0
%を外すのは当然だけど、ahkの場合
数値比較で==にしても意味ないのでは?
2021/08/09(月) 23:06:31.86ID:WQb4cyKs0
>>149
これです
https://w.atwiki.jp/eamat/pages/17.html
2021/08/09(月) 23:14:57.11ID:WQb4cyKs0
libフォルダをつかったらポップアップが消えました。
解決です。
ありがとうございました!
2021/08/09(月) 23:45:07.57ID:TLTXsmOr0
結局、まともに説明書読んでなかったってことか…あほらし(´・ω・`)
2021/08/13(金) 19:28:37.23ID:9BKPn+c80
先月にv2がbetaに移行したんだな
遅くとも再来年には正式リリースしそうな感じ
2021/08/14(土) 14:12:09.23ID:fegqMa910
v2は既存の言語に慣れてる人にはとっつきやすいので個人的には好きなんだけど
v1.1と互換性なさすぎて全く普及する気がしないんだよな
2021/08/14(土) 15:40:15.61ID:ymj/xDId0
使えるホットキーの全機能一覧とかどこかに無いですかね?
ポインタを特定のモニタの指定しておいた座標に二点間移動する操作がしたいです
現在他のフリーソフトでやってますが移行を検討しています
2021/08/14(土) 16:12:20.37ID:bgvsRPhs0
>>157
全機能ってどういうこと?
キーリストなら>>1のwikiに載ってるけど、そういうことじゃない?

マウス移動ならmousemoveって関数使えばいいよ
2021/08/14(土) 16:42:12.31ID:OUajTPy30
>>157
全機能ってのがコマンド一覧って意味ならこれ
http://ahkwiki.net/Commands_Name
(カテゴリー別表示も可能)
2021/08/14(土) 18:07:58.36ID:nsYULcNi0
v2ってL1.1系の機能は網羅されているんだっけ?
161名無しさん@お腹いっぱい。
垢版 |
2021/08/15(日) 04:32:40.83ID:TLZIBUY10
v3では、window title の match mode をグローバル変数で指定する仕様をやめて、
関数の引数で指定できるようにしてほしいな
グローバル変数を不必要に使わない設計にしてほしい
2021/08/15(日) 09:16:44.11ID:UV7vwGxG0

SetTitleMatchModeは直値指定だし
組み込み変数をグローバル変数と呼ぶのは違くない?

多分AutoHotkey.exeの内部ではスレッド毎にクラス化して新規作成してるだろうし
A_TitleMatchModeで参照できる値も厳密にはグローバルじゃないと思う
2021/08/15(日) 10:11:13.45ID:651gBVw60
ERRORLEVELと一緒でスレッドごとに作られるからグローバルとは言えないね
それにあれは関連関数の設定を一括で変更できるから意味があるのであって
164名無しさん@お腹いっぱい。
垢版 |
2021/08/15(日) 21:21:28.75ID:TLZIBUY10
>>162
グローバルに指定、という意味で言った

現状ではAHK全体を通して1つのtitle match modeしか使えない
(使用する都度global なtitle match modeを変更する方法もあるが、
マルチスレッドに対応させないとマルチスレッドを使うときに不具合の原因になる)

このあたりは、AutoItの未熟な言語仕様を引き継いでしまっているのだろうと思う
2021/08/15(日) 23:55:40.34ID:651gBVw60
だからスレッドごとにデフォルトにリセットされるんだから
分けて使えるでしょ
それに引数で変えられるようにしたかったら、そういう関数書いて
libにでも放り込んでおけばいいわけだし
2021/08/16(月) 00:14:53.10ID:34Pl9I0O0
>>164
>165でも言われてるけどホットキーやTimerで別スレッド立ち上がるごとに
Autoexecuteセクションで指定したデフォルト値がセットされる仕様よ
各スレッド内で SetTitleMatchModeを実行しても他のスレッドには影響しない
2021/08/22(日) 20:39:32.02ID:3FT4NmSR0
いずれかのホットキーが押されて処理が実行されたとき、
必ずエラーをキャッチし、共通処理を行うようにできませんか?
現状は下のような感じなのですが、たくさんあるホットキーそれぞれにTry-Catchを記述するのが面倒です。
宜しくお願い致します。

;ホットキー1
^+!q::
Try {
} Catch {
;共通処理
return
}

;ホットキー2
^+!a::
Try {
} Catch {
;共通処理
return
}
2021/08/22(日) 22:39:57.14ID:YkJG9mBI0
>>167
関数化すればいいんでね?
2021/08/23(月) 08:32:08.66ID:OlmLkjoZ0
^+!q::
^+!a::
Try {
} Catch {
;共通処理
return
}
return

でもいいし


^+!q:: func(A_ThisHotkey)

^+!a:: func(A_ThisHotkey)

func(trigger) {
 Try {
 } Catch {
  ;共通処理
  return
 }
}

でもいいし
エラー処理ならOnError()でまとめてもいいかもね
2021/08/23(月) 21:34:30.71ID:h0dc4mc+0
167です。
>>168
>>169
そのような記述の仕方があったのですね、勉強不足でした。
特に ^+!q:: func(A_ThisHotkey) の方法で目的が達成できそうなので、
さっそく使わせていただきます。皆様、ありがとうございました。
2021/08/24(火) 16:08:20.14ID:Hp5kGUoJ0
無変換をalt+Xに割り当てているのですが、altキーが押しっぱなしになってしまうバグが多発しています。
ahk再読み込みで直すのですが、毎回するのが大変です。

!x::
send,{vk1Dsc07B}
return

何か良い方法ないでしょうか?お願いします。
2021/08/24(火) 17:20:55.06ID:2iVnVpkG0
!x::send,{sc07B}{Alt Up}

これはどう?
直るかはわからんけど
2021/08/24(火) 17:48:41.29ID:Hp5kGUoJ0
>>172
そちらですとそもそも無変換すら機能しませんでした
純粋にalt upも一緒に送信すればいいのかと思い
!x::
send,{vk1Dsc07B}{Alt Up}
return
にしてみましたがやはり何度かalt Xを押すと押しっぱなし状態が維持されてしまいます
2021/08/24(火) 17:50:21.96ID:jLPHGqp70
固定キーになってるとか
2021/08/24(火) 17:59:42.88ID:/akje9zD0
>>171
>>1のその他テンプレより抜粋
Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A9:AHKが原因の場合とそうでないときがある
  ○AHKが原因の場合
  AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
  一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
  しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
  物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
   例) ^W::Send, {w 30}
  これを回避するためには、以下の方法をとればよい:
  ・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
  ・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
  ・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
   #HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする。
  なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
  発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。
2021/08/24(火) 18:18:45.52ID:Hp5kGUoJ0
固定キー機能のことですかね?そちらは設定していないです。
とりあえずそもそもautohotkeyではなく、powertoyを使って右altを無変換キーに割り当てました。
これで代用しようと思います
2021/08/24(火) 18:19:15.90ID:Hp5kGUoJ0
>>175
ありがとうございます!試してみます!
2021/08/25(水) 02:27:14.32ID:d/ZoxKx70
>>177
直接の対処法じゃないけど、押しっぱの時にTooltipが出るスクリプトを使うと視覚で分かるようになる
AutoHotkey スレッド part8
https://pc12.5ch.net/test/read.cgi/software/1243005818/176-182
10年以上前のだけど今でも動く
デフォだと[Ctrl][Shift][Alt][Win]の3秒以上の押しっぱなしで発動される
2021/08/25(水) 12:46:30.10ID:IBOXHB9F0
>>178
マウスポインタ化に出るんですね!とてもわかり易いです ありがとうございます
2021/08/26(木) 15:09:11.08ID:d56h32eE0
>>175
ちなみにこれを順々に試していき、SendPlayで無変換送信でしたら大丈夫になりました。
;;;altとXで無変換
!x::
SendPlay,{vk1Dsc07B}
return

出るタイミングが
>Sendコマンドが完了する前に物理キーが押下解除されてしまっている場合がある。
の通りで、alt+Xのボタンをすぐに離すと必ずaltだけ残り続ける状態でした。

・#InstallKeybdHook→効果なし
・SendInput→効果なし
・SetKeyDelay, 0→効果なし でした。
また、windowsキーとのコンビネーションの割当の際もwinキーが押しっぱなしになってしまう事があるのですが、そちらは逆にSendPlayでは解決されず普通にSendの方が良いようです
AHKとても難しいですね、、一応少しだけ解決したので書いておきます
2021/08/26(木) 15:49:26.22ID:XXFTp4YY0
その現象って一部のUSBキーボードでなりやすいんだよなあ
PS/2と違って送信方法が単純じゃないから
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況