探検


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/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と違って送信方法が単純じゃないから
2021/08/26(木) 15:57:35.17ID:XBrrwwWG0
PS/2キーボードでもなるぞ
要は「一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構」と指離すタイミングの問題なので
2021/08/26(木) 16:29:48.34ID:XXFTp4YY0
少なくともうちでは同じスクリプトでPS/2だとならない
まあ全部が全部同じ理由じゃないんだろうけど
2021/08/29(日) 17:29:18.26ID:5MF1Oa7A0
最終的にctrl shift end のキーを出力させたいです。
endキーはF13 & M でバインドしてます。なので、実際には

ctrl shift F13 M

と打ったときに上の通りに出力させる記述はなに?となります。
かれこれ、色々2週間試してギブアップ。
3つ同時はよく掲載されているからいけますけど4つ同時押しがうまくいきません。

すごいひとおねがいします。
2021/08/29(日) 17:53:11.06ID:XgfVZOXH0
>>184
なんか説明が下手過ぎて分かりにくいんだがとりあえず
>endキーはF13 & M でバインドしてます。
ってことなので
F13 & M::Send,{Blind}{End}
にすればctrl shift F13 M を押した時は ctrl shift end のキーを出力になるんじゃね
2021/08/29(日) 19:11:11.31ID:5MF1Oa7A0
>>185
わかりにくくてすみません。
Excelの ctrl shift end ショートカットを使用したいのですけどもうまくいきません。

おしえていただいた記述ではうまくいきませんでした。

End = F13 & M::Send, {Blind}{End}

この記述は既に設定済みとしています。

ctrl shift ここで F13 & Mとしてもうまく行かなくて。

getkeystate 関数だと3つ同時押ししか成功しないので、詰まりました。

なにかヒントでもいただけますか?
2021/08/29(日) 19:15:24.36ID:XgfVZOXH0
>>186
End = ってなんだよ?
お前が書いてるスクリプトをそのまま貼れ
本当に{Blind}が入ってるならctrl shift の修飾キーは押したまま出力される
だからまず>endキーはF13 & M でバインドしてます。
この部分をお前がどうやって書いてるのか改変せずにコピペしろ
2021/08/29(日) 20:45:32.97ID:rWCSK8gT0
本筋と外れるけどF13はどうやって出力しているの?
ChangekeyなどでCapsなどを割り当ててる場合
Nキーロールオーバー非対応のキーボードの同時押し制限で
引っかかってる可能性もあるのでは?
2021/08/29(日) 20:57:04.15ID:XgfVZOXH0
>>188
質問者がどうやってるかは知らんが俺は多ボタンマウスG600でサイドボタンにG13割り当ててるので
それで>>185のスクリプトでctrl shift F13 M を押した時は ctrl shift end のキーを出力されるのを確認した
2021/08/29(日) 20:58:09.53ID:XgfVZOXH0
書き間違い訂正
正) G600でサイドボタンにF13割り当ててるので
2021/08/29(日) 21:42:09.52ID:5MF1Oa7A0
>>187

>>188

めちゃ怒らせてしまい、申し訳ありません。
F13キーは無変換キーへchangekeyを使用して割り当ててます。
End = というのは End を出力させるスクリプトとして F13 & M::Send,{Blind}{End}として出力させていますという意味でした。

同じように Homeを F13 & ,::Send,{Blind}{Home}
としており、Ctrl F13 N キーを押すとExcelのショートカット Ctrl Homeとして機能します。

上は同時押し3つで機能していますが、これにShiftを加えたような、Ctrl Shift F13 Mだと Ctrl Shift End のようになりません。ログを見るとEndが出力されていないことになっています。

手抜き表現で伝えきれずすみませんでした。
2021/08/29(日) 21:45:11.68ID:5MF1Oa7A0
訂正。
F13 & ,::{Blind}{Home} は
F13 & N::{Blind}{Home} の記述ミスです。
2021/08/29(日) 21:56:11.06ID:XgfVZOXH0
>>191
>End = というのは End を出力させるスクリプトとして F13 & M::Send,{Blind}{End}として出力させていますという意味でした。
だから余計な事は書かなくていいと言ってんだよ
スクリプトとして書いてるものをそのまま一切改変せずにコピペしろと
その方がこっちはお前が何をやってるのか分かりやすい

>これにShiftを加えたような、Ctrl Shift F13 Mだと Ctrl Shift End のようになりません。
だったら>>188の言うようにキーボードの同時押し数の問題で弾かれてるだけじゃねえの
AHKの問題じゃないのでスレチになるわ
2021/08/29(日) 22:07:38.00ID:rWCSK8gT0
3キーまで認識して4キーが無理ってことはハードウェア的な同時押し制限っぽくない?
普通は修飾キーはNキーにカウントされないはずだけど おまキーボードなのかも知れんし

一回無変換をckengekeyで元に戻してahkの常駐切った状態で
この辺のツールで確認してみては
https://www.4gamer.net/games/026/G002688/20120302062/
195名無しさん@お腹いっぱい。
垢版 |
2021/08/29(日) 22:19:16.41ID:6pp9aua90
キーボードのキー同時押し数には制限がある
どのキーが同時押しできるかはハードウェアにより異なる

AHKの key history を開いて、目的のキーを同時押しして
ちゃんとキーコードが発生しているか確認するといいよ

(別のプログラムを使わなくても確認できるし、
F13などを使っている場合でも確認できる.)
2021/08/29(日) 22:31:43.54ID:i07IKwxQ0
1.1.33.10
2021/08/29(日) 22:52:47.71ID:5MF1Oa7A0
ハードウェアの制限は考えになかったです。スクリプトの記述にばかり気がいってました。
検証は明日にしますが、恐らくそれでないかと思います。
ありがとうございます。
2021/08/30(月) 01:12:08.43ID:BRg6p2uO0
>>191
上の人はもうずっと人生にイライラしててこういうところでぶつけなきゃならない可哀想な人なので気にしなくていいよ
2021/08/30(月) 01:43:35.22ID:gXVwVWl10
少しばかり強い口調な程度でめちゃ怒るだの人生にイライラだの言って煽ってるヤツはあたおかなのかな
匿名掲示板なんて礼儀無用の場所でそれでも質問に対して的確な回答して貰ってるだけでもありがたく思えよ
2021/08/30(月) 08:19:56.75ID:MHqEAORv0
> 礼儀無用の場所

そう思っているのは君だけだよ
2021/08/30(月) 08:30:58.23ID:8depfcFg0
なるほど
確かに
2021/08/30(月) 14:08:04.27ID:qIEcctKd0
>>200
お前失礼な奴だな
203名無しさん@お腹いっぱい。
垢版 |
2021/08/31(火) 03:18:35.24ID:6aJLAtX40
まあ、まったりいこうよ。

この問題は、質問者あるいは回答者の態度に本質があるのではなく、
運用の問題のように思う。

「こうなる筈だけどなりません」という質問では、コードにすべてが含まれるので、
問題が再現する最小限のコードを添えて質問されることが望ましい。
そうであれば、質問の情報不足により回答が無駄になることもないし、質問者・回答者の双方にとってよい。

そういう質問の場合は、まずコードを貼るように促す、という運用にするのがよいように思う。
(他の質問の場合は必ずしもコードは必要ない)

次スレから>>1に以下を加えようと思う。
当面はこのレスへのアンカーで代用してください。

「こうなる筈だけどなりません」 という質問の場合は、
問題が再現する最小限のコードを貼って質問してください。
2021/08/31(火) 06:29:30.29ID:s0k4Ntk80
昔からずっと言われ続けてるよね
質問するときはまず自分が書いたコード貼りましょうって
2021/08/31(火) 08:16:02.45ID:60d7DLCy0
今のテンプレから無くなってるんだな
わからないn大理由 とかのコピペと一緒に削られたんだっけ?
2021/08/31(火) 18:00:45.76ID:MH7YEtNP0
削られてはいない
>>1の最後に別リンクとしてテンプレまとめられただけ
2021/08/31(火) 18:42:50.06ID:60d7DLCy0
いや
https://pastebin.com/raw/bWipuNmt
のほうにも質問時はコード貼れ的な文言は無いのよ
2021/09/01(水) 19:48:57.68ID:cRbv4QOe0
AutoHotkey運用のサポートに向いたツールって何がありますかね?
コマンドが全部登録されているエディタとか
2021/09/01(水) 19:56:16.64ID:APEsl0TY0
「AutoHotkey運用のサポート」ってなんじゃ?
2021/09/01(水) 20:45:52.99ID:Ig/nBsG30
エディタの話なら前スレ後半
https://egg.5ch.net/test/read.cgi/software/1585906506/916-921
昔は色々あったけど今はVSCodeでいいんじゃない、みたいな流れ
いずれにしろコーディングやデバッグ用であって保守ツールではないが

ただVSCodeのAHK拡張はいくつがあるけどclassのドットシンタックス対応してるのはあんまりなくて
文脈見て補完してくれるわけじゃないんだよね
pythonやjs級のサジェストを期待するとがっかりするという
2021/09/03(金) 19:31:15.90ID:e77+MDlJ0
ahk用のエディタは10数年SciTE4AutoHotkey使ってきたからこれ以上に便利なエディタがあっても移行する元気が無い
2021/09/04(土) 08:15:30.49ID:+XwIElDv0
インストーラー版で出来ることが、ポータブル版だと出来ないこととか、
ポータブル版のデメリットって、あったりしますか?
2021/09/04(土) 09:49:19.37ID:4dv8C2Ez0
ない
2021/09/04(土) 10:21:04.34ID:rs/w/ooy0
exeインストーラ版は使ったことないど
zip版にもInstaller.ahkは同梱されてるので自分でインストーラ起動することはできる
ポータブルのまま使おうとすると.ahk関連付けはされないのでAutohotkey.ahk以外のスプリクト実行時に不便さはあるかもしれない
2021/09/04(土) 10:48:00.69ID:Ih7+qEOD0
インストーラー自体もahkで作ってあるのは面白いよな
ただv2になったら、本体には署名付けた方がいいと思うわ
2021/09/04(土) 13:15:54.83ID:zJek2KHC0
>>212
レジストリに一切なにも書きたくないってことだと
ahkファイルが関連付け実行できないのと、ahkファイルへのD&Dでのファイル渡しができない
217名無しさん@お腹いっぱい。
垢版 |
2021/09/04(土) 22:20:11.21ID:AimzS8BV0
Xbutton1 & Wheelup::send!{Right}

というキー設定をしてしまうとXbutton1が動かなくなりますよね
Xbutton1にチルダをつけると動きだしますがこうしてしまうと上記のスクリプトを実行するとXbutton1が押されてからsend!{Right}
が実行されてしまうんですがXbutton1が押されないようにする方法ってないですかね

Xbutton1::send,{Xbutton1} というスクリプトを用意しておけば問題がないことが多いですが特定のアプリだとその記述だとXbutton1がうまく作動しなくなるのです
218名無しさん@お腹いっぱい。
垢版 |
2021/09/05(日) 02:24:26.25ID:PD90xRRj0
>>217
普通は最後に書かれた方法で対策するだろうけど、
うまく動作しないアプリというのは何なんだろう。

管理者権限必要なアプリではそのままでは動作しないが、それ以外では何か?
2021/09/05(日) 02:42:10.22ID:ssfg2uHj0
>>217
それはXbutton1を離した瞬間に{Xbutton1 Down}と{Xbutton1 Up}を発行するからだろう
ソフトによってはそれが一瞬過ぎて反応してないのでは?
SetKeyDelay, ,50
とかPressDuration設定しておけば反応するかもしれない

またその特定アプリ限定の機能でサイドボタン押しながらクリックなどの組み合わせコマンドがある場合は
それらも使えなくなる
一行目のコンビネーションキーがあると
Xbutton1::send,{Xbutton1} は Xbutton1 up::send,{Xbutton1} に自動変換されてるので
220名無しさん@お腹いっぱい。
垢版 |
2021/09/05(日) 03:33:46.77ID:4k0gIAxJ0
>>218
>>219
SetKeyDelay設定してもだめでした
動かなくなるアプリはblenderです。今まではloopやGetKeyState、keywait、send,{Xbutton1 down} send,{Xbutton1 up}を組み合わせてXbutton動作を再現できてたんですが
blenderではそれがうまくいきませんでした
blender内ではボタン判定の押下、押上、クリック、ダブルクリックすべて別々にキーボードショートカットが割り当てられるようになっているんですが、この辺の判定がAHKを通してしまうとだめになってしまうようです
AHKを入れても判定がとれるのはボタンの押上部分だけでしたがこれではやりたいことができません

Xbuttonのコンビネーションキー割り当てはすべてのアプリで共通にしてたんですがそれをやめて#ifwinnotactiveでblederを除外してそこでチルダは使わずコンビネーションキーの設定をして動かなくなった両ボタンを
Xbutton1::send,{Xbutton1}
Xbutton2::send,{Xbutton2}
で再設定しblender専用のahkスクリプトを用意して
~Xbutton1 & Xbutton2::send,a
~Xbutton2 & Xbutton1::send,a
とコンビネーションキーにチルダをいれてやりました
blender内ではXbutton自体のショートカットキー割り当てがカテゴリごとに細かくできるためAHK側でXbuttonを使ったコンビネーションキー設定をしてblederで割り当てたXbuttonショートカットがそのまま押されても特に問題がないのでこれでいきます
どうもでした
221名無しさん@お腹いっぱい。
垢版 |
2021/09/05(日) 18:54:36.73ID:4k0gIAxJ0
220ですが#ifwinactiveをつけておけば個別にXbutton1の挙動を制御できるのかと思ったのですがそうではなかったようなのでもう一度質問させてください
簡略化していますがこういったスクリプトを用意した場合に問題がおきました

;スクリプト1
#ifwinactive ahk_exe blender.exe
~xbutton1 & xbutton2::return
#if

;スクリプト2
#ifwinnotactive ahk_exe blender.exe
xbutton1::send,{xbutton1}
xbutton1 & xbutton2::return
#if

スクリプト1を先に書くと1の"~xbutton1"のせいでスクリプト2のxbutton1 & xbutton2を実行するとxbutton1が押されてしまいます
2を先に書くと2の"xbutton1 &"のせいでblender内でxbutton1が無効化されてしまいます
スクリプト1のblender内で動く"~xbutton1"の設定がスクリプト2のblender以外で動く"xbutton1 & xbutton2"のスクリプトに影響しないようにはできないですかね?
とりあえずスクリプト1とスクリプト2を2つのahkファイルに分けてそれらを別々に起動した場合は問題は起きなかったのですが
スクリプト全体で使ってる関数や変数の問題もあるのでできればスクリプト1と2は1つのahkファイルにまとめておきたいのです
2021/09/05(日) 19:41:50.32ID:55L6m1mh0
なんかよくわからんけど、こういうことをやりたいのかな?

; エクスプローラー上でX1で押しながらx2でビープ音が鳴るホットキー
#ifwinactive ahk_exe explorer.exe
XButton2::
if (GetKeyState("XButton1", "P")) {
SoundBeep ; 処理内容
}
#ifwinactive

新規ファイルにコピペして試してみて
スクリプト2は考えなくていい
2021/09/05(日) 19:49:58.99ID:55L6m1mh0
あ、最後の行に
return
付けといて
2021/09/05(日) 20:29:46.86ID:JLry4axt0
俺ならこう書くかなー

;blenderのウインドウがアクティブでない時にXbutton1押しながらWheelupするとsend,!{Right}実行する
;winactiveのところは"ahk_class blenderのウインドウクラス"とか色々変えて更にウインドウを限定させると誤爆が減ると思う
#If ! winactive("ahk_exe blender.exe") && GetKeyState("Xbutton1","P")
Wheelup::send,!{Right}
#If
2021/09/05(日) 20:32:08.01ID:JLry4axt0
>>224
;winactiveのところは 〜
↑の行は不要だったスマン
2021/09/05(日) 22:24:46.15ID:XcDcjvby0
> blender内ではボタン判定の押下、押上、クリック、ダブルクリックすべて別々にキーボードショートカットが割り当てられるようになっているんですが、

よく分からんが
xbutton1::xbutton1

xbutton1::send,{xbutton1 down}
xbutton1 up::send,{Xbutton1 up}
って明示してもダメなん?
2021/09/05(日) 22:28:14.24ID:cGeXKER90
>>226
だからコンビネーションキーの記述があると
Xbutton1::send,{Xbutton1} は Xbutton1 up::send,{Xbutton1} に自動変換されると言ってるだろ
物理的に離したときにソフト的に押して離す動作に変わるんだよ
228名無しさん@お腹いっぱい。
垢版 |
2021/09/06(月) 00:55:31.95ID:lHIcgR9p0
レスどうもです

>>222>>226
AHKでXbutton押しを再現してもblenderはそれの押上状態しか取得しないためだめでした
down up keywait loop どれを組み合わせてもWindowsのXbutton押し判定をAHKはblender内で完全再現できないです
>>224
その方法だとXbutton2が押されているときにのみXbutton1が改変されるのでいけました
参考にして試しに書いてみましたがこれでXbutton2はそのまま動きました
#If winactive("ahk_exe blender.exe") && GetKeyState("Xbutton2","P")
xbutton1::tooltip,a
#if
#If ! winactive("ahk_exe blender.exe") && GetKeyState("Xbutton2","P")
xbutton1::tooltip,b
#if

スクリプト2の部分はあまりにも数が多すぎるのでそのままにしてスクリプト1の部分をすべてこの教えてもらった書式に書き換えました
ありがとうございました
2021/09/06(月) 01:18:56.47ID:4sBED/Kj0
その手のロッカージェスチャはMouseGestureLを使うのがいいよ
今まであなたが試行錯誤してきた発動前後の面倒な挙動は
本体側で吸収されるし、基本はGUIで設定できるので、
使いやすい組み合わせを簡単に試せる
2021/09/06(月) 22:05:44.46ID:lHIcgR9p0
>>229
MGLも併用してますけどWebブラウザのみに限定してますわ
AHK制御してるアプリの数が膨大すぎてMGLでは管理しにくいです
2021/09/06(月) 22:45:58.66ID:LwodLu8u0
オレは右クリックをトリガーにしてマウスを動かす、いわゆるマウスジェスチャーだけMGLの機能に任せて
ロッカーとか長押しとかホイールまわりはイマイチ設定の仕方が分からないので自分で作ったスクリプトをプラグインとして動かしてるな
自分が分かる範囲のものは自分でスクリプト書いとけばメンテもやり易いし
2021/09/18(土) 12:19:22.39ID:ng/j12p80
ctrl+a〜z これはInputで押されたかどうかを判定できるんですが
ctrl+alt+a〜z が押されたかどうかを判定できるコマンドってないですか?
2021/09/18(土) 12:59:27.17ID:VMnRiOkc0
#if で alt が押されてる場合に限定して ctrl+a〜z が押されたか判定すれば?分からんけど
2021/09/18(土) 15:46:18.09ID:fea/QhDk0
>>232
修飾キーは普通に修飾シンボルで指定するだけなんだが
修飾シンボルはwikiのホットキーのページ参照
2021/09/18(土) 19:41:15.91ID:8EXsG67t0
s := finddata()
if !s
  s := “not found”

s := finddata() or “not found”
的に書く技ないの?
2021/09/18(土) 20:15:24.42ID:1eBfOOmY0
v1は
a := (a := finddata()) ? a : "not found"

v2なら
a := finddata() || "not found"
2021/09/18(土) 21:02:04.05ID:8EXsG67t0
>>236
ComObjCreate("SAPI.SpVoice").Speak("ありがとう")
2021/09/19(日) 11:47:43.88ID:SWgNsmZ+0
>>236
一つ目は可読性がちょっとw

(a := finddata()) ? : a := "not found"
>>235の趣旨とは少し違うけど、こうすれば多少ましか


仕様なのか、これはNGらしい
!(a := finddata()) ? a := "not found"
2021/09/19(日) 14:28:30.23ID:4ASdBC8f0
バイバインで無限増殖させてぼろもうけうわあああああああああああああたすけてドラえもん!
2021/09/19(日) 14:30:06.17ID:4ASdBC8f0
ごばばあ〜
2021/09/19(日) 16:45:38.41ID:143zRgid0
三項演算に空欄を作るよりは、冗長な名前が2回出てくる方がマシだな
2021/09/19(日) 20:47:16.12ID:tPiNlk2p0
>>238
!も演算子だから行頭に書くと前行に連結される
ので→ (!var)
2021/09/19(日) 20:51:20.30ID:SWgNsmZ+0
>>242
へーそうなんだ
勉強になったわ
244名無しさん@お腹いっぱい。
垢版 |
2021/09/19(日) 23:19:07.82ID:xZ/iOS6m0
AHKに式を区切る文字があったなら、例えば ; だとしたら
;!var
と書けるのだけど
2021/09/20(月) 07:51:49.54ID:zcF0BCXz0
a := "abc"
, !(a := StrReplace(a,"abc")) ? a := "EMPTY"
msgbox % a

, でできるよ
246名無しさん@お腹いっぱい。
垢版 |
2021/09/20(月) 08:14:06.86ID:IJtapnCb0
それは、直前の行が代入等の場合だけでは

MsgBox "AAA"
, !var

とかだとできなそうな
2021/09/20(月) 08:34:23.13ID:zcF0BCXz0
それは無理だね
msgboxのパラメーター区切りと判断されるから
まあv2待ちってことで
2021/09/20(月) 09:34:57.73ID:hExcXUe/0
ECMAで言うところの「ASI」に完全依存した言語仕様
249名無しさん@お腹いっぱい。
垢版 |
2021/09/21(火) 15:38:32.43ID:AZf9samG0
なんか、
最新版でTrayTipコマンドが機能しなくなったんだけど、俺だけ?

Windows 10で
2021/09/22(水) 11:35:13.91ID:x8vNzx8B0
Web検索するスクリプトなんだけど、
エクセルの特定のセルから拾おうとすると末尾にゴミ入ってちゃんと機能してくれない
%20(スペースのこと?)が入ってしまう
セルの内容を他にコピーしてそこから検索すると大丈夫だったりする
うーん
2021/09/22(水) 11:42:01.24ID:BV+vHBB50
再三言われてるけど、そのスクリプトを明かさない限り
具体的なアドバイスをしようがない
基本的に取得したテキストのごみを取ってからURL変換して
送るのが正しい作法だけど
2021/09/23(木) 00:14:42.81ID:eXpxQJSa0
>>251
スクリプトいれるとアク禁とか出るわ。。

できるセルとできないセルがあって、
できるセルは値が文字列型になってた
できないセルは数値型になってて、末尾にゴミのようなものが入ってしまう

セルの方はいじれないようなのでうまくゴミ削りたいんだけど、どうしたらいいんだろう
■ このスレッドは過去ログ倉庫に格納されています

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