元々がIDのみの表示で番号の始まっているスレを途中から別の表示で乗っ取るのは「背乗り」行為に当たるので、IDのみの表示で進行とします
■配布元
https://autohotkey.com/download/
■前スレ
AutoHotkey スレッド part29
https://egg.5ch.net/test/read.cgi/software/1620768466/
■日本語解説等
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
AutoHotkey スレッド part30 IDのみ
レス数が1000を超えています。これ以上書き込みはできません。
2022/02/08(火) 18:38:19.33ID:UTRGyCNl0
2022/02/10(木) 15:45:10.69ID:WabIUjFV0
キンドルストアで売ってる唯一の日本語マニュアル買ってみたんだけど
ボリューム無かった
もうちょっと色々情報欲しかった
ボリューム無かった
もうちょっと色々情報欲しかった
3名無しさん@お腹いっぱい。
2022/02/11(金) 10:02:20.40ID:12WhonFv0 それぞれのコマンドの使い方
新しく加わっていくコマンド
バージョンが変わって削除されたコマンドはどう確認すればいいの?
新しく加わっていくコマンド
バージョンが変わって削除されたコマンドはどう確認すればいいの?
4名無しさん@お腹いっぱい。
2022/08/05(金) 19:59:48.12ID:0sEFrCso0 ふあああ
5名無しさん@お腹いっぱい。
2022/08/06(土) 07:53:15.43ID:bxMhPJ900 お、普通の表示で立ってる
よかったあの表示気持ち悪いし邪魔臭くて嫌いなんだ
よかったあの表示気持ち悪いし邪魔臭くて嫌いなんだ
2022/08/12(金) 17:44:44.58ID:gepA59Dc0
ChromeのDOMって操作できる?
FireFoxでもいいけど
FireFoxでもいいけど
7名無しさん@お腹いっぱい。
2022/08/12(金) 20:08:12.42ID:wga9M1ej0 https://www.autohotkey.com/boards/viewtopic.php?t=42890
ブラウザ自動化なら個人的にPythonでSelenium使ったほうが汎用性高いと思う
スクレイピングならBeautiful Soup 4
ちょっとDOM弄りたいならUserscript
ブラウザ自動化なら個人的にPythonでSelenium使ったほうが汎用性高いと思う
スクレイピングならBeautiful Soup 4
ちょっとDOM弄りたいならUserscript
2022/08/20(土) 16:00:14.36ID:DC/mpmo50
このダイアログが出た状態から
d:\src\test.ahkの2行目にタグジャンプする方法ってないの?
全世界のAHKユーザーは手動でジャンプしてるの
---------------------------
test.ahk
---------------------------
Error at line 2.
Line Text: test
Error: This line does not contain a recognized action.
The program will exit.
---------------------------
OK
---------------------------
d:\src\test.ahkの2行目にタグジャンプする方法ってないの?
全世界のAHKユーザーは手動でジャンプしてるの
---------------------------
test.ahk
---------------------------
Error at line 2.
Line Text: test
Error: This line does not contain a recognized action.
The program will exit.
---------------------------
OK
---------------------------
9名無しさん@お腹いっぱい。
2022/08/25(木) 20:50:53.77ID:KCQBMTmu0 ClassNNのテキストはどうやって取得すればいいですか?
10名無しさん@お腹いっぱい。
2022/08/28(日) 20:37:58.64ID:4Ld0lk3O0 んー
2022/10/01(土) 08:56:55.79ID:BZE5Zfde0
tps://qiita.com/catfist/items/22efb95194d8b2b270e1
を元に引数を渡せるようにしてみた
cuteExecALT.exe 実行ファイル 引数
; タスクバーをブリンクさせず強制的にアクティベート
#WinActivateForce
; 引数に実行ファイルのフルパスを与える(Bluewindからの使用を想定)
; http://usbcafe.blog111.fc2.com/blog-entry-103.html
ExePath = %1%
Argument = %2%
SplitPath, ExePath, ExeName
Process,Exist,%ExeName%
if ErrorLevel<>0
WinActivate,ahk_pid %ErrorLevel%
else
Run,%ExePath% %Argument%
return
を元に引数を渡せるようにしてみた
cuteExecALT.exe 実行ファイル 引数
; タスクバーをブリンクさせず強制的にアクティベート
#WinActivateForce
; 引数に実行ファイルのフルパスを与える(Bluewindからの使用を想定)
; http://usbcafe.blog111.fc2.com/blog-entry-103.html
ExePath = %1%
Argument = %2%
SplitPath, ExePath, ExeName
Process,Exist,%ExeName%
if ErrorLevel<>0
WinActivate,ahk_pid %ErrorLevel%
else
Run,%ExePath% %Argument%
return
2022/12/21(水) 16:13:00.91ID:knyn9FQ50
mousegesturelは2.0に対応するのかな
2023/01/07(土) 09:21:26.65ID:k8PWupBR0
テステス
2023/01/09(月) 05:54:47.41ID:SbiXzeCZ0
規制された?
2023/01/15(日) 13:17:40.08ID:MvNFHUkJ0
TEST
2023/01/16(月) 21:09:56.01ID:J7VhRFDb0
書けた!
2023/01/21(土) 22:29:52.40ID:O9/s6Vjc0
あなたはこのスレッドにはもう書けません?
2023/01/22(日) 00:58:51.93ID:Tm/c0CE40
test
2023/01/22(日) 18:02:03.10ID:mlOoBT3e0
余所でやってください。
2023/01/26(木) 07:46:23.49ID:CIme8OXU0
ただ今制限を設けております
2023/01/30(月) 07:20:53.01ID:nkvbieUz0
テスト
22名無しさん@お腹いっぱい。
2023/02/03(金) 13:40:49.51ID:tLksw/I00 前スレで選択したファイルを移動するFileMove教えていただいたものですけど、F16でこのフォルダへ移動、F17でこのフォルダへ…と各キーで各フォルダに割り当てる方法ないでしょうか?
;;F16で選択したファイルをYに移動
DestDir := "Y:\"
F16::
Send, ^c
Loop, Parse, clipboard, `n, `r
{
FileMove, %A_LoopField%, %DestDir%
}
clipboard :=
return
;;F17で選択したファイルをY:\tomatoに移動
DestDir := "Y:\tomato"
F17::
Send, ^c
Loop, Parse, clipboard, `n, `r
{
FileMove, %A_LoopField%, %DestDir%
}
clipboard :=
return
この記述ですとF16は機能するのですがF17は機能しませんでした
https://www.autohotkey.com/boards/viewtopic.php?t=69707
を参考にしています。宜しくお願い致します。
;;F16で選択したファイルをYに移動
DestDir := "Y:\"
F16::
Send, ^c
Loop, Parse, clipboard, `n, `r
{
FileMove, %A_LoopField%, %DestDir%
}
clipboard :=
return
;;F17で選択したファイルをY:\tomatoに移動
DestDir := "Y:\tomato"
F17::
Send, ^c
Loop, Parse, clipboard, `n, `r
{
FileMove, %A_LoopField%, %DestDir%
}
clipboard :=
return
この記述ですとF16は機能するのですがF17は機能しませんでした
https://www.autohotkey.com/boards/viewtopic.php?t=69707
を参考にしています。宜しくお願い致します。
2023/02/03(金) 14:47:42.20ID:LANQPsMI0
F16::
DestDir := "Y:\"
略
F17::
DestDir := "Y:\tomato"
略
DestDir := "Y:\"
略
F17::
DestDir := "Y:\tomato"
略
24名無しさん@お腹いっぱい。
2023/02/03(金) 17:25:22.79ID:tLksw/I00 >>23
ありがとうございます
ただこちら試していて分かったのですが、フォルダ名に日本語が入っていると機能しないんですね…
"Y:\書類"ですと機能せずアルファベットですと動きました
autohotkey自体の仕様で、この辺りはさすがにどうしようもないですよね?
ありがとうございます
ただこちら試していて分かったのですが、フォルダ名に日本語が入っていると機能しないんですね…
"Y:\書類"ですと機能せずアルファベットですと動きました
autohotkey自体の仕様で、この辺りはさすがにどうしようもないですよね?
2023/02/04(土) 05:27:20.19ID:oKa8UIma0
>>24
スクリプトファイルの文字コードをUTF-8 BOM付きにする
スクリプトファイルの文字コードをUTF-8 BOM付きにする
26名無しさん@お腹いっぱい。
2023/02/04(土) 22:55:50.47ID:Hk/oyai50 >>25
ありがとうございます…感動です。これでワンボタンで特定のフォルダへ移動出来るようになりました
何十個もあると本当に移動できているのか確認するすべがないので怖いですが…とにかく感謝です
ありがとうございます
ありがとうございます…感動です。これでワンボタンで特定のフォルダへ移動出来るようになりました
何十個もあると本当に移動できているのか確認するすべがないので怖いですが…とにかく感謝です
ありがとうございます
2023/02/05(日) 02:20:54.45ID:tXpgRt7Z0
左SHIFTを2回連打(2回目を離した)ときに起動したいアプリがあるんだけど
SHIFT押しっぱなしで英大文字が入力できなくなってしまう...
簡単に実装できないの?
SHIFT押しっぱなしで英大文字が入力できなくなってしまう...
簡単に実装できないの?
2023/02/05(日) 08:49:24.13ID:5m2deuZX0
俺はできる
29名無しさん@お腹いっぱい。
2023/02/07(火) 03:53:33.05ID:m+G7oWrP0 altとXでカタカナに変換をしたいのですが、結構な頻度でaltキーが押しっぱなしになってしまいます。
解決方法や他に良い一発カタカナ変換の方法ないでしょうか?
;altとXでカタカナに変換
SetKeyDelay, 0
!x::
Send,{F6}
return
解決方法や他に良い一発カタカナ変換の方法ないでしょうか?
;altとXでカタカナに変換
SetKeyDelay, 0
!x::
Send,{F6}
return
2023/02/07(火) 04:50:27.45ID:72hpDNxz0
カタカナ変換って言ったらCtrl+Iだろ
なんでそんな押しにくい場所に
それにIME周りは状態ON/OFFで挙動変えないといけないから面倒
AHKに頼らずIME側のキーカスタマイズでやったほうが楽じゃね
なんでそんな押しにくい場所に
それにIME周りは状態ON/OFFで挙動変えないといけないから面倒
AHKに頼らずIME側のキーカスタマイズでやったほうが楽じゃね
2023/02/10(金) 09:13:31.27ID:Fan/G82J0
基本US配列なんですがJP配列をトグルで切り替えるにはどうしたらいいですか?
やりたいことは
F13 & Spaceを一度押すとUS→JP(例えば+2::Send, @ が有効)になり
もう一度F13 & Spaceで無効になる、という感じです
ahkファイルをサスペンドすると他のホットキーまで使えなくなるのでトグル切替にしたいです
やりたいことは
F13 & Spaceを一度押すとUS→JP(例えば+2::Send, @ が有効)になり
もう一度F13 & Spaceで無効になる、という感じです
ahkファイルをサスペンドすると他のホットキーまで使えなくなるのでトグル切替にしたいです
2023/02/10(金) 09:19:40.77ID:Fan/G82J0
2023/02/10(金) 10:30:41.84ID:MnsaaDmR0
>>31
>F13 & Spaceを一度押すとUS→JP(例えば+2::Send, @ が有効)になりもう一度F13 & Spaceで無効になる
素人が思いつくのは、フラグをオン/オフして #IF を使う
>F13 & Spaceを一度押すとUS→JP(例えば+2::Send, @ が有効)になりもう一度F13 & Spaceで無効になる
素人が思いつくのは、フラグをオン/オフして #IF を使う
2023/02/10(金) 11:00:12.96ID:8wvoSwvS0
ahkでやるのは本末転倒じゃないの?
Windowsなら普通は言語からキーボードレイアウトを追加して
Win+Spaceで切り替えるのが普通だと思うけど
Windowsなら普通は言語からキーボードレイアウトを追加して
Win+Spaceで切り替えるのが普通だと思うけど
2023/02/10(金) 21:31:55.47ID:KOfPDD7w0
押したキーがahkにとってどういう名称のキーとして認識されているか簡潔に確認するにはどうしたらいいんでしょうか
a~zなどは調べるまでもないですが、例えばゲームパッドのそれぞれのボタンなどはどう認識されているかわかりません
CUIやGUI上に押すたびに記録されて、できればそれをコピペして手早く取り出せるような方法がいいです
a~zなどは調べるまでもないですが、例えばゲームパッドのそれぞれのボタンなどはどう認識されているかわかりません
CUIやGUI上に押すたびに記録されて、できればそれをコピペして手早く取り出せるような方法がいいです
2023/02/11(土) 17:28:52.84ID:vStIZvs50
>ULE4JISを試しましたがエクスプローラでは使えないので
タスクスケジューラでログオン時に最上位特権実行させればイケるでしょ
タスクスケジューラでログオン時に最上位特権実行させればイケるでしょ
2023/02/12(日) 21:38:52.12ID:wAIifo6Q0
>>35
1.AHK(スクリプト)のウィンドウを表示して
2.メニューからView-Key history and scipt info
3.調べたいキーを押す
4.メニューからView-Key history and scipt info
1.AHK(スクリプト)のウィンドウを表示して
2.メニューからView-Key history and scipt info
3.調べたいキーを押す
4.メニューからView-Key history and scipt info
2023/02/13(月) 00:26:02.67ID:IBQcR0l60
努力だ。勉強だ。それが天才だ
2023/02/13(月) 22:10:18.25ID:vprSE+NJ0
-y(▼。▼メ)Ξ(▼。▼メ)/⌒-~ポイッ!!
2023/02/14(火) 02:14:30.19ID:k+AHi9uy0
昨日から使い始めたけどどうやっても使えない所が3つあった
というのはUSBドングル刺して使うリモコンのメディアキーのVolume_Up Volume_Down Volume_Mute
この3つが何も起こらないので検索したりキーリスト間違ってないか確かめたが何も変わらない
スキャンコード表示して調べたら原因はスキャンコードを使ってないことと判明
どうやらキーボードのメディアキーでなくリモコンなのでキーを吐いてなかった
なんとかしたいがこの3つはやってることは結果的に同じなのだろうがキー吐いてないので無理か
既出の[全角/半角][ひらがな/カタカナ][キャプスロック]のキー押しっぱなし問題にも参った
実はこれ使うまではKeySwapでキー変更して数年使ってきたのだがUSBリモコンのメディアキーを変更したくてこのソフト1本で行こうとしてたのだが
キー押しっぱなし問題の解決がレジストリのキー変更ソフトにまた頼らざるを得ないとは思わなんだ
まぁこのソフトは上の欠点以外なら何でも出来ると言ってもいい汎用性から使うことにしたがリモコンがキー吐かないのは想定外だった
というのはUSBドングル刺して使うリモコンのメディアキーのVolume_Up Volume_Down Volume_Mute
この3つが何も起こらないので検索したりキーリスト間違ってないか確かめたが何も変わらない
スキャンコード表示して調べたら原因はスキャンコードを使ってないことと判明
どうやらキーボードのメディアキーでなくリモコンなのでキーを吐いてなかった
なんとかしたいがこの3つはやってることは結果的に同じなのだろうがキー吐いてないので無理か
既出の[全角/半角][ひらがな/カタカナ][キャプスロック]のキー押しっぱなし問題にも参った
実はこれ使うまではKeySwapでキー変更して数年使ってきたのだがUSBリモコンのメディアキーを変更したくてこのソフト1本で行こうとしてたのだが
キー押しっぱなし問題の解決がレジストリのキー変更ソフトにまた頼らざるを得ないとは思わなんだ
まぁこのソフトは上の欠点以外なら何でも出来ると言ってもいい汎用性から使うことにしたがリモコンがキー吐かないのは想定外だった
2023/02/14(火) 09:33:39.56ID:Q1zAT7Yx0
このサイトの最初にあるスクリプトでHIDデバイスとして認識される?https://www.autohotkey.com/board/topic/36304-hidextended-input-devices-ms-natural-keyboard-4000-etc/
キャプチャしてリモコンキー押して何か表示される?
もし表示されるならDllCallゴリゴリしまくれば解決できるのかもしれない
(自分にはそのスキル皆無だけど)
ちな上のスクリプトはautohotkeyU32.exeじゃないと動かないと思う
自分はオレ環でどうしてもThumbRemapが使えなかったので前述のGetRawInputDeviceメソッドでタッチ検出してる
キャプチャしてリモコンキー押して何か表示される?
もし表示されるならDllCallゴリゴリしまくれば解決できるのかもしれない
(自分にはそのスキル皆無だけど)
ちな上のスクリプトはautohotkeyU32.exeじゃないと動かないと思う
自分はオレ環でどうしてもThumbRemapが使えなかったので前述のGetRawInputDeviceメソッドでタッチ検出してる
2023/02/14(火) 12:37:18.09ID:310xcsUI0
>>40
キーとして吐き出さないようなのが微妙ですが、AHKだとこちらおすすめ
・(3) AutoHotInterception (AHI): Multi-Keyboard / Multi-Mouse support for AHK. Per-device blocking! - AutoHotkey Community
https://www.autohotkey.com/boards/viewtopic.php?t=45307
上記のAHKサポート終わったので後継がC# GUIで開発されてます。
・Snoothy/UCR: Universal Control Remapper [Alpha]
https://github.com/Snoothy/UCR
キーとして吐き出さないようなのが微妙ですが、AHKだとこちらおすすめ
・(3) AutoHotInterception (AHI): Multi-Keyboard / Multi-Mouse support for AHK. Per-device blocking! - AutoHotkey Community
https://www.autohotkey.com/boards/viewtopic.php?t=45307
上記のAHKサポート終わったので後継がC# GUIで開発されてます。
・Snoothy/UCR: Universal Control Remapper [Alpha]
https://github.com/Snoothy/UCR
4340
2023/02/14(火) 16:13:19.48ID:QNgIy5BT0 >>41 >>42
紹介されたソフトを試したが使い方が難しく翻訳などして使い方を調べたが正常に使うことは残念ながら出来なかったけど
色々ありがとう
結局KeySwapは削除しキー押しっぱなし問題でF13等に割り振るのにブログで紹介されてるChange Keyでキー変更をKeySwapと同じにし
目的のリモコンの[ブラウザ ホーム] → [スペース] [ブラウザ 戻る] → [ホーム]の2つを変更 [音量 大][音量 小][消音]はキー吐きなしで不可ということに
キー押しっぱなし問題でChange Key使うことになったのでAutoHotkeyで全部やろうとキー変更で時間かけて調べた10個程度の設定は削除したので
今のところAutoHotkeyの設定はリモコン用2つの設定だけになってしまったがキーボードやリモコンを使い易くする設定を追加しないとソフトが勿体ないと言えるほど
色々出来るのでこれからやろうと思う
ちなみにリモコンはG20S PRO https://androidpctv.com/g20s-pro-bt-review/
※メディア・数字・BS・ホーム・方向・ページUDは通常キー同様なのでキー変更可能
紹介されたソフトを試したが使い方が難しく翻訳などして使い方を調べたが正常に使うことは残念ながら出来なかったけど
色々ありがとう
結局KeySwapは削除しキー押しっぱなし問題でF13等に割り振るのにブログで紹介されてるChange Keyでキー変更をKeySwapと同じにし
目的のリモコンの[ブラウザ ホーム] → [スペース] [ブラウザ 戻る] → [ホーム]の2つを変更 [音量 大][音量 小][消音]はキー吐きなしで不可ということに
キー押しっぱなし問題でChange Key使うことになったのでAutoHotkeyで全部やろうとキー変更で時間かけて調べた10個程度の設定は削除したので
今のところAutoHotkeyの設定はリモコン用2つの設定だけになってしまったがキーボードやリモコンを使い易くする設定を追加しないとソフトが勿体ないと言えるほど
色々出来るのでこれからやろうと思う
ちなみにリモコンはG20S PRO https://androidpctv.com/g20s-pro-bt-review/
※メディア・数字・BS・ホーム・方向・ページUDは通常キー同様なのでキー変更可能
2023/02/14(火) 21:33:20.73ID:xlp6NYZy0
>>43
41のやつは使い方難しくないよ。
最初のスクリプトを全部コピペで新しいahkファイル作ってAutohotkeyU32.exeに投げるだけ。
GUIでキャプチャしておいてリモコンの消音とか押してみてGUIにログが流れてきたら一筋の光明あり。
といっても、じゃあその先のスクリプト組もうと思っても恐ろしく難しいんよね
41のやつは使い方難しくないよ。
最初のスクリプトを全部コピペで新しいahkファイル作ってAutohotkeyU32.exeに投げるだけ。
GUIでキャプチャしておいてリモコンの消音とか押してみてGUIにログが流れてきたら一筋の光明あり。
といっても、じゃあその先のスクリプト組もうと思っても恐ろしく難しいんよね
2023/02/14(火) 22:46:48.70ID:QNgIy5BT0
>>44
ありがと それ古い方AutoHotkey_1.1.36.02で投げたら反応あった ※元々実行ファイルが2.0.2になかったね
[音量 大] HND 131153 HID Size 3 Count 1 Ptr 49612784 Input 03E900
[音量 小] HND 131153 HID Size 3 Count 1 Ptr 49612784 Input 03EA00
[消音] HND 131153 HID Size 3 Count 1 Ptr 49612784 Input 03E200
2.0.2にこれらの数値をいくつか入れたけど反応無しだったけど まぁ適当に入れても使えるわけないか
上の数値の正しい書式が有ってAutoHotkeyで使えるかどうかは不明だけどダメ元で調べてみる
あとこのソフトは古くからあるので解説サイトとかブログの設定入れても新しい2.0.2では殆どエラー吐いて使えなかった
設定の書式が短くなったり変わったらしく使えるように短くして2.0.2用にするのが少し面倒だったけど古い方がそのまま使えていいのかもしれないね
ネット情報の殆どが1.1用?ばかりだったので
ありがと それ古い方AutoHotkey_1.1.36.02で投げたら反応あった ※元々実行ファイルが2.0.2になかったね
[音量 大] HND 131153 HID Size 3 Count 1 Ptr 49612784 Input 03E900
[音量 小] HND 131153 HID Size 3 Count 1 Ptr 49612784 Input 03EA00
[消音] HND 131153 HID Size 3 Count 1 Ptr 49612784 Input 03E200
2.0.2にこれらの数値をいくつか入れたけど反応無しだったけど まぁ適当に入れても使えるわけないか
上の数値の正しい書式が有ってAutoHotkeyで使えるかどうかは不明だけどダメ元で調べてみる
あとこのソフトは古くからあるので解説サイトとかブログの設定入れても新しい2.0.2では殆どエラー吐いて使えなかった
設定の書式が短くなったり変わったらしく使えるように短くして2.0.2用にするのが少し面倒だったけど古い方がそのまま使えていいのかもしれないね
ネット情報の殆どが1.1用?ばかりだったので
2023/02/15(水) 01:31:27.77ID:8QbFNS1a0
VSCode使うとAHKで自前で書いた関数の補完や
関数前に書いたJavaDoc的な説明コメントをヒントとして表示してくれたりするの?
関数前に書いたJavaDoc的な説明コメントをヒントとして表示してくれたりするの?
2023/02/15(水) 02:44:41.74ID:dV0ccaqa0
>>45
inputがちゃんと一意になってるね
自分も詳しいわけじゃないけど
DLLCallのGetRawInputDeviceInfoでメモリアドレスに色々な情報を読み出してて
その一意の番号もメモリアドレスのどっかに展開されてて、その場所を特定してうまく取り出すことができればAHK側で好きなように処理できる。
ただ引数やらデータの型やらメモリに呼び出すまでのお作法やら、素人が一日や二日で紐解けるようなレベルじゃない。
でも、根気よくスクリプトとにらめっこして試行錯誤繰り返していればいつか目的達成できると思う
inputがちゃんと一意になってるね
自分も詳しいわけじゃないけど
DLLCallのGetRawInputDeviceInfoでメモリアドレスに色々な情報を読み出してて
その一意の番号もメモリアドレスのどっかに展開されてて、その場所を特定してうまく取り出すことができればAHK側で好きなように処理できる。
ただ引数やらデータの型やらメモリに呼び出すまでのお作法やら、素人が一日や二日で紐解けるようなレベルじゃない。
でも、根気よくスクリプトとにらめっこして試行錯誤繰り返していればいつか目的達成できると思う
2023/02/16(木) 21:19:31.80ID:wBGsdM8x0
>>46
v2ならAutoHotkey v2 Language Supportで
v2ならAutoHotkey v2 Language Supportで
2023/02/24(金) 22:20:53.40ID:lyZ5EZMW0
#Persistentで常駐させているスクリプトがあるんですが、
あるホットキーによるスクリプト実行時のみ一時的に無効にして、スクリプト終了時に再度有効化する方法ってありますか?
常駐スクリプトはアクティブウィンドウが切り替わり時に自動実行するもので、おそらくよく使われているものかと思います。
ウィンドウを短時間にいくつか切り替えたり、クリックメニューを出したりさせているせいか、常駐スクリプトの割り込みが多数発生して
あるスクリプトでは、WinWaitActiveが働かず時間切れになります。
割り込みを禁止しようとしてもコールバック関数自体のスレッド優先度が高過ぎて難しいような気がします。
何か方法はありますでしょうか?
myFunc := RegisterCallback("WinActivateHandler")
myHook := DllCall("SetWinEventHook"
, "UInt", 0x00000003 ; eventMin : EVENT_SYSTEM_FOREGROUND
, "UInt", 0x00000003 ; eventMax : EVENT_SYSTEM_FOREGROUND
, "UInt", 0 ; hModule : self
, "UInt", myFunc ; hWinEventProc :
, "UInt", 0 ; idProcess : All process
, "UInt", 0 ; idThread : All threads
, "UInt", 0x0003 ; dwFlags : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS
, "UInt")
WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
}
あるホットキーによるスクリプト実行時のみ一時的に無効にして、スクリプト終了時に再度有効化する方法ってありますか?
常駐スクリプトはアクティブウィンドウが切り替わり時に自動実行するもので、おそらくよく使われているものかと思います。
ウィンドウを短時間にいくつか切り替えたり、クリックメニューを出したりさせているせいか、常駐スクリプトの割り込みが多数発生して
あるスクリプトでは、WinWaitActiveが働かず時間切れになります。
割り込みを禁止しようとしてもコールバック関数自体のスレッド優先度が高過ぎて難しいような気がします。
何か方法はありますでしょうか?
myFunc := RegisterCallback("WinActivateHandler")
myHook := DllCall("SetWinEventHook"
, "UInt", 0x00000003 ; eventMin : EVENT_SYSTEM_FOREGROUND
, "UInt", 0x00000003 ; eventMax : EVENT_SYSTEM_FOREGROUND
, "UInt", 0 ; hModule : self
, "UInt", myFunc ; hWinEventProc :
, "UInt", 0 ; idProcess : All process
, "UInt", 0 ; idThread : All threads
, "UInt", 0x0003 ; dwFlags : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS
, "UInt")
WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
}
2023/02/25(土) 00:04:25.73ID:awlsmlYs0
あるホットキーの初段で、常駐させているスクリプトをサスペンドして
終了時に復帰させればいいだけなんじゃ
終了時に復帰させればいいだけなんじゃ
2023/02/25(土) 00:19:10.21ID:dPIaFFwM0
>>49
hookはこちらを
[Class] WinHook - AutoHotkey Community
https://www.autohotkey.com/boards/viewtopic.php?f=6&t=59149
hookはこちらを
[Class] WinHook - AutoHotkey Community
https://www.autohotkey.com/boards/viewtopic.php?f=6&t=59149
2023/02/25(土) 17:27:22.34ID:IlkaxhTt0
Suspendは試しましたが割り込みますね
Suspendはホットキーの無効化だった気がするので常駐スクリプトには効かないんでしょうか
WinHookは...本文の説明にもある通り難解そうですね やはり単純には行かないのですかね
Suspendはホットキーの無効化だった気がするので常駐スクリプトには効かないんでしょうか
WinHookは...本文の説明にもある通り難解そうですね やはり単純には行かないのですかね
2023/02/25(土) 18:34:27.22ID:FZpliw6N0
>>52
スマートな方法かどうかは知らないけど
あるホットキーで変数フラグ立ててホットキー処理の最後でフラグ倒して
常駐スクリプトの各コマンドにフラグ倒れてる場合のみ実行の条件つけるとかは?
上手く行くかはまったく分からない
スマートな方法かどうかは知らないけど
あるホットキーで変数フラグ立ててホットキー処理の最後でフラグ倒して
常駐スクリプトの各コマンドにフラグ倒れてる場合のみ実行の条件つけるとかは?
上手く行くかはまったく分からない
2023/02/25(土) 18:38:38.42ID:FZpliw6N0
常駐スクリプト側にもフラグ付けて特定のホットキーと排他実行するようにしたほうがいいのかな?
2023/02/25(土) 18:55:19.57ID:H2bxHiEl0
2023/02/27(月) 01:27:48.69ID:pfZK3vd10
>>52
サンプルもドキュメントもきれいに整備されてて簡単
モニタースクリプトもあるし
unhookメソッドもご覧の通り
Method: UnHook(hWinEventHook)
Method: UnHookAll()
サンプルもドキュメントもきれいに整備されてて簡単
モニタースクリプトもあるし
unhookメソッドもご覧の通り
Method: UnHook(hWinEventHook)
Method: UnHookAll()
2023/03/07(火) 12:30:05.34ID:YBcczSzi0
マウスの横のボタンにctrlを割り当ててるんですが、
ダブルクリックみたいに2回押した時にshiftとして動作させたいみたいなのってどうやったらできますか?
ダブルクリックみたいに2回押した時にshiftとして動作させたいみたいなのってどうやったらできますか?
2023/03/07(火) 14:15:05.56ID:iXHDEhaA0
KeyWaitで二回目の押下判定してErrorLevelで分岐
2023/03/08(水) 01:52:07.69ID:iQbD6ijV0
#UseHook On
}
sc07B::
key := "sc07B"
KeyWait, %key%, T0.3
If(ErrorLevel){ ;長押しした場合
KeyWait, %key%
return
}
KeyWait, %key%, D, T0.2
If(!ErrorLevel){ ;2度押しした場合
Send {sc07B down} ;
Send {shift down} ;
KeyWait, %key%
Send {shift up} ;
return
}else{ ;短押しした場合
KeyWait, %key%
return
}
#UseHook Off
}
sc07B::
key := "sc07B"
KeyWait, %key%, T0.3
If(ErrorLevel){ ;長押しした場合
KeyWait, %key%
return
}
KeyWait, %key%, D, T0.2
If(!ErrorLevel){ ;2度押しした場合
Send {sc07B down} ;
Send {shift down} ;
KeyWait, %key%
Send {shift up} ;
return
}else{ ;短押しした場合
KeyWait, %key%
return
}
#UseHook Off
2023/03/08(水) 02:05:13.60ID:iQbD6ijV0
教えてもらったErrorLevelでググったところこんな感じのスクリプトがあったので、
改変してやってみたらある程度思ったような動作になりました
ただ、ctrlキーは特殊なようで起動キーをctrlにした場合は動作しないようです
現在マウスキーにctrlを当ててるので代わりに上記の無変換を割り当てたらできないかと思ったんですが、
キーボードの無変換で行った時はできるのにマウスからやるとなぜか動かない
無変換キー単押しは機能するので押せてないわけでもないようなんですが
むずいっす
改変してやってみたらある程度思ったような動作になりました
ただ、ctrlキーは特殊なようで起動キーをctrlにした場合は動作しないようです
現在マウスキーにctrlを当ててるので代わりに上記の無変換を割り当てたらできないかと思ったんですが、
キーボードの無変換で行った時はできるのにマウスからやるとなぜか動かない
無変換キー単押しは機能するので押せてないわけでもないようなんですが
むずいっす
2023/03/08(水) 02:09:01.10ID:iQbD6ijV0
マウスのボタン押下⇒キーボードの無変換押下と2度押し動作効きます
マウスの二度押しだけが認識されないようですね
スクリプトに何か問題あるでしょうか
マウスの二度押しだけが認識されないようですね
スクリプトに何か問題あるでしょうか
2023/03/13(月) 08:13:23.71ID:k3yB0gZ70
stdin/outが使えないのがたまに不便だな
シェルスクリプト的に使えるexeも欲しい
シェルスクリプト的に使えるexeも欲しい
2023/03/13(月) 11:09:57.19ID:46CMp74p0
>>61
マウスに割り当ててる方の無変換が、ボタンを押しっぱなしにしててもすぐに離されてるとか
マウスに割り当ててる方の無変換が、ボタンを押しっぱなしにしててもすぐに離されてるとか
2023/03/13(月) 22:02:47.95ID:ugPvzASQ0
アクティブでないサブウィンドウを直接閉じる方法はあるでしょうか?
例えば秀丸エディタの検索ウィンドウを消去したい時、秀丸がアクティブなら
winclose, ahk_class #32770
だけで消せるのですが秀丸がアクティブでないなら一度秀丸をアクティブにしてから
winclose, ahk_class #32770
を実行しないと検索ウィンドウが消えません。
これを秀丸がアクティブでない状態で消す方法はないでしょうか?
例えば秀丸エディタの検索ウィンドウを消去したい時、秀丸がアクティブなら
winclose, ahk_class #32770
だけで消せるのですが秀丸がアクティブでないなら一度秀丸をアクティブにしてから
winclose, ahk_class #32770
を実行しないと検索ウィンドウが消えません。
これを秀丸がアクティブでない状態で消す方法はないでしょうか?
2023/03/15(水) 07:27:39.83ID:zT06UOBQ0
>>64
WinCloseもWinKillもアクティブなウィンドウか、一番前面のウィンドウが対象みたいなので
非アクティブウィンドウにキーを送ってみたらどうでしょう
^+F12::
DetectHiddenWindows, On ;ウィンドウ探索時に非表示になっているウィンドウを検出対象にする
ControlSend, , {Esc}, ahk_class #32770 ahk_exe Hidemaru.exe ;Escで秀丸の検索ウィンドウは消える
Return
WinCloseもWinKillもアクティブなウィンドウか、一番前面のウィンドウが対象みたいなので
非アクティブウィンドウにキーを送ってみたらどうでしょう
^+F12::
DetectHiddenWindows, On ;ウィンドウ探索時に非表示になっているウィンドウを検出対象にする
ControlSend, , {Esc}, ahk_class #32770 ahk_exe Hidemaru.exe ;Escで秀丸の検索ウィンドウは消える
Return
2023/03/15(水) 16:18:33.18ID:NvftbLsi0
#32770はダイアログ全般のクラス名だから他のソフトのものに誤爆してるんじゃないかな
WinClose, ahk_class #32770 [秀丸エディタプロセス名での指定]
でいけない?
とりあえずサクラエディタでは以下で出来た
WinClose, ahk_class #32770 ahk_exe sakura.exe
WinClose, ahk_class #32770 [秀丸エディタプロセス名での指定]
でいけない?
とりあえずサクラエディタでは以下で出来た
WinClose, ahk_class #32770 ahk_exe sakura.exe
6764
2023/03/15(水) 17:42:05.68ID:QezACQN302023/03/15(水) 19:39:45.78ID:EQI1O5H/0
>>62
FileOpen()で標準ストリーム開けるがそういう話でなく?
FileOpen()で標準ストリーム開けるがそういう話でなく?
2023/03/20(月) 15:15:54.17ID:oGUj5hdD0
ついに消えてしまった。。
https://sites.google.com/site/autohotkeyjp/
https://sites.google.com/site/autohotkeyjp/
2023/03/20(月) 15:49:51.72ID:bV1DpxeR0
>>69
Internet Archive で見られるし AutoHotkey Wiki あるし、そもそも AutoHotkey.chm がある
そのサイトが無くなると困るような独自の情報でもあるんか?
Internet Archive で見られるし AutoHotkey Wiki あるし、そもそも AutoHotkey.chm がある
そのサイトが無くなると困るような独自の情報でもあるんか?
2023/03/20(月) 15:53:43.16ID:bV1DpxeR0
あーただの報告だったのか…
個人的にはいつも AutoHotkey Wiki 使ってるからそこ無くなっても特に困ることはないな
個人的にはいつも AutoHotkey Wiki 使ってるからそこ無くなっても特に困ることはないな
2023/03/20(月) 16:08:10.80ID:QZz0TH140
お前が困らなくても個人的にはいつもautohotkey.jp使ってた人間は困るだろ
なんでこう上から目線の言わなくていいことをいちいち言うのかねえ…
なんでこう上から目線の言わなくていいことをいちいち言うのかねえ…
2023/03/20(月) 17:03:43.58ID:4AXSz/VF0
2023/03/20(月) 18:40:03.57ID:FujOoXlw0
wikiがスクリプト仕様とかコマンドの説明とかほぼ一緒(というか丸移植だと思う)で更新が長く続いてた分上位互換だった気がするけど
なんかjpの独自色あったっけ
なんかjpの独自色あったっけ
2023/03/20(月) 19:32:46.08ID:rsciAXcp0
そんなことより公式がcloudflareの認証させられるようになってうざい
2023/03/20(月) 21:27:56.47ID:xHD0/Xk+0
認証は別にいいんだけど、getでやるのが嫌だわ
2023/03/21(火) 00:43:18.00ID:5+/nNgbn0
2023/03/21(火) 01:13:28.05ID:FQhNi63k0
2023/03/21(火) 01:21:25.29ID:5+/nNgbn0
2023/03/21(火) 02:14:33.72ID:/Hc7Cqwn0
しょうもな
2023/03/21(火) 20:36:33.82ID:zcT6irHi0
aを押しながらbを押した時のラベルを作りたいのですが
Shift,Alt,Ctrlなどの修飾キー以外で指定する場合どうすればよいでしょうか?
Shift,Alt,Ctrlなどの修飾キー以外で指定する場合どうすればよいでしょうか?
2023/03/21(火) 20:42:02.42ID:37F9JcRS0
公式なり日本語wikiなりのホットキーセクションを読んでくださいよ
2023/03/21(火) 20:47:26.92ID:zcT6irHi0
84名無しさん@お腹いっぱい。
2023/03/25(土) 20:21:01.04ID:iMfRZkAd0 教えてください。
shift単押しでenterとなるようにしたいのですがどのようにコードを書けば良いのでしょうか?
shift単押しでenterとなるようにしたいのですがどのようにコードを書けば良いのでしょうか?
2023/03/26(日) 00:44:38.48ID:Ik2oaVkT0
>>84
ChgKey.exeで設定した方がいい
ChgKey.exeで設定した方がいい
2023/03/26(日) 01:55:32.95ID:NDL62s0r0
正しく機能したところで誤爆が恐ろしいことになるわ
2023/03/26(日) 09:21:45.12ID:0eKdsB6l0
オレは左手で操作しやすいように「無変換」をenterに、「半角/全角」をbackspaceに代えてるよ…なのでIMEオンは「変換」でオフは「カタカナ/ひらがな」という変態構成だけど
誤爆に関しては影響がほぼ無いキーに割り当ててるから無問題
誤爆に関しては影響がほぼ無いキーに割り当ててるから無問題
2023/03/26(日) 11:12:13.57ID:BJKwEJiq0
>>86
それが良いと言ってる人に誤爆とかなくない?
それが良いと言ってる人に誤爆とかなくない?
2023/03/26(日) 15:38:38.80ID:qBPReUzL0
2023/03/27(月) 08:55:26.10ID:YRZJoVwd0
俺は右shiftをバックスペースにしてる
かなり使いやすいよ
AHKじゃなくてsharpkeysだからスレチだが
かなり使いやすいよ
AHKじゃなくてsharpkeysだからスレチだが
2023/03/27(月) 11:36:25.75ID:hnEBD7aq0
>>90
確かに、自分も右shiftや矢印キーほとんどつかってなかったからいっぺん割り当ててみようかな
確かに、自分も右shiftや矢印キーほとんどつかってなかったからいっぺん割り当ててみようかな
2023/03/27(月) 12:13:00.11ID:Ftk2hjGQ0
右シフトとバックスペースの位置ってほとんど変わらないけど意味ある?
右側にしかないキーを左に持ってくるんなら分かるけども
右側にしかないキーを左に持ってくるんなら分かるけども
2023/03/27(月) 12:56:26.55ID:Ws7C1MTd0
!?
2023/03/27(月) 14:13:00.68ID:TFnpXbPf0
意味があるかないかは本人が決めることやなあ
他人になくても本人に意味があればそれは意味があるってことになるわなあ
人生もそんなもんちゃう?
他人になくても本人に意味があればそれは意味があるってことになるわなあ
人生もそんなもんちゃう?
2023/03/27(月) 15:04:31.40ID:fUu+sidj0
右手をホームポジションに置いて、小指でBSを押そうとすると右手を思いっきり開きますが、小指で右シフトを押そうとすると右手をわずかに時計回転させるだけですね。よって、右シフトにBSを割り振るのもありだと思います。
2023/03/27(月) 15:07:43.91ID:qBHkYj2L0
>>95
普通のキー配列だとenterを挟んで上がBS、下がShiftだから右手を開くことになるのは同じでは
普通のキー配列だとenterを挟んで上がBS、下がShiftだから右手を開くことになるのは同じでは
2023/04/08(土) 17:19:05.18ID:aTLZLycI0
ホットストリングなんですが、IME ONだとなぜか一つ前の文字が消えてしまいます。なぜなんでしょうか?IME OFFだと問題いです。
#if (IME_GET() = 1)
:*?:/kakko::「」
#if
#if (IME_GET() = 1)
:*?:/kakko::「」
#if
2023/04/08(土) 17:47:33.15ID:2fC324fB0
wikiに書いてある
2023/04/11(火) 12:10:24.07ID:NzPuVBBw0
2023/04/12(水) 12:04:08.46ID:lS0p+MWJ0
ホームポジション、キーはほぼ中央だけど、手の平全体は下だからSHIFTの方が近そう。
BS、ひらがな(カタカナ)キーにしても良いかも。
BS、ひらがな(カタカナ)キーにしても良いかも。
2023/04/13(木) 16:18:51.31ID:4t8tBr5i0
2023/04/15(土) 16:50:40.73ID:YKWVA/r20
流行りのAIに色々聞いてみたけど
知らない関数だ・・・とか知らない戻り値だ・・・みたいな答えがかなり返ってくるからあんまり役には立たないな
知らない関数だ・・・とか知らない戻り値だ・・・みたいな答えがかなり返ってくるからあんまり役には立たないな
2023/04/16(日) 00:02:26.24ID:RDWO+jse0
そうだね
AHKはあんまり役に立たない
残念
AHKはあんまり役に立たない
残念
2023/04/16(日) 04:28:49.69ID:XglWpEn70
ちゃんとv1だのv2だのバージョン指定しないとダメ
105名無しさん@お腹いっぱい。
2023/04/17(月) 10:20:17.56ID:0ZruvkIP0 ERRORLEVEL := "test"
RegExMatch(ERRORLEVEL, ".+", $)
MsgBox, %$%
これなんで?
RegExMatch(ERRORLEVEL, ".+", $)
MsgBox, %$%
これなんで?
2023/04/17(月) 13:52:30.80ID:uJQi1Dl+0
>>105
ErrorLevel - Definition & Usage | AutoHotkey
https://www.autohotkey.com/docs/v1/misc/ErrorLevel.htm
ErrorLevel - Definition & Usage | AutoHotkey
https://www.autohotkey.com/docs/v1/misc/ErrorLevel.htm
2023/04/17(月) 20:53:41.78ID:0ZruvkIP0
for i, needle in ["t","e","s","^.",".$","es","st"] {
if RegExMatch(ERRORLEVEL := "test", needle, $)
a .= needle " / " $ "`n"
}
MsgBox, %a%
さっぱりわからん
if RegExMatch(ERRORLEVEL := "test", needle, $)
a .= needle " / " $ "`n"
}
MsgBox, %a%
さっぱりわからん
2023/04/17(月) 21:03:17.18ID:uJQi1Dl+0
何がやりたいのか、何がわからんのか、さっぱりわからん。
ErrLvl := "test"
RegExMatch(ErrLvl, ".+", $)
MsgBox % $
ErrLvl := "test"
RegExMatch(ErrLvl, ".+", $)
MsgBox % $
2023/04/17(月) 21:26:34.87ID:HYhfDeyl0
数値型の組込み変数でしょ
2023/04/17(月) 21:52:28.22ID:HYhfDeyl0
あぁ、他の型の場合もあるのか
2023/04/17(月) 22:36:10.92ID:HYhfDeyl0
検索対象の変数(ERRORLEVEL)からマッチ位置を憶え、各位置からOutputVar側にコピーするより前に、ERRORLEVEL内容を書き換えてそう
ERRORLEVELは0になるので
t e s t \0
0 \0 s t \0
ERRORLEVELは0になるので
t e s t \0
0 \0 s t \0
2023/04/17(月) 22:41:56.04ID:bN+BDAgh0
ID:0ZruvkIP0
は、期待している値と実現したい内容を明確に書かないとダメよ
コードだけで分からないって言われても、こっちが分からんわって
なるのが普通でしょ
は、期待している値と実現したい内容を明確に書かないとダメよ
コードだけで分からないって言われても、こっちが分からんわって
なるのが普通でしょ
2023/04/20(木) 03:00:06.30ID:w8okL8J50
code1.ahk
code2.ahk
code3.ahk
...
というファイルがありどれも関数foo()を定義している
そのファイルを順番に動的にロードして関数foo()を呼び出して廃棄
exec() {
ret := []
for k,v in ["1", "2", "3"]
{
#include "code%v%.ahk"
ret.push(foo())
#uninclude "code%v%.ahk"
}
return ret
}
すべて同一プロセスで行う
ということがやりたいんだけど↑のようなコードって実現できる?
code2.ahk
code3.ahk
...
というファイルがありどれも関数foo()を定義している
そのファイルを順番に動的にロードして関数foo()を呼び出して廃棄
exec() {
ret := []
for k,v in ["1", "2", "3"]
{
#include "code%v%.ahk"
ret.push(foo())
#uninclude "code%v%.ahk"
}
return ret
}
すべて同一プロセスで行う
ということがやりたいんだけど↑のようなコードって実現できる?
2023/04/20(木) 14:21:46.80ID:cFx/MHGt0
v1/2を問わず#ディレクティブって条件付き実行ってできないから、
そういう使い方は無理なんじゃないかな?
そういう使い方は無理なんじゃないかな?
2023/04/20(木) 14:48:24.82ID:en+46tKw0
そもそも#unincludeってコマンドある?
2023/04/20(木) 14:57:12.72ID:cFx/MHGt0
それもない。
もしかしたらライブラリを作ればなんとかなるかも知れんけど調べてない。
もしかしたらライブラリを作ればなんとかなるかも知れんけど調べてない。
2023/04/20(木) 16:45:19.42ID:k3CogS+T0
動的includeあれば便利そうだよね常駐から使用頻度低い記述を削減したい
2023/04/20(木) 17:01:52.20ID:CZ21fJcG0
2023/04/23(日) 08:41:54.84ID:qhrW4uB00
SRWare Iron portable上で動作しません。何故でしょうか。
chromeやエクスプローラーなどではちゃんと動作しますが、Iron上では無効化されるんです
chromeやエクスプローラーなどではちゃんと動作しますが、Iron上では無効化されるんです
2023/04/23(日) 10:11:13.49ID:bEEY46BE0
V1/2 なのかどんなスクリプトなんか知らんが、V2 の Window Spy で見てみ。
そのスクリプトが SRWare Iron のクラス名とかに対応してないんちゃうか?
そのスクリプトが SRWare Iron のクラス名とかに対応してないんちゃうか?
2023/04/23(日) 14:14:38.45ID:4t6f0QdC0
2023/04/26(水) 10:09:00.82ID:Iah7Z2jh
テレビチューナーアプリのPIXELA StationTVXとXitでAutoHotkeyが動作しないのですが対策方法分かる方いましたら教えてください
2023/04/26(水) 13:28:56.16ID:wRF6CHBz0
エスパー募集中!
124名無しさん@お腹いっぱい。
2023/04/26(水) 14:45:58.26ID:fzHyTn/Y0 超初心者の超初歩的な質問です。
V2での次のスクリプトと同じ動作をするV1のスクリプトは
どのように書けば良いのでしょう。
x := 1
y := 2
var := x+y
MsgBox " x+y = " x+y
MsgBox "The value of Var is " . Var . "."
MsgBox("The sum of X and Y is " . (X + Y))
V2での次のスクリプトと同じ動作をするV1のスクリプトは
どのように書けば良いのでしょう。
x := 1
y := 2
var := x+y
MsgBox " x+y = " x+y
MsgBox "The value of Var is " . Var . "."
MsgBox("The sum of X and Y is " . (X + Y))
2023/04/26(水) 15:08:10.77ID:rPAoeGO10
>>124
MsgBoxの後に、スペース パーセント スペース
MsgBoxの後に、スペース パーセント スペース
126名無しさん@お腹いっぱい。
2023/04/26(水) 15:48:57.03ID:fzHyTn/Y0 MsgBox % x+y とすると 3が表示されますが、
x+y =3と表示したいのです。
MsgBox x+y = % x+y ではエラーになります。
x+y =3と表示したいのです。
MsgBox x+y = % x+y ではエラーになります。
2023/04/26(水) 15:58:46.75ID:lV75YWmm0
2023/04/26(水) 16:11:36.17ID:rPAoeGO10
>>126
MsgBox % " x+y = " x+y
MsgBox % "The value of Var is " . Var . "."
MsgBox % ("The sum of X and Y is " . (X + Y))
MsgBox % " x+y = " x+y
MsgBox % "The value of Var is " . Var . "."
MsgBox % ("The sum of X and Y is " . (X + Y))
2023/04/26(水) 16:15:01.23ID:XJXsub2s0
130名無しさん@お腹いっぱい。
2023/04/26(水) 16:18:25.84ID:fzHyTn/Y02023/04/27(木) 12:43:37.37ID:iW74hXYP0
AHKスクリプトで作ったGUIウィンドウでウィンドウタイトルが固定でないものを
IfWinExistなどでマッチングさせるにはどうしたらいいでしょうか?
○○.ahkのGUIウィンドウというような感じで指定できる方法などありますか?
IfWinExistなどでマッチングさせるにはどうしたらいいでしょうか?
○○.ahkのGUIウィンドウというような感じで指定できる方法などありますか?
2023/04/27(木) 13:55:50.13ID:FUOB1sNF0
>>131
ahk_pid ◯◯.ahkのPID ahk_class AutoHotkeyGUI
ahk_pid ◯◯.ahkのPID ahk_class AutoHotkeyGUI
2023/04/27(木) 15:02:02.79ID:iW74hXYP0
>>132
手動で(自分がそのウィンドウだとわかっていて)
そのウィンドウを直接指定してPIDを調べるというのはできるのですけど
自動でスクリプト名などから割り出してウィンドウを指定したいのですが方法がわかりません
手動で(自分がそのウィンドウだとわかっていて)
そのウィンドウを直接指定してPIDを調べるというのはできるのですけど
自動でスクリプト名などから割り出してウィンドウを指定したいのですが方法がわかりません
134133
2023/04/27(木) 15:10:23.70ID:iW74hXYP0 説明が下手なので変な文章になってしまったかもしれませんが
タイトル指定の代替として都度手動で調べたりすることなく追従させたいという事です
タイトル指定の代替として都度手動で調べたりすることなく追従させたいという事です
2023/04/27(木) 15:22:11.05ID:FUOB1sNF0
>>133
スクリプトはGUI作らなくても必ず非表示のメインウィンドウを持ってる(ListLinesとかで出てくるあれ)
そいつのウィンドウタイトルは
(スクリプトのフルパス) - AutoHotkey v(バージョン)
だから前方一致で探してPID取得できる
スクリプトはGUI作らなくても必ず非表示のメインウィンドウを持ってる(ListLinesとかで出てくるあれ)
そいつのウィンドウタイトルは
(スクリプトのフルパス) - AutoHotkey v(バージョン)
だから前方一致で探してPID取得できる
2023/05/06(土) 05:45:07.97ID:vtzHjqHw0
久々に使ったけど無変換キーはvkF0sc03Aじゃなくてvkf0にしないとだめなのか
wiki通りにずっとやってたらできなかったわ
wiki通りにずっとやってたらできなかったわ
2023/05/06(土) 06:26:40.46ID:Sr2OwPe+0
その仮想キーとスキャンコードの両方書くスタイル自体が廃止になった
2023/05/06(土) 11:38:37.83ID:gSC4mMc/0
無変換sc07B
変換sc079
変換sc079
2023/05/06(土) 21:56:02.28ID:vtzHjqHw0
ようするにそこらへんのキーは
vkF0かsc03Aみたいにどっちか書けばいいのか
vkF0かsc03Aみたいにどっちか書けばいいのか
2023/05/07(日) 10:45:28.45ID:ZT8Dl3jT0
Scan CodeとVirtual Key Codeを使い分けられる
例えばJISキーボードをUS配列で使うためにUS104ドライバ動作させると
5つのキーは無効になるけど、AutoHotKeyでドライバの代わりにSC→VK変換させれば使えるようになる
SC07B::VK1D ; VK_NONCONVERT 無変換
SC079::VK1C ; VK_CONVERT 変換
SC070::VKF2 ; VK_OEM_COPY かな
SC073::VKE2 ; VK_OEM_102 \
SC07D::VKDC ; VK_OEM_5 ¥
例えばJISキーボードをUS配列で使うためにUS104ドライバ動作させると
5つのキーは無効になるけど、AutoHotKeyでドライバの代わりにSC→VK変換させれば使えるようになる
SC07B::VK1D ; VK_NONCONVERT 無変換
SC079::VK1C ; VK_CONVERT 変換
SC070::VKF2 ; VK_OEM_COPY かな
SC073::VKE2 ; VK_OEM_102 \
SC07D::VKDC ; VK_OEM_5 ¥
2023/05/07(日) 11:13:42.00ID:6T9qFBCS0
>>140
未検証だけとこれマジならすごいありがたい情報
未検証だけとこれマジならすごいありがたい情報
2023/05/13(土) 05:16:17.49ID:wIr4Hu5e0
#if 直下にこれ仕込んどくと便利
EditMe() {
e := Exception(0, -1)
run % Format("myeditor.exe -line {1} -file ""{2}""", e.Line, e.File)
}
#if WinActive("ahk_exe notepad.exe")
+!Q::EditMe()
EditMe() {
e := Exception(0, -1)
run % Format("myeditor.exe -line {1} -file ""{2}""", e.Line, e.File)
}
#if WinActive("ahk_exe notepad.exe")
+!Q::EditMe()
2023/05/14(日) 19:41:47.39ID:SpZWqZhg0
ChatGPTもBardもAHK v2の質問にはろくに答えてくれなくてつれぇ
ChatGPTは2021年までの情報しかないからしゃーないが・・
ChatGPTは2021年までの情報しかないからしゃーないが・・
2023/05/14(日) 20:23:51.28ID:wLis/bTc0
公式サイトの V1→V2の変更点とか、各ページでV1↔V2で切り替えて
見られるから、それで何とかならんか?
V2でなくなったものなんかも、こんな風に実装しなはれ的なコード例が
大抵あるし。
見られるから、それで何とかならんか?
V2でなくなったものなんかも、こんな風に実装しなはれ的なコード例が
大抵あるし。
2023/05/14(日) 20:56:38.42ID:vdcP1ne90
V2にすると速くなるって本当ですか?
2023/05/15(月) 09:48:50.28ID:0ANZuee90
v2はwindow spyで取得できなくなって操作も受け付けなくなったものがあるから移行したくても出来ないんだよな
そのためにv1v2混在させるならv1のままでいいかってなっちゃう
そのためにv1v2混在させるならv1のままでいいかってなっちゃう
2023/05/16(火) 11:54:56.58ID:di1TSdIO0
ここ読めば1でもパフォーマンスは上がる余地はある
https://www.autohotkey.com/docs/v1/misc/Performance.htm
そもそもAHKで遅いような処理書くなら
外部スクリプトに投げるのが手っ取り早い
https://www.autohotkey.com/docs/v1/misc/Performance.htm
そもそもAHKで遅いような処理書くなら
外部スクリプトに投げるのが手っ取り早い
2023/05/16(火) 13:24:36.49ID:fxYBD07v0
プログラムど素人がやっとAHKに慣れてきたというのに
2を使いたいなら一から勉強し直さないといけないのかorz
2を使いたいなら一から勉強し直さないといけないのかorz
2023/05/16(火) 14:45:31.10ID:bfOlPNzX0
対して変わらんって。
他言語習得者ならV2の方が自然かけるし、大概の場合V1っぽく書けるし。
他言語習得者ならV2の方が自然かけるし、大概の場合V1っぽく書けるし。
2023/05/16(火) 16:23:01.03ID:z+AiwZyr0
v1しか対応してないライブラリが残ってて困ってる
2023/05/16(火) 18:41:24.82ID:bfOlPNzX0
あ〜ある程度の規模のものになると自前で書き換えもしんどいか。
2023/05/16(火) 21:32:24.91ID:fxYBD07v0
そうですしんどいですorz
でもWindowsを使う数少ない理由がAHKなのでしがみつくしかない
でもWindowsを使う数少ない理由がAHKなのでしがみつくしかない
154名無しさん@お腹いっぱい。
2023/05/17(水) 19:26:37.34ID:YbDlyAZ20 V2童貞なんだけどIME.ahkはV2で使えるの?
2023/05/18(木) 02:16:37.64ID:aVqMgVDQ0
中身が変わる文字列の4行目だけをまるまる削除したいのですがスマートにやるにはどうすればいいのでしょうか?
2023/05/18(木) 03:32:56.53ID:m4Xwoaak0
V2の情報が公式頼りだから時間だけ消費して折れる
ブログはほぼV1だからV2ではまるで使えない
V2にすると苦労するがV2で使い人は多いだろうな
ブログはほぼV1だからV2ではまるで使えない
V2にすると苦労するがV2で使い人は多いだろうな
2023/05/18(木) 04:00:09.93ID:ICsWNhV10
>>155
正規表現で置換
正規表現で置換
2023/05/18(木) 15:39:18.20ID:aVqMgVDQ0
2023/05/18(木) 22:43:10.56ID:58DYFPVC0
UWSCからAHKかautoit に乗り換えようと迷ってたけど困ったな
AHKのいいとこは日本語の文献が多いことだったのに
AHKのいいとこは日本語の文献が多いことだったのに
2023/05/19(金) 06:27:08.82ID:SM+6djjW0
>>153
Linux版AHKはアカンの?
Linux版AHKはアカンの?
2023/05/19(金) 11:10:07.99ID:EbTobve50
2023/05/19(金) 16:23:44.36ID:cqae+3LS0
ピソンてguiが難しいんだよね…
2023/05/23(火) 01:51:38.80ID:qHWX0/Vx0
半角全角の切り替えだけならvk19でリマップすればIME.ahkいらんよね
2023/05/23(火) 12:27:21.13ID:JtLhu4ps0
2023/05/23(火) 13:44:01.48ID:2Vhse2QX0
IME.ahkなんか難しいことなんにもやってないのに
自分で読んでみたこともないのか
自分で読んでみたこともないのか
166名無しさん@お腹いっぱい。
2023/05/24(水) 01:43:35.25ID:acjDN++40 >>163
なるべくどんな状況でも確実にOFFするために使ってるよ
なるべくどんな状況でも確実にOFFするために使ってるよ
2023/05/26(金) 00:11:57.64ID:c1g7n9Bd0
タイマーについて質問すみません
起動すると音だけ鳴って30分経つと終了のmsgboxがポップアップする
下のようなシンプルすぎるタイマーを作りました
たまに残り時間を知りたいことが出てきたので
何かキーを押してる間だけツールチップで今何分経過したかを表示させたいのですが
どんな式を追加したらいいでしょうか?
settimerで60000ms毎に変数に+1して・・・などおぼろげに想像するも
あまりに素人すぎて全く形にすることが出来ませんでした
SoundPlay, *-1
sleep, 1800000
SoundPlay, *16
msgbox, 30min
return
起動すると音だけ鳴って30分経つと終了のmsgboxがポップアップする
下のようなシンプルすぎるタイマーを作りました
たまに残り時間を知りたいことが出てきたので
何かキーを押してる間だけツールチップで今何分経過したかを表示させたいのですが
どんな式を追加したらいいでしょうか?
settimerで60000ms毎に変数に+1して・・・などおぼろげに想像するも
あまりに素人すぎて全く形にすることが出来ませんでした
SoundPlay, *-1
sleep, 1800000
SoundPlay, *16
msgbox, 30min
return
2023/05/26(金) 08:43:38.40ID:uk7fS3gc0
2023/05/26(金) 09:07:22.68ID:Wq8Okrmz0
cnt := 0
SetTimer, countup, 1000
SoundPlay, *-1
sleep, 1800000
SetTimer, countup, Off
SoundPlay, *16
msgbox, 30min
return
countup() {
global cnt
cnt++
}
F1::
ToolTip % cnt // 60 " min " Mod(cnt, 60) " sec"
sleep 100
; KeyWait "F1"
return
F1 up:: ToolTip
SetTimer, countup, 1000
SoundPlay, *-1
sleep, 1800000
SetTimer, countup, Off
SoundPlay, *16
msgbox, 30min
return
countup() {
global cnt
cnt++
}
F1::
ToolTip % cnt // 60 " min " Mod(cnt, 60) " sec"
sleep 100
; KeyWait "F1"
return
F1 up:: ToolTip
2023/05/26(金) 12:03:02.96ID:c1g7n9Bd0
>>168
ポモドーロタイマーというのがあるんですね、初めて知りました
今回はカウントダウン機能が欲しかったので少し異なるものでしたが
かなり便利そうだったので公開されてたahkを幾つか保存しておきました
どうもありがとうございます
>>169
正にこれを作ろうとしてました、完璧です
コピペしただけでは全く身にならないのでコードの内容を全部理解出来てから
お礼を書こうと思ったのですが、コアであろうcountup() { 略 }が何してるのか
wiki見ながらググってもよく判りませんでした
なので先に返信させて頂いてこれからじっくり、ahk 初めて、で出てくるサイトで
勉強することにしますね、素晴らしい物をありがとうございました!
ポモドーロタイマーというのがあるんですね、初めて知りました
今回はカウントダウン機能が欲しかったので少し異なるものでしたが
かなり便利そうだったので公開されてたahkを幾つか保存しておきました
どうもありがとうございます
>>169
正にこれを作ろうとしてました、完璧です
コピペしただけでは全く身にならないのでコードの内容を全部理解出来てから
お礼を書こうと思ったのですが、コアであろうcountup() { 略 }が何してるのか
wiki見ながらググってもよく判りませんでした
なので先に返信させて頂いてこれからじっくり、ahk 初めて、で出てくるサイトで
勉強することにしますね、素晴らしい物をありがとうございました!
2023/06/05(月) 19:49:57.34ID:s6jaA7//0
一つ情報提供を・・・
最近ChromeやEdgeやFirefoxでAutoHotkeyが効かなくなってお困りの方へ
ウイルス対策ソフトに「ESET」を使っておりませんか?
ESETをバージョンアップしたことにより、一部のブラウザでAutoHotkeyが効かなくなることがあるようです。
私は↓の方法で直りました!
ttps://www.jh4vaj.com/archives/37143
最近ChromeやEdgeやFirefoxでAutoHotkeyが効かなくなってお困りの方へ
ウイルス対策ソフトに「ESET」を使っておりませんか?
ESETをバージョンアップしたことにより、一部のブラウザでAutoHotkeyが効かなくなることがあるようです。
私は↓の方法で直りました!
ttps://www.jh4vaj.com/archives/37143
2023/06/06(火) 21:32:03.79ID:9bAtqEXG0
未初期化変数のデフォルト値って変えられないの?
"3joi3@reqwirjowej@"
とかにしてtypoしたときに分かりやすくしたい
"3joi3@reqwirjowej@"
とかにしてtypoしたときに分かりやすくしたい
2023/06/06(火) 22:06:32.47ID:Xmyfp1Hs0
>>172
変える意味がないから変えられない
変える意味がないから変えられない
2023/06/06(火) 22:24:01.41ID:EOs7ePVH0
ちゅうかそもそもの話で AutoHotkey に無関係やろそれ。
アンタのコーディング・プログラミングスタイルの問題。
アンタのコーディング・プログラミングスタイルの問題。
2023/06/10(土) 17:50:53.71ID:WuavGT3n0
v2ならエラー吐くから嫌でも分かるな
176名無しさん@お腹いっぱい。
2023/06/10(土) 21:51:33.98ID:ZTh/5Uee0 Shift +「2」(sc003)キーで@を出すスクリプト
+sc003::@
こう書くと「@」じゃなく「`」(Shift + @のバッククォート)になっちゃうんですが、どうすれば良いですか?
+sc003::@
こう書くと「@」じゃなく「`」(Shift + @のバッククォート)になっちゃうんですが、どうすれば良いですか?
2023/06/10(土) 22:23:49.54ID:0vreqA470
普通に
+2::@
でイケるんちゃうか?
ていうか日本語キーボードをUS-ASCII配列にしたいとか?
それなら AutoHotkey で弄るより、キーマップ変更の常駐物なり
レジストリ弄りの方がエエと思うけど。
+2::@
でイケるんちゃうか?
ていうか日本語キーボードをUS-ASCII配列にしたいとか?
それなら AutoHotkey で弄るより、キーマップ変更の常駐物なり
レジストリ弄りの方がエエと思うけど。
178名無しさん@お腹いっぱい。
2023/06/11(日) 00:29:31.46ID:DBOvZWu20 >>177
V1で、+2::@も同じ結果でしたが、普通の結果じゃないみたいなので、念の為V2でも試したら成功しました
ありがとうございます
ですが今度は「{」の入力スクリプト
+sc01A::{
が
V1は正常にできてV2だとエラー
-----
Error: Missing "}"
▶︎ 001: {
The program will exit.
------
になってしまいます
表記を"{"や/{/にしても駄目でした
{ はV2ではどんな表記ならできますか?
お察しの通り、目的はJISキーでのUS配列の再現です
AutoHotkeyの勉強兼ねてやってます
このままやり方分からなかったら諦めて別の方法でやってみるつもりです
V1で、+2::@も同じ結果でしたが、普通の結果じゃないみたいなので、念の為V2でも試したら成功しました
ありがとうございます
ですが今度は「{」の入力スクリプト
+sc01A::{
が
V1は正常にできてV2だとエラー
-----
Error: Missing "}"
▶︎ 001: {
The program will exit.
------
になってしまいます
表記を"{"や/{/にしても駄目でした
{ はV2ではどんな表記ならできますか?
お察しの通り、目的はJISキーでのUS配列の再現です
AutoHotkeyの勉強兼ねてやってます
このままやり方分からなかったら諦めて別の方法でやってみるつもりです
2023/06/11(日) 04:27:24.68ID:QJYFa2Xb0
+SC003::VKC0 でイケない?
2023/06/11(日) 06:44:59.43ID:ysLsrQv50
>>176
Send, @
Send, @
2023/06/11(日) 07:32:58.53ID:EJYtQWxJ0
+SC003::SendText "{"
+SC003::Send "{Raw}{"
+SC003::Send "{Raw}{"
2023/06/11(日) 07:36:32.72ID:Ba/t18ei0
>>172
#WarnのUseUnsetLocalとUseUnsetGlobalとか
#WarnのUseUnsetLocalとUseUnsetGlobalとか
2023/06/11(日) 08:18:34.78ID:RVNeeTUS0
184名無しさん@お腹いっぱい。
2023/06/11(日) 15:01:45.49ID:DBOvZWu20185名無しさん@お腹いっぱい。
2023/06/17(土) 09:58:41.78ID:H5Hx9I3p0 バックスラッシュのキー(sc073)をShiftにして
2のキー(sc003)をShiftと一緒に押して@が出るようにしたいんですが
sc073::Shift
+sc003::SendText "@"
このスクリプトだとsc073とsc003一緒に押すと@じゃなく"が出ます
sc073ではなく元からのShiftキーを使うと正しく@が出ます
どうすればいいですか?
2のキー(sc003)をShiftと一緒に押して@が出るようにしたいんですが
sc073::Shift
+sc003::SendText "@"
このスクリプトだとsc073とsc003一緒に押すと@じゃなく"が出ます
sc073ではなく元からのShiftキーを使うと正しく@が出ます
どうすればいいですか?
2023/06/17(土) 13:42:45.41ID:L5n38dfU0
Shift置換せずに、
SC073 & SC003::@
でいいんじゃ?
SC073 & SC003::@
でいいんじゃ?
187名無しさん@お腹いっぱい。
2023/06/17(土) 14:59:15.42ID:H5Hx9I3p02023/06/20(火) 04:34:37.23ID:sT1WC8H30
Version 2.0.3
バグ修正いろいろ
バグ修正いろいろ
2023/06/28(水) 17:15:24.25ID:vl8/4m5J0
無変換でIME offに設定したのに無視される場合
sc07B::send {sc07B}
のように同じキーコードを送るとちゃんと動作する
(何故かSuppressedにされてしまう)
sc07B::send {sc07B}
のように同じキーコードを送るとちゃんと動作する
(何故かSuppressedにされてしまう)
2023/06/28(水) 19:06:23.10ID:9d24A2oK0
>無変換でIME off
ahkでやらずIME側で割り当てろよ
ahkでやらずIME側で割り当てろよ
2023/06/28(水) 19:22:12.41ID:vl8/4m5J0
Suppressedだから無理
2023/06/29(木) 13:49:31.57ID:HvNLPeRK0
いつになったらキーボードの入力はキーコード直接送信するようになるのかな
文字はUnicodeで一意に決まるし、装飾キーも今後増えることはないからコード割当てきるだろうに
ドライバでキーの位置を決めるなんて無くなって欲しい
文字はUnicodeで一意に決まるし、装飾キーも今後増えることはないからコード割当てきるだろうに
ドライバでキーの位置を決めるなんて無くなって欲しい
2023/06/29(木) 14:08:57.88ID:P65O2+vE0
タスクバーの1番目に例えばエクスプローラーとかピン止めしておいて、
win-1を押すとタスクバーをクリックしたのと同様にアクセスできる
エクスプローラーが複数起動していた場合は、win-1を1回押すと1番目で2回押すと2番目が選択できる
ahkで何かのキーを ::#1 みたいに定義すると、起動しているのが1つなら同様に動作するけど、
複数起動していると画面がおかしくなる
多分タイミングの問題なので、ゆっくり送信すればうまくいく筈だと思うけど、
#1 をゆっくり送信する方法が判らない
win-1を押すとタスクバーをクリックしたのと同様にアクセスできる
エクスプローラーが複数起動していた場合は、win-1を1回押すと1番目で2回押すと2番目が選択できる
ahkで何かのキーを ::#1 みたいに定義すると、起動しているのが1つなら同様に動作するけど、
複数起動していると画面がおかしくなる
多分タイミングの問題なので、ゆっくり送信すればうまくいく筈だと思うけど、
#1 をゆっくり送信する方法が判らない
2023/06/29(木) 14:45:32.45ID:P65O2+vE0
例えば、以下のようにして、無変換(sc07B)+qでwin-1を発生させようとしても、
1回目を押して正しくアイコンが表示されるところまでは行けても、
無変換+qでKeyWaitしている最中に、再度無変換+qの処理を開始できない
(他のキーなら受け付けるし、入れ子は正しく処理される)
sc07B & q::
if (win1down != 1) {
send, {Lwin down}
win1down = 1
}
send, {1 down}
KeyWait, q
send, {1 up}
KeyWait, sc07B
send, {Lwin up}
win1down = 0
return
1回目を押して正しくアイコンが表示されるところまでは行けても、
無変換+qでKeyWaitしている最中に、再度無変換+qの処理を開始できない
(他のキーなら受け付けるし、入れ子は正しく処理される)
sc07B & q::
if (win1down != 1) {
send, {Lwin down}
win1down = 1
}
send, {1 down}
KeyWait, q
send, {1 up}
KeyWait, sc07B
send, {Lwin up}
win1down = 0
return
2023/06/29(木) 23:58:49.00ID:LnRI2dek0
これでどう?
sc07B::
win1down := 1
return
sc07B up::
if(win1down = 1)
send {sc07B}
if(win1down = 2)
send {LWin UP}
win1down := 0
return
~sc07B & q::
if(win1down = 1){
Send {LWin Down}
win1down := 2
}
if(win1down = 2)
send 1
return
sc07B::
win1down := 1
return
sc07B up::
if(win1down = 1)
send {sc07B}
if(win1down = 2)
send {LWin UP}
win1down := 0
return
~sc07B & q::
if(win1down = 1){
Send {LWin Down}
win1down := 2
}
if(win1down = 2)
send 1
return
196名無しさん@お腹いっぱい。
2023/06/30(金) 17:51:59.54ID:I13+A2Ls0 選択したファイルの絶対パスをダブルクオーテーション抜きでショートカットでコピーする方法ないでしょうか?
https://qiita.com/flhtc1964/items/dcee80576370785f0339
こちらを参考にしたのですが、windows純正のパスのコピーを使用するのでどうしてもパスの前後に"が付いてしまいます。
"を毎回削除するのが煩わしいので、どうにかパスをそのままコピーしたいのですが方法ないでしょうか?
https://qiita.com/flhtc1964/items/dcee80576370785f0339
こちらを参考にしたのですが、windows純正のパスのコピーを使用するのでどうしてもパスの前後に"が付いてしまいます。
"を毎回削除するのが煩わしいので、どうにかパスをそのままコピーしたいのですが方法ないでしょうか?
2023/06/30(金) 18:00:42.92ID:8GKPkB550
ClipboardChangeで書換
2023/06/30(金) 18:02:46.59ID:ktXPCW8H0
Trim()の1行が煩わしいんじゃ他の方法も無理では
2023/06/30(金) 18:19:03.59ID:ZTZJy8xI0
RegexReplace(str, """", "")
2023/06/30(金) 19:29:19.96ID:O3h73S2Q0
ファイル選択して ctrl + c で終わりだべ
"" など関係ねぇべよ
"" など関係ねぇべよ
2023/06/30(金) 19:44:30.66ID:lLRwY/Li0
文字列を貼り付けたい場合はソフトが対応してないと無理だべ?
2023/06/30(金) 20:37:05.62ID:O3h73S2Q0
clipboard := clipboard
この一行追加でどうだべ
この一行追加でどうだべ
2023/07/01(土) 14:44:49.97ID:JSbfNA7M0
>>195
なんで動くか判らんけど動くなあ
なんで動くか判らんけど動くなあ
2023/07/02(日) 18:54:37.91ID:mq1/CYK10
1.1.37.00
2023/07/02(日) 19:10:55.46ID:WAJOWZNC0
無変換+qだけじゃなくて、無変換+wとかにも拡張するのは簡単だった
ただなー
こんな大仰なことしなくても、yamyだったら
key M1-q = W-_1
だけで完全に動作したんだよな
yamyの方がより低いレイヤーでフックしているから
ahkの方が行儀がいいんだけど、奪い合いになると負けてしまう
ただなー
こんな大仰なことしなくても、yamyだったら
key M1-q = W-_1
だけで完全に動作したんだよな
yamyの方がより低いレイヤーでフックしているから
ahkの方が行儀がいいんだけど、奪い合いになると負けてしまう
2023/07/04(火) 22:59:47.60ID:bLMqkorL0
麻生なんだー
2023/07/04(火) 23:24:03.60ID:UvZzeLwp0
たまにctrlとか押しっぱなしになるのも、奪い合いに負けた結果なんだよな
もっと低レベルにはできないんだろうか
もっと低レベルにはできないんだろうか
2023/07/06(木) 00:38:30.75ID:equDk8Un0
PathMatchSpecが日本語のテキストで誤動作する問題で七転八倒してしまった…
なんでこんなバグ放置してんだアホエスは
そしてAHKはワイルドカード判定標準でつけろよ
なんでこんなバグ放置してんだアホエスは
そしてAHKはワイルドカード判定標準でつけろよ
2023/07/06(木) 05:37:54.46ID:152urR560
ちょっとググってみたら PathMatchSpec 関係は色々と仕様変更が積み重なったり
挙動が怪しいってあるな。PathMatchSpec〜 で色々とバリエーションがあるし。
(自前でAPI相当の処理を書いている人とかも)
挙動が怪しいってあるな。PathMatchSpec〜 で色々とバリエーションがあるし。
(自前でAPI相当の処理を書いている人とかも)
2023/07/06(木) 22:54:46.22ID:ZPNlWptz0
AutoHotkey初心者です。
Space::Space
Space & G::Send,{Space}
Space & D::Send, !{Left}
Space & F::Send, !{Right}
Space & W::Send, ^w
Space & Q::Send, +^t
このようなスペースキーを基本にしたショートカットのためにAutohotkeyを導入しました。
その割当自体は出来たのですが、
これだとPhotoshopでのスペースキー単体押しっぱなしで使用する手のひらツールが使えなくて困っています。
上記1番上はボタン離さないと反応せず、2番目のは連続押し扱いになってしまいます。
雑魚すぎて押しっぱなしをどうすればいいか分からないので先輩方ご教授よろしくお願いします。
Space::Space
Space & G::Send,{Space}
Space & D::Send, !{Left}
Space & F::Send, !{Right}
Space & W::Send, ^w
Space & Q::Send, +^t
このようなスペースキーを基本にしたショートカットのためにAutohotkeyを導入しました。
その割当自体は出来たのですが、
これだとPhotoshopでのスペースキー単体押しっぱなしで使用する手のひらツールが使えなくて困っています。
上記1番上はボタン離さないと反応せず、2番目のは連続押し扱いになってしまいます。
雑魚すぎて押しっぱなしをどうすればいいか分からないので先輩方ご教授よろしくお願いします。
2023/07/06(木) 23:09:55.63ID:ngOiScvr0
Space::Space
なんか普通は要らんのでは
なんか普通は要らんのでは
2023/07/07(金) 02:12:46.03ID:i2+/p1fp0
USキーボード使いか
2023/07/07(金) 07:00:54.88ID:tGky2Wy+0
Photshopを持ってないので試せないけど、これは?
~Space & D::Send, !{Left}
~Space & F::Send, !{Right}
~Space & W::Send, ^w
~Space & Q::Send, +^t
~Space & D::Send, !{Left}
~Space & F::Send, !{Right}
~Space & W::Send, ^w
~Space & Q::Send, +^t
214名無しさん@お腹いっぱい。
2023/07/07(金) 08:00:59.63ID:gKueDstZ0 日本語キーボードにして無変換キーとか使った方が良いと思うよ
2023/07/07(金) 11:44:12.53ID:pJkFv0pf0
そいつ例の荒らしだろ
2023/07/07(金) 12:32:39.40ID:SgVFrTeV0
Space::Space
Space & LButton::
Send {Blind}{Space Down}
Send {Blind}{LButton Down}
return
Space & LButton up::
Send {Blind}{LButton Up}
Send {Blind}{Space Up}
return
kritaで動作確認した限り大丈夫そうだけどおすすめしない
Space & LButton::
Send {Blind}{Space Down}
Send {Blind}{LButton Down}
return
Space & LButton up::
Send {Blind}{LButton Up}
Send {Blind}{Space Up}
return
kritaで動作確認した限り大丈夫そうだけどおすすめしない
2023/07/07(金) 19:05:25.60ID:Hk97H3l30
usにもスペースの両側に汎用モディファイアがあると便利だと理解してる人おらんのかな
2023/07/08(土) 13:46:17.68ID:KfMZLAsY0
:=を=で書くとどうなる?
2023/07/08(土) 15:35:21.76ID:KDIUdI2h0
v1.1.37.01
2023/07/08(土) 18:24:46.41ID:KDIUdI2h0
v2.0.4
2023/07/08(土) 22:11:35.60ID:/y72iKeO0
>>219-220
乙
Release v2.0.4 ・ AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.4
乙
Release v2.0.4 ・ AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.4
2023/07/08(土) 22:21:33.01ID:KfMZLAsY0
今日2.0.3にしたのに
2023/07/09(日) 08:47:46.64ID:O8ddG7Yq0
A_Indexの代わりに別の変数をループに使えないものか
そもそも思い出せないし、長いし、意味不明だし、多重ループが混乱するし、
v3にした時には是非追放して欲しい
そもそも思い出せないし、長いし、意味不明だし、多重ループが混乱するし、
v3にした時には是非追放して欲しい
2023/07/09(日) 09:03:31.70ID:kubK6LSG0
そんなの自分で定義すればいいだけじゃん
2023/07/09(日) 09:54:52.67ID:yVBZYIBZ0
loop でも while でも好きなように組むだけやろ。
2023/07/09(日) 15:09:38.14ID:jS/iPaVQ0
不満点の全てが意味不明で笑う
2023/07/09(日) 15:15:57.21ID:O8ddG7Yq0
v2になって過去の変な部分はばっさり捨ててやっとまともな言語っぽくなったのに、
A_Indexだけ最初期のままなんだよな
loop 3
みたいな文法は捨てるべき
A_Indexだけ最初期のままなんだよな
loop 3
みたいな文法は捨てるべき
2023/07/09(日) 16:47:00.83ID:yVBZYIBZ0
なんで頑ななまでに A_Index を使いたがるんだろう。
嫌なら使わなきゃいいだけやろ。
Loop [CONST] だと勘違いしてないよな?
Loop Until だってあるし While だってあるし、Break/Return で抜けられるし。
嫌なら使わなきゃいいだけやろ。
Loop [CONST] だと勘違いしてないよな?
Loop Until だってあるし While だってあるし、Break/Return で抜けられるし。
2023/07/09(日) 16:51:54.85ID:xe8gSeL50
2023/07/09(日) 16:52:50.98ID:sA1yQ4MM0
よりモダンで洗練された制御構文欲しいってだけで粘着されてて笑う
2023/07/09(日) 16:58:05.87ID:O8ddG7Yq0
じゃあa[]が用意されていて、インデックスの1から3までを表示する処理をA_Indexを使わずに書いてみて
2023/07/09(日) 17:00:39.78ID:xe8gSeL50
2023/07/09(日) 21:25:56.77ID:yVBZYIBZ0
なぁ、もしかしてプログラミング初心者?それともなんかの課題?
/* 5ch の仕様で SPC が飛ぶかもしれん */
a := ["A", "B", "C", "D"]
i := 1
; Loop ver.
Loop 3
{
buf .= "a[" i "] = " a[i] "`n"
i++
}
; Loop Until ver.
Loop
{
buf .= "a[" i "] = " a[i] "`n"
i++
} Until (i > 3)
; While ver.
While (i < 4)
{
buf .= "a[" i "] = " a[i] "`n"
i++
}
MsgBox buf
/* 5ch の仕様で SPC が飛ぶかもしれん */
a := ["A", "B", "C", "D"]
i := 1
; Loop ver.
Loop 3
{
buf .= "a[" i "] = " a[i] "`n"
i++
}
; Loop Until ver.
Loop
{
buf .= "a[" i "] = " a[i] "`n"
i++
} Until (i > 3)
; While ver.
While (i < 4)
{
buf .= "a[" i "] = " a[i] "`n"
i++
}
MsgBox buf
2023/07/09(日) 21:43:59.44ID:O8ddG7Yq0
そういう風にしか書けないよねという話
i++とか i > 3とか書きたくなければ A_Index を使うしかない
loop i in range(3) {
みたいに書けるのが理想
後方互換性捨ててるんだから、どう見ても無くしたい部分だろうに、
なんで残したんだろ
i++とか i > 3とか書きたくなければ A_Index を使うしかない
loop i in range(3) {
みたいに書けるのが理想
後方互換性捨ててるんだから、どう見ても無くしたい部分だろうに、
なんで残したんだろ
2023/07/09(日) 22:57:31.41ID:wL8nS9tI0
素人ですんません
Forループってのもあるけど、これ使っちゃだめですか?
Forループってのもあるけど、これ使っちゃだめですか?
2023/07/09(日) 23:04:32.69ID:xe8gSeL50
2023/07/09(日) 23:12:13.79ID:O8ddG7Yq0
なんか一人狂信者がいて引くw
どう取り繕ってもahkの文法はぐちゃぐちゃなの
で、v2でそういうのは綺麗にして今後も使っていける感じに直したの
でもなんかよく判らない理由で変な癖が残ってて、なんだかなあという話
どう取り繕ってもahkの文法はぐちゃぐちゃなの
で、v2でそういうのは綺麗にして今後も使っていける感じに直したの
でもなんかよく判らない理由で変な癖が残ってて、なんだかなあという話
2023/07/09(日) 23:13:21.61ID:xe8gSeL50
バカのゴミ書き込みか…
バカは消えろ
バカは消えろ
2023/07/09(日) 23:15:21.62ID:O8ddG7Yq0
あ、もしかして、いまだにv1使ってるとか?
まさかね
まさかね
2023/07/09(日) 23:16:08.05ID:xe8gSeL50
お前はもういいから
消えろ
バカが…
消えろ
バカが…
2023/07/09(日) 23:21:07.15ID:yVBZYIBZ0
2023/07/09(日) 23:22:31.66ID:O8ddG7Yq0
あーあ、思考停止しちゃった
まあ、v1の人が A_index を気にしないのは判る
そんなの問題にならないレベルで酷いから
不明確さや不統一さを無くしたv2の中に残ってるのはすごい違和感がある
この感覚はv2を知らない人には理解できないだろう
まあ、v1の人が A_index を気にしないのは判る
そんなの問題にならないレベルで酷いから
不明確さや不統一さを無くしたv2の中に残ってるのはすごい違和感がある
この感覚はv2を知らない人には理解できないだろう
2023/07/09(日) 23:23:10.40ID:xe8gSeL50
2023/07/09(日) 23:26:14.48ID:O8ddG7Yq0
なんでそこまで狂信的なのにv2知らないの?
v1の信者なの?
v1の信者なの?
2023/07/10(月) 05:02:27.76ID:D1L7kfGR0
ID:O8ddG7Yq0 = ID:xe8gSeL50
いつもの荒らし
いつもの荒らし
2023/07/10(月) 11:50:39.33ID:fPPv+PtL0
確認したら自分の使用バージョンが
Version 1.1.32.00
だった
Version 1.1.32.00
だった
2023/07/11(火) 19:59:29.75ID:ClHxo8ZG0
>>234
理想とユーザへの配慮の落とし所としては今の仕様も悪くないと思うけど
そのrangeみたいなのがいいなら
f::
{
Range(m := 0) => (c := 0, (&n) => (c++, n := c, m = 0 || c <= m))
for i in Range(3)
{
for j in Range(3)
{
MsgBox "i = " i ", j = " j
}
}
}
こういうのを作っておくとか
理想とユーザへの配慮の落とし所としては今の仕様も悪くないと思うけど
そのrangeみたいなのがいいなら
f::
{
Range(m := 0) => (c := 0, (&n) => (c++, n := c, m = 0 || c <= m))
for i in Range(3)
{
for j in Range(3)
{
MsgBox "i = " i ", j = " j
}
}
}
こういうのを作っておくとか
2023/07/11(火) 21:34:14.53ID:trz2tr7d0
>>246
俺もまだ 1.1.33.02 だわw
俺もまだ 1.1.33.02 だわw
2023/07/11(火) 22:48:38.33ID:dnBDALt50
looxarmさん(最初に翻訳してくれた人)だけ?が華麗にA_Indexでの例文を見せてくれてたので
ほえーーてなりました。以来、A_indexのとりこです(*´Д`)
ほえーーてなりました。以来、A_indexのとりこです(*´Д`)
2023/07/11(火) 23:15:09.49ID:FHg1bwQG0
A_シリーズは他にも死ぬほどあって、その中の一つに過ぎないから、
何も変に思わないんだろうな
でもループなんて基礎的な制御構造がちゃんと書けないのは、言語として両手落ち
何も変に思わないんだろうな
でもループなんて基礎的な制御構造がちゃんと書けないのは、言語として両手落ち
2023/07/12(水) 02:22:51.65ID:zr6kd7wl0
言語の大幅な仕様変更は鬼門で、理想を追求しすぎて同じ言語だと思ってもらえなかったり実装が遅れたりして
他の良さげなものへユーザが離れていくきっかけになりやすいから、v2みたいにAHKっぽさを意識しながら
どうしようもないところ以外まず仕様を整えるだけにするのはありだと思う
それでループなんだけど、最近の流行りだとループや条件分岐とかを制御文として使うのはバグの元だって
昔のgotoみたいに嫌われだしてるから、将来的には残しても他推奨含みで、今はあまり手を付けてないのかも
AHKの開発まで追っかけてないから妄想だけど
他の良さげなものへユーザが離れていくきっかけになりやすいから、v2みたいにAHKっぽさを意識しながら
どうしようもないところ以外まず仕様を整えるだけにするのはありだと思う
それでループなんだけど、最近の流行りだとループや条件分岐とかを制御文として使うのはバグの元だって
昔のgotoみたいに嫌われだしてるから、将来的には残しても他推奨含みで、今はあまり手を付けてないのかも
AHKの開発まで追っかけてないから妄想だけど
2023/07/12(水) 05:53:04.40ID:5dufTTJG0
1回書いたことは2度書かなくていいよ
2023/07/13(木) 04:07:33.86ID:cFQwAnDn0
2023/07/13(木) 08:01:18.26ID:KdnNDOHT0
変数名に日本語使えるって知ってた?
2023/07/13(木) 14:05:56.55ID:hKdpthgD0
>>250
OSSなんだからフォークして自分でやれよ
OSSなんだからフォークして自分でやれよ
2023/07/14(金) 20:25:02.95ID:ABwBca5n0
win-shift-sで領域指定してキャプチャーする操作の、
領域はいつも固定なので自動化したいけど、そんなことできる?
領域はいつも固定なので自動化したいけど、そんなことできる?
2023/07/14(金) 20:31:50.37ID:+lgJAusH0
Gdip使えば?
2023/07/14(金) 20:36:03.75ID:ABwBca5n0
うーん、苦しそうだ
オールahkでやらんでも、何かのコマンドとかpowershellの呼び出しでもいいんだけど
ウィンドウ全体とか、ファイルにして保存とか、今ひとつ思い通りのが無い
ウィンドウの一部だけをクリップボードに入れたい
オールahkでやらんでも、何かのコマンドとかpowershellの呼び出しでもいいんだけど
ウィンドウ全体とか、ファイルにして保存とか、今ひとつ思い通りのが無い
ウィンドウの一部だけをクリップボードに入れたい
2023/07/14(金) 20:48:11.97ID:XHPFxv5S0
>>256
Snip & Sketch(Win10) か Snipping Tool(Win11) でってこと?
やってやれんことはないやろうけど、領域固定なら別の方法でやる方が
楽にコーディグできそうではある。
Snip & Sketch(Win10) か Snipping Tool(Win11) でってこと?
やってやれんことはないやろうけど、領域固定なら別の方法でやる方が
楽にコーディグできそうではある。
2023/07/14(金) 21:01:06.56ID:+lgJAusH0
>>258
Gdip使うまでもなかった こいつ使えば望みが叶うよ
https://www.autohotkey.com/board/topic/121619-screencaptureahk-broken-capturescreen-function-win-81-x64/
Gdip使うまでもなかった こいつ使えば望みが叶うよ
https://www.autohotkey.com/board/topic/121619-screencaptureahk-broken-capturescreen-function-win-81-x64/
2023/07/14(金) 21:12:04.91ID:ABwBca5n0
大量のDLLを呼び出すラッパーになるので、どう書いてもそうなるよな
powershellでも同じかもしれない
powershellでも同じかもしれない
2023/07/14(金) 22:02:21.02ID:+lgJAusH0
Gdip使うならGdip_BitmapFromScreenとGdip_SetBitmapToClipboard使えばいいよ
2023/07/14(金) 22:27:15.56ID:TZl8HbDe0
2023/07/14(金) 22:56:03.34ID:ABwBca5n0
Add-Type -AssemblyName System.Windows.Forms,System.Drawing
$rect=[Drawing.Rectangle]::FromLTRB(0,0,500,500)
$bmp=New-Object System.Drawing.Bitmap $rect.width,$rect.height
([System.Drawing.Graphics]::FromImage($bmp)).CopyFromscreen($rect.left,$rect.top,0,0,$bmp.size)
[Windows.Forms.Clipboard]::SetImage($bmp)
$bmp.Dispose()
こんな感じのps1でできた
$rect=[Drawing.Rectangle]::FromLTRB(0,0,500,500)
$bmp=New-Object System.Drawing.Bitmap $rect.width,$rect.height
([System.Drawing.Graphics]::FromImage($bmp)).CopyFromscreen($rect.left,$rect.top,0,0,$bmp.size)
[Windows.Forms.Clipboard]::SetImage($bmp)
$bmp.Dispose()
こんな感じのps1でできた
2023/07/15(土) 00:05:03.24ID:KHLZr64A0
V1ですがメニューの幅をどうてきにへんこうできないでしょうか。長いメニュー名を表示した後みじかくすると幅が長いまんまです。
2023/07/15(土) 09:09:51.03ID:Qa0kUJY20
psのウィンドウは-WindowStyle Hiddenを指定しても一瞬表示されて、
それがキャプチャーされてしまっては意味が無いので、JScript等からさらに呼び出す必要がある
https://pmp-style.hatena
blog.com/entry/PowerShell_Hidden
ここのを丸パクリでok
それがキャプチャーされてしまっては意味が無いので、JScript等からさらに呼び出す必要がある
https://pmp-style.hatena
blog.com/entry/PowerShell_Hidden
ここのを丸パクリでok
267265
2023/07/15(土) 10:01:30.99ID:KHLZr64A0 結局都度メニューを作り直すことで対応しました。
Loop, 3
MenuName .= "(๑╹ᆺ╹)"
Loop, 3 {
(A_Index > 1 && MenuName := RegExReplace(MenuName, "^.{6}"))
Menu, ContextMenu, Add
Menu, ContextMenu, Delete
Menu, ContextMenu, Add, %MenuName%, A
Menu, ContextMenu, Show
}
A:
Return
Loop, 3
MenuName .= "(๑╹ᆺ╹)"
Loop, 3 {
(A_Index > 1 && MenuName := RegExReplace(MenuName, "^.{6}"))
Menu, ContextMenu, Add
Menu, ContextMenu, Delete
Menu, ContextMenu, Add, %MenuName%, A
Menu, ContextMenu, Show
}
A:
Return
2023/07/15(土) 11:59:00.56ID:VaoelrHe0
マウスボタンを押し続け、指定時間が経過したらボタンを離すまでキー連打というのをやりたいです。
方法があれば教えてください。どうぞよろしくお願いします。
方法があれば教えてください。どうぞよろしくお願いします。
2023/07/15(土) 18:29:07.20ID:HqHAS0Is0
#Requires AutoHotkey v2.0
~LButton:: {
time := 1000 ; マウスボタンを押し続ける時間 milliseconds
key := "a" ; 連打するキー
interval := 40 ; 連打間隔 milliseconds
this_hotkey := LTrim(ThisHotkey, "~")
while GetKeyState(this_hotkey, "P") {
if (A_TimeSinceThisHotkey >= time) {
;ToolTip key " mashing"
send key
sleep interval
}
else {
;ToolTip A_Index
sleep 100
}
}
}
;~LButton up:: ToolTip
~LButton:: {
time := 1000 ; マウスボタンを押し続ける時間 milliseconds
key := "a" ; 連打するキー
interval := 40 ; 連打間隔 milliseconds
this_hotkey := LTrim(ThisHotkey, "~")
while GetKeyState(this_hotkey, "P") {
if (A_TimeSinceThisHotkey >= time) {
;ToolTip key " mashing"
send key
sleep interval
}
else {
;ToolTip A_Index
sleep 100
}
}
}
;~LButton up:: ToolTip
2023/07/15(土) 21:48:33.57ID:Qa0kUJY20
ホットキー1つにアプリ1つ対応させてタスクスイッチさせてたら、
あっという間にキーが無くなった
大して重要でもないアプリにアクセスのいいキーを割いてしまう
だから、使用頻度の低いのは全部menuにまとめた
起動して1ストロークで切り替わるので快適
立ち上がってなかったら立ち上げもやらせるのでもうランチャーなんだけど、
タスク切り替えできるランチャーってあるのかな
あっという間にキーが無くなった
大して重要でもないアプリにアクセスのいいキーを割いてしまう
だから、使用頻度の低いのは全部menuにまとめた
起動して1ストロークで切り替わるので快適
立ち上がってなかったら立ち上げもやらせるのでもうランチャーなんだけど、
タスク切り替えできるランチャーってあるのかな
2023/07/15(土) 22:06:56.30ID:vV8ds1jY0
272名無しさん@お腹いっぱい。
2023/07/15(土) 22:52:53.90ID:x3WO43km02023/07/15(土) 23:37:49.10ID:F5l6cpD30
Gui Object - Methods & Properties | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/Gui.htm
Menu/MenuBar Object - Methods & Properties | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/Menu.htm
https://www.autohotkey.com/docs/v2/lib/Gui.htm
Menu/MenuBar Object - Methods & Properties | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/Menu.htm
2023/07/16(日) 12:50:53.11ID:BMcU1kH50
275名無しさん@お腹いっぱい。
2023/07/16(日) 13:34:32.03ID:l4qSDuiB02023/07/16(日) 13:42:03.94ID:XCq/PQra0
msgbox出して入力させても同じようなことができるけど、enter押さなくていいから軽快なんだよな
menuで選択せずにenterだけ押して終了した時のデフォルトの動作を設定したいけど、
何もせずに終わってるようにしか見えない
menuで選択せずにenterだけ押して終了した時のデフォルトの動作を設定したいけど、
何もせずに終わってるようにしか見えない
2023/07/16(日) 14:16:00.20ID:Km3KtOC30
>>275
ゴリゴリに凝ってGUIなメニューも組めるけれど、結構面倒くさいかもw
ワシは簡単にデフォルトのAHKのメニューにアイテムを追加して簡単な
設定ダアログを表示させているだけ。
https://i.imgur.com/3AbAvve.png
>>276
OnEvent の "Close" にコールバックを登録している?
ゴリゴリに凝ってGUIなメニューも組めるけれど、結構面倒くさいかもw
ワシは簡単にデフォルトのAHKのメニューにアイテムを追加して簡単な
設定ダアログを表示させているだけ。
https://i.imgur.com/3AbAvve.png
>>276
OnEvent の "Close" にコールバックを登録している?
2023/07/16(日) 16:07:12.73ID:gQLFhoYb0
>>277
最初の2行のTheいらんやろ
最初の2行のTheいらんやろ
2023/07/16(日) 16:11:54.43ID:Km3KtOC30
2023/07/17(月) 00:58:53.53ID:SbIiaArN0
>>269
どうもありがとうございます。コンバートして望み通り動作しました。
どうもありがとうございます。コンバートして望み通り動作しました。
2023/07/17(月) 04:09:59.36ID:VOOmaMxG0
メニュー使った2ストローク入力なら古のchoice使うのも手軽
https://justpaste.it/9lbtx
https://justpaste.it/9lbtx
2023/07/17(月) 07:28:27.62ID:xIH5JVqm0
[A] aaaと定義したらcase "A"で判定できるのがいいな
ahkだと、
Menu.Add "[A] aaa", MenuHandler
と定義したら
if (Item = "[A] aaa")
と書かないといけない
ahkだと、
Menu.Add "[A] aaa", MenuHandler
と定義したら
if (Item = "[A] aaa")
と書かないといけない
283名無しさん@お腹いっぱい。
2023/07/17(月) 07:58:49.86ID:vF6+yovp0 「変換」キーと「;」キーを同時押ししたときに「Shift」長押し
ということはできるでしょうか。
sc079 & sc027::Send, {Blind}{sc036 Down}
このように書いてもダメでした。
KeyWaitやGetKeyStateもコンビネーションが使えない?ようで
どう書けばよいか分からず、できるかどうかもWikiからは読み取れず
お知恵を拝借できればと。。
ということはできるでしょうか。
sc079 & sc027::Send, {Blind}{sc036 Down}
このように書いてもダメでした。
KeyWaitやGetKeyStateもコンビネーションが使えない?ようで
どう書けばよいか分からず、できるかどうかもWikiからは読み取れず
お知恵を拝借できればと。。
2023/07/17(月) 07:59:33.80ID:B2mmzP0z0
2023/07/17(月) 08:04:20.66ID:B2mmzP0z0
2023/07/17(月) 08:21:23.71ID:xIH5JVqm0
表示用文字列とIDは別個というのが自然な発想の筈なのに、
一緒にしちゃえと最初に思ったのでもう後へは引けない
上から何番目かは判るけど、メニューをそれで管理したら絶対保守性悪い
一緒にしちゃえと最初に思ったのでもう後へは引けない
上から何番目かは判るけど、メニューをそれで管理したら絶対保守性悪い
287名無しさん@お腹いっぱい。
2023/07/17(月) 16:51:36.29ID:pYrZa38K02023/07/17(月) 17:08:53.58ID:xIH5JVqm0
menu出てる間は処理を取られてるからなあ
下カーソルを押してメニュー選択しようとして、caps-xとか押してもそれは無視される
下カーソルを押してメニュー選択しようとして、caps-xとか押してもそれは無視される
2023/07/17(月) 17:13:27.67ID:B2mmzP0z0
>>287
そら割と簡単やで、ちゅうか Quick Reference にあった気がせんでもない。
例えば Ctrl+F2 に割り当てるなら
^F2:: MyGui.Show()
ってやるだけ。
面倒くさいのは MyGui := Gui() ってやったあとにひたすら Gui の内容を
構築することw
そら割と簡単やで、ちゅうか Quick Reference にあった気がせんでもない。
例えば Ctrl+F2 に割り当てるなら
^F2:: MyGui.Show()
ってやるだけ。
面倒くさいのは MyGui := Gui() ってやったあとにひたすら Gui の内容を
構築することw
2023/07/17(月) 19:22:18.19ID:XDsl//0d0
Gui Add Edit で、テキストエリアをクリックするだけで入力されている文字列が選択状態になる方法はありますか?
2023/07/17(月) 21:09:18.79ID:B2mmzP0z0
2023/07/17(月) 21:28:56.07ID:B2mmzP0z0
>>283
Blind 使ってるからちゃうか?
関数化して
sc079 & sc027::
Send, "{Shift down}"
Sleep, Delay time in msec
Send, "{Shift up}"
Return
は?
Blind 使ってるからちゃうか?
関数化して
sc079 & sc027::
Send, "{Shift down}"
Sleep, Delay time in msec
Send, "{Shift up}"
Return
は?
2023/07/18(火) 14:00:51.15ID:CF9kcEEW0
初歩的な質問ですみません
下を実行しても1までで、2と3が反応しないです
使ってるマウスはロジのM750Lなんですが同様の現象を解決できた方いたら教えてください
Xbutton1::
SendInput, {1}
KeyWait, Xbutton1, U
KeyWait, Xbutton1, D
SendInput, {2}
KeyWait, Xbutton1, U
KeyWait, Xbutton1, D
SendInput, {3}
KeyWait, Xbutton1, U
return
下を実行しても1までで、2と3が反応しないです
使ってるマウスはロジのM750Lなんですが同様の現象を解決できた方いたら教えてください
Xbutton1::
SendInput, {1}
KeyWait, Xbutton1, U
KeyWait, Xbutton1, D
SendInput, {2}
KeyWait, Xbutton1, U
KeyWait, Xbutton1, D
SendInput, {3}
KeyWait, Xbutton1, U
return
2023/07/18(火) 14:44:28.17ID:lBVfkO4n0
>>293
MouseClick と違って KeyWait には "U" というオプションはないと思うけど。
Options の説明書きを見る限りじゃ、", U" を全部取っ払ったら期待通りの
動作になるかもね。
KeyWait - Syntax & Usage | AutoHotkey
https://www.autohotkey.com/docs/v1/lib/KeyWait.htm
MouseClick と違って KeyWait には "U" というオプションはないと思うけど。
Options の説明書きを見る限りじゃ、", U" を全部取っ払ったら期待通りの
動作になるかもね。
KeyWait - Syntax & Usage | AutoHotkey
https://www.autohotkey.com/docs/v1/lib/KeyWait.htm
2023/07/18(火) 15:36:22.45ID:w+el2smL0
どういう動きにしたいのか分からないが、オレ環だとかなりゆっくり押す必要あるけど押す度に 1 → 2 → 3 → 1 → 2 → …と数字一つずつ入力される
win10 64bit Kensington SlimBlade Trackball(拡張ボタン1や2は付属ユーティリティで設定が必要な機種)
win10 64bit Kensington SlimBlade Trackball(拡張ボタン1や2は付属ユーティリティで設定が必要な機種)
2023/07/18(火) 15:46:49.31ID:XAgbB53O0
>>293
マウスやドライバによるか知らんが
XButtonとかは押し下げた瞬間にDown→Upになってしまって押しっぱなしという状態ができなかったりする
そのことと2回目の押し下げが効かないこととの関係は俺にはわからない
なんの解決にもなってなくてすまん
マウスやドライバによるか知らんが
XButtonとかは押し下げた瞬間にDown→Upになってしまって押しっぱなしという状態ができなかったりする
そのことと2回目の押し下げが効かないこととの関係は俺にはわからない
なんの解決にもなってなくてすまん
2023/07/18(火) 19:05:53.01ID:CF9kcEEW0
回答ありがとうございます
>294
Uは必要なかったんですね
間違えてるのを参考にしてたみたいです
外してやってみたのですが駄目でした
>295
相性から可能なマウス(付属ソフト?)はあるんですね
けど反応速度はほしい・・
>296
昨日1回だけ成功したんですが再現できず謎すぎました
>294
Uは必要なかったんですね
間違えてるのを参考にしてたみたいです
外してやってみたのですが駄目でした
>295
相性から可能なマウス(付属ソフト?)はあるんですね
けど反応速度はほしい・・
>296
昨日1回だけ成功したんですが再現できず謎すぎました
2023/07/18(火) 19:25:05.03ID:w+el2smL0
>>297
>>295の動きが希望通り?だったらもっと軽く動くスクリプトが↓
サンプルコード集 - AutoHotkey Wiki
https://ahkwiki.net/SampleCodes
「1.2 キーを押す度に機能を切り替え」の所にあるから参考にしてみれば?
>>295の動きが希望通り?だったらもっと軽く動くスクリプトが↓
サンプルコード集 - AutoHotkey Wiki
https://ahkwiki.net/SampleCodes
「1.2 キーを押す度に機能を切り替え」の所にあるから参考にしてみれば?
299名無しさん@お腹いっぱい。
2023/07/18(火) 23:12:13.23ID:+qf1cFv602023/07/19(水) 16:55:58.66ID:l/NP6n2/0
2023/07/21(金) 03:57:09.33ID:t06Z9tfd0
2用のWikiってないの?
2023/07/21(金) 06:00:31.08ID:Xu2CSu5b0
最初からv2しか無くて、世の中のサンプルが全部v2ならいいのに
2023/07/21(金) 08:00:41.75ID:1JPT1c3e0
v1を理解してるんだったらv2なんて難しくもなんともないのに
2023/07/21(金) 14:38:08.72ID:aUUJgDsM0
たまに V1 → V2 でガラッと変わっているものもあって、
公式のドキュメントサイトで V1 <-> V2 をいったり来たりしながら
コンバートせんとアカンことがあるけどなw
公式のドキュメントサイトで V1 <-> V2 をいったり来たりしながら
コンバートせんとアカンことがあるけどなw
2023/07/21(金) 15:01:03.32ID:TyBbyczW0
splashimageとprogressをtooltip代わりに多用してたせいで難儀してる
オブジェクト関係よく分からんので仕方無しにtooltip使ってるけどフォント変えられないのとマウスで移動させられないのがちょっと困る
オブジェクト関係よく分からんので仕方無しにtooltip使ってるけどフォント変えられないのとマウスで移動させられないのがちょっと困る
2023/07/21(金) 17:01:02.01ID:aUUJgDsM0
慣れれば、というかCやったことあるならとりあえず構造体みたいなもんやと
思っておけばおk
プロトタイプベースがどうのこうの、クラスベースで継承がどうのこうのとか
放り投げとけw
思っておけばおk
プロトタイプベースがどうのこうの、クラスベースで継承がどうのこうのとか
放り投げとけw
307名無しさん@お腹いっぱい。
2023/07/21(金) 18:14:03.38ID:CzIafqnt02023/07/21(金) 20:00:33.36ID:aUUJgDsM0
そっちかいな。
tooltip 代わりに使っていたというなら、Gui で好きなウィンドウを作ったら
ええんちゃう?
公式ドキュメントの V1 Progress / Splashimage にも非推奨で Gui を使えとあるし。
tooltip 代わりに使っていたというなら、Gui で好きなウィンドウを作ったら
ええんちゃう?
公式ドキュメントの V1 Progress / Splashimage にも非推奨で Gui を使えとあるし。
2023/07/21(金) 20:39:41.20ID:Xu2CSu5b0
v2でしか出来ない新機能
みたいなのがあれば移行を促進するけど、なんも無いもんな
動かないのは確実なのでわざわざ移植なんかしないでv1でいいやになる
みたいなのがあれば移行を促進するけど、なんも無いもんな
動かないのは確実なのでわざわざ移植なんかしないでv1でいいやになる
2023/07/21(金) 21:05:37.01ID:TyBbyczW0
AddTextで表示させることは出来るんだけどそこからがね
settimerでタイマー的に経過時間を表示させる場合毎回一からウィンドウを作るん?
それとも1回作ったあとはテキスト部分だけを書き換えたりするもんなの
他言語はUWSCくらいしかさわったことないからセオリーが分からん
settimerでタイマー的に経過時間を表示させる場合毎回一からウィンドウを作るん?
それとも1回作ったあとはテキスト部分だけを書き換えたりするもんなの
他言語はUWSCくらいしかさわったことないからセオリーが分からん
2023/07/21(金) 21:46:26.30ID:aUUJgDsM0
>>310
GUI Control Types - Syntax & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/GuiControls.htm#Progress
GUI Control Types - Syntax & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/GuiControls.htm#Progress
2023/07/21(金) 22:19:00.72ID:TyBbyczW0
t::
t := A_TickCount
Progress, M T X0 Y0 ZX0 ZY0 W120 H0
SetTimer, timer, 1000
return
timer:
Progress, , , , % ((A_TickCount - t)) // 1000 // 60 . "m経過"
return
こんな感じで移動可能なツールチップ代わりに使ってただけで進捗バーとして使ってたわけじゃないんだ
サンプル見る限り.valueでテキスト部分も書き換え可能ってわかったけど旧progressのMに相当するオプションはないっぽいのな
t := A_TickCount
Progress, M T X0 Y0 ZX0 ZY0 W120 H0
SetTimer, timer, 1000
return
timer:
Progress, , , , % ((A_TickCount - t)) // 1000 // 60 . "m経過"
return
こんな感じで移動可能なツールチップ代わりに使ってただけで進捗バーとして使ってたわけじゃないんだ
サンプル見る限り.valueでテキスト部分も書き換え可能ってわかったけど旧progressのMに相当するオプションはないっぽいのな
2023/07/22(土) 00:04:18.75ID:cqy/jwFL0
キー関係ないやん、みたいな機能ばっかりなんだよな
pythonか何かのモジュールとしてキー周りの処理に専念して、
UIとかは別の専門の人に任せた方がいいのでは
pythonか何かのモジュールとしてキー周りの処理に専念して、
UIとかは別の専門の人に任せた方がいいのでは
2023/07/22(土) 01:06:33.01ID:BF/oMHO40
ネットワークが接続されたのを検知してからアイコンを変更したいのですが
何か良い方法ないでしょうか?
runwait,netsh interface set interface Ethernet0 enabled, , Hide
Menu, Tray, Icon, C:\Windows\System32\imageres.dll,363
何か良い方法ないでしょうか?
runwait,netsh interface set interface Ethernet0 enabled, , Hide
Menu, Tray, Icon, C:\Windows\System32\imageres.dll,363
2023/07/22(土) 12:40:55.43ID:OFupoZqF0
>>314
runcmdライブラリ使ってpingの結果をregexmatchでifってTrayIcon libraryで変更すれば簡単に実装できそうだけど、わざわざAHK使わずともpython使ったら?という要望がこのスレでは多い気がする
runcmdライブラリ使ってpingの結果をregexmatchでifってTrayIcon libraryで変更すれば簡単に実装できそうだけど、わざわざAHK使わずともpython使ったら?という要望がこのスレでは多い気がする
2023/07/22(土) 13:20:04.61ID:BF/oMHO40
for文で値を確認すればよいだけでしたねスミマセン
2023/07/26(水) 09:56:13.42ID:GfKX9CCz0
AHK v2ってstaticメソッドの中からthisでクラスを参照できたんだ
知らずにずっとクラス名をベタ書きしてた
変わった仕様だが便利だな
知らずにずっとクラス名をベタ書きしてた
変わった仕様だが便利だな
2023/07/26(水) 20:07:05.52ID:wblL14z/0
v1からv2の移行の大半は機械的な置き換えだから、自動化できるわな
https://github.com/mmikeww/AHK-v2-script-converter
https://github.com/mmikeww/AHK-v2-script-converter
2023/07/26(水) 21:34:55.36ID:GfKX9CCz0
移行が面倒くさいから最初のハードルは高いけど
言語としてはv2の方がはるかにマシだから、一度移行したら二度とv1には戻れないな
v1は継ぎ接ぎだらけの奇っ怪な言語だったから
言語としてはv2の方がはるかにマシだから、一度移行したら二度とv1には戻れないな
v1は継ぎ接ぎだらけの奇っ怪な言語だったから
2023/07/26(水) 21:55:31.48ID:5eLaqzDi0
v2はlspが使えるのも便利
2023/07/27(木) 10:19:56.01ID:2+fySodc0
2023/07/27(木) 10:20:55.67ID:2+fySodc0
>>320
LSPとは何でしょうか?
LSPとは何でしょうか?
2023/07/27(木) 18:47:43.09ID:RaNL/EWb0
>>322
Language Server Protocol
コードの解析情報をエディタに提供することで、下記の様な便利機能をエディタ内で使えるようになる仕組み
構文エラーの指摘、入力補完、シグネチャ(関数名や必要な引数や戻り値等の情報)の表示、
関数や変数やクラスメソッドやホットキー等の定義一覧表示およびジャンプ、
スコープ内の変数名を一括変更、自動フォーマット等々
あの関数名は何だっけ、どんな引数が必要だっけ、とわざわざ外部ブラウザでリファレンスを確認し、
それを手動でカタカタ入力とか面倒ですよね。そういうのを少々軽減してくれます
v2用。導入にはLSPに対応したエディタが必要
https://github.com/thqby/vscode-autohotkey2-lsp
今探したらv2限定じゃなくv1のもあった。未使用なので詳細は知らない
https://github.com/helsmy/vscode-autohotkey
Language Server Protocol
コードの解析情報をエディタに提供することで、下記の様な便利機能をエディタ内で使えるようになる仕組み
構文エラーの指摘、入力補完、シグネチャ(関数名や必要な引数や戻り値等の情報)の表示、
関数や変数やクラスメソッドやホットキー等の定義一覧表示およびジャンプ、
スコープ内の変数名を一括変更、自動フォーマット等々
あの関数名は何だっけ、どんな引数が必要だっけ、とわざわざ外部ブラウザでリファレンスを確認し、
それを手動でカタカタ入力とか面倒ですよね。そういうのを少々軽減してくれます
v2用。導入にはLSPに対応したエディタが必要
https://github.com/thqby/vscode-autohotkey2-lsp
今探したらv2限定じゃなくv1のもあった。未使用なので詳細は知らない
https://github.com/helsmy/vscode-autohotkey
2023/07/28(金) 13:40:26.93ID:N9mpyyiM0
ホットキーにCtrlが入ってるとShiftの押し下げが効かなくて困ってます
半角の空白を消した{Shiftdown}の形だと動くのですが、
動くならこの表記でも問題ないでしょうか?
^D::
Send, {Shift down}
Sleep, 2000
Send, {Shift up}
return
半角の空白を消した{Shiftdown}の形だと動くのですが、
動くならこの表記でも問題ないでしょうか?
^D::
Send, {Shift down}
Sleep, 2000
Send, {Shift up}
return
325322
2023/07/28(金) 13:58:40.45ID:hw/bBjue02023/07/29(土) 15:28:44.33ID:0/bV83AT0
マンガミーヤで読んでる時だけ、下カーソルのキーリピートを遅くするとかできる?
2023/07/29(土) 15:40:32.39ID:u+ueY0wx0
できる
まずそのアプリの限定表記を覚えてから
下キーをホットキーとして
キー押下時間を検出して
押している間は任意の感覚で連打
みたいなフロー
ずぶの素人でも一日あれば作れるんじゃないかな
まずそのアプリの限定表記を覚えてから
下キーをホットキーとして
キー押下時間を検出して
押している間は任意の感覚で連打
みたいなフロー
ずぶの素人でも一日あれば作れるんじゃないかな
2023/07/29(土) 15:46:03.68ID:0/bV83AT0
キーリピートって、upなしでdownが連続するんじゃなかったっけ
2023/07/29(土) 16:06:46.65ID:u+ueY0wx0
あるけど
keywaitとかあるんで別に
keywaitとかあるんで別に
2023/07/29(土) 17:49:31.33ID:0/bV83AT0
ゆっくりキーリピートをsleepで実現すると、
sleepしてる間はキーを離しても認識しないので、
手動で連打して一時的に素早く入力しようとしても設定を超えられない
sleepしてる間はキーを離しても認識しないので、
手動で連打して一時的に素早く入力しようとしても設定を超えられない
2023/07/29(土) 18:03:04.96ID:u+ueY0wx0
押下されているか調べて、されていたら
sleepするようにしてみたら?
sleepするようにしてみたら?
2023/07/29(土) 19:02:06.65ID:0/bV83AT0
押しているからsleepしてその間に離してまた押しても無視されるので同じこと
2023/07/29(土) 19:57:46.41ID:oKRVeLg90
簡単にできるけどこの人にレスしたくないな
2023/07/29(土) 20:07:23.41ID:0/bV83AT0
そんなことわざわざ書くような精神構造の人がいるとも思えないので、単純に判らないんでしょ
2023/07/29(土) 21:08:57.18ID:E+GDG1c40
面白い題材だと思ってやってみたらできた
簡単ってほど簡単じゃなかったけど、
難しいことはしなかったから簡単なんだろうな
簡単ってほど簡単じゃなかったけど、
難しいことはしなかったから簡単なんだろうな
2023/07/29(土) 21:19:43.36ID:0/bV83AT0
sleepを使わずにもっと細かい時間単位の周期処理でやらせる方法もあるけど、
タイミングによっていろんな不具合が出そう
タイミングによっていろんな不具合が出そう
2023/07/29(土) 21:32:07.81ID:E+GDG1c40
肝はsleepをどう使うかだと思うからがんばってね
2023/07/29(土) 21:41:19.98ID:NE5aMCff0
2023/08/01(火) 05:06:51.46ID:u4ROO/up0
windowsのALT + F4みたいにウインドウ外をクリックすると閉じるGUIにしたいのですが
なにか簡単に実装できる関数があるのでしょうか?
なにか簡単に実装できる関数があるのでしょうか?
2023/08/01(火) 06:12:22.99ID:LeIBHMIx0
alt-F4をキャンセルしたい時はesc
クリックでもいいけどそもそもマウス使わずに済ませたい人用の機能だし、
元のフォーカスも失ってしまう
クリックでもいいけどそもそもマウス使わずに済ませたい人用の機能だし、
元のフォーカスも失ってしまう
2023/08/01(火) 06:36:36.43ID:+AylZDS10
元のフォーカス失ったときにどーこーする、って考えたらできそう
2023/08/01(火) 09:18:46.41ID:D6173uez0
Alt + F4 はどうでも良くて、ウインドウ外をクリックでウインドウを閉じたい
ちゅうことやと思うけれど…… それだと実現したい状況・要件が不十分やろ。
デスクトップ上に単一ウインドウしかなけりゃそれでも良いけれど、複数の
ウインドウがあったらどれを閉じるの?プロセス総ざらいとかやるとタスクバー
タスクトレイ内の常駐系とかも閉じることになるで。
ちゅうことやと思うけれど…… それだと実現したい状況・要件が不十分やろ。
デスクトップ上に単一ウインドウしかなけりゃそれでも良いけれど、複数の
ウインドウがあったらどれを閉じるの?プロセス総ざらいとかやるとタスクバー
タスクトレイ内の常駐系とかも閉じることになるで。
2023/08/01(火) 09:34:34.97ID:NSGjAKJ50
ウインドウ外をクリックでウインドウを閉じるGUI
つうことで作ってみた(非アクティブになったら閉じる訳ではない)
#NoTrayIcon
Gui, New, +HwndMyGuiHwnd, テストタイトル
Gui, Add, Text, x-0 y-0 w130 h30, テストテキスト
Gui, Show, x200 y100 h150 w250
Return
GuiClose:
ExitApp
~LButton::
MouseGetPos, , , Hwnd
if (Hwnd != MyGuiHwnd) {
gosub, GuiClose
}
Return
つうことで作ってみた(非アクティブになったら閉じる訳ではない)
#NoTrayIcon
Gui, New, +HwndMyGuiHwnd, テストタイトル
Gui, Add, Text, x-0 y-0 w130 h30, テストテキスト
Gui, Show, x200 y100 h150 w250
Return
GuiClose:
ExitApp
~LButton::
MouseGetPos, , , Hwnd
if (Hwnd != MyGuiHwnd) {
gosub, GuiClose
}
Return
2023/08/01(火) 12:21:58.81ID:pJ50EAS30
Alt+Tabの言い間違いじゃなくって
2023/08/01(火) 14:20:10.82ID:D6173uez0
ああ「Alt + Tab」か、それなら GUI の意味も分かるわw
347339
2023/08/01(火) 21:57:06.37ID:u4ROO/up0 やりたいのはALT + F4で出てくるwindowsのシャットダウンというウインドウのように
ウインドウ外をクリックすると閉じるGUIにしたいということです
>>344
左だけでなく中、右クリでもこのウインドウは閉じるので何か一括で楽な方法があるのかなと思った次第です
もう少し自分で考えてみますありがとうございました
ウインドウ外をクリックすると閉じるGUIにしたいということです
>>344
左だけでなく中、右クリでもこのウインドウは閉じるので何か一括で楽な方法があるのかなと思った次第です
もう少し自分で考えてみますありがとうございました
2023/08/02(水) 10:22:25.49ID:qZ0rgwh10
奇天烈な発想は玄人から出てこんので、もっとやれwwwおもしれー
2023/08/02(水) 13:03:59.93ID:75suMALx0
タッチパネルでウィンドウの外をタップすると
そのウィンドウが消えるというのはあると思う
そのウィンドウが消えるというのはあると思う
2023/08/02(水) 13:07:04.26ID:a9LlfJ7o0
web広告によくあるUI
2023/08/02(水) 14:39:20.58ID:6XD1QhP70
352名無しさん@お腹いっぱい。
2023/08/07(月) 15:18:37.47ID:z0wbPqBa0 #InstallMouseHook
~RButton::
KeyWait, RButton, T1
if (ErrorLevel)
{
While GetKeyState("RButton", "P")
{
Click
Sleep, 20
}
}
else if GetKeyState("WheelDown", "P")
{
Sleep 1000
Click
}
else
{
Send, {Escape}
}
return
GetKeyStateを使ってホイール回転を検出しようとすると、ホイールを回した瞬間からずっとOnが返ってくる状態になってしまう。
GPTで調べても的外れな回答しか返ってこない
わかる人誰かタスケテT〜T
~RButton::
KeyWait, RButton, T1
if (ErrorLevel)
{
While GetKeyState("RButton", "P")
{
Click
Sleep, 20
}
}
else if GetKeyState("WheelDown", "P")
{
Sleep 1000
Click
}
else
{
Send, {Escape}
}
return
GetKeyStateを使ってホイール回転を検出しようとすると、ホイールを回した瞬間からずっとOnが返ってくる状態になってしまう。
GPTで調べても的外れな回答しか返ってこない
わかる人誰かタスケテT〜T
353名無しさん@お腹いっぱい。
2023/08/07(月) 16:07:59.97ID:z0wbPqBa0 右クリックを長押しするとクリック連打、右クリックを押しながらホイールダウンでクリック、
それ以外はエスケープになるというスクリプトです。
分けて書くと別々に動いてしまうのでそれを避けるようにしています。
それ以外はエスケープになるというスクリプトです。
分けて書くと別々に動いてしまうのでそれを避けるようにしています。
2023/08/07(月) 16:27:38.76ID:AjxfGTno0
>>352
確かにそういう挙動をしめすね。ただ、
Hotkeys - Definition & Usage | AutoHotkey
https://www.autohotkey.com/docs/v1/Hotkeys.htm#Wheel
> Finally, since mouse wheel hotkeys generate only down-events
> (never up-events), they cannot be used as key-up hotkeys.
という記述が何か関係しているのかも。
もしくは(この記述絡みで)一度ホイールを動かすとAHKの内部的なフラグが
立ちっぱなしになっている?
確かにそういう挙動をしめすね。ただ、
Hotkeys - Definition & Usage | AutoHotkey
https://www.autohotkey.com/docs/v1/Hotkeys.htm#Wheel
> Finally, since mouse wheel hotkeys generate only down-events
> (never up-events), they cannot be used as key-up hotkeys.
という記述が何か関係しているのかも。
もしくは(この記述絡みで)一度ホイールを動かすとAHKの内部的なフラグが
立ちっぱなしになっている?
2023/08/07(月) 16:37:16.17ID:AjxfGTno0
なんか既視感があるなぁ、と思ったらワシも右クリック&ホイールアップ・
ダウンなスクリプトを組んだことあるわw
そのときは
~RButton & WheelUp::
~RButton & WheelDown::
でやってたな。
他に
WheelUp::
WheelDown::
と
~RButton::
なホットキースクリプトも同時にやってたけど、誤爆した記憶はないな。
全部 MouseGetPos で位置と id を取得して、それを以て処理してる。
ダウンなスクリプトを組んだことあるわw
そのときは
~RButton & WheelUp::
~RButton & WheelDown::
でやってたな。
他に
WheelUp::
WheelDown::
と
~RButton::
なホットキースクリプトも同時にやってたけど、誤爆した記憶はないな。
全部 MouseGetPos で位置と id を取得して、それを以て処理してる。
356名無しさん@お腹いっぱい。
2023/08/07(月) 17:00:56.80ID:z0wbPqBa0 自分も最初
~RButton::
~RButton & WheelUp::
~RButton & WheelDown::
でやってたんですが、それだと右クリックを離した瞬間に
~RButton::が動き出してしまうんですよね……
無効にしたり同時に動かなくする処理があればいいんですが;。;
~RButton::
~RButton & WheelUp::
~RButton & WheelDown::
でやってたんですが、それだと右クリックを離した瞬間に
~RButton::が動き出してしまうんですよね……
無効にしたり同時に動かなくする処理があればいいんですが;。;
2023/08/07(月) 18:56:52.04ID:AjxfGTno0
>>356
離した時じゃなくて押した時ちゃう?右クリで ~RButton:: へ行って、
同時にホイールを触ると~RButton & WheelUp/Down:: が動き出す。
ワシの場合は、~RButton:: の処理内容が右ダブルクリック。
設定時間内にダブルクリックを検出しなければ何もせずに終了、と
していたので特に問題は起きていない。
そこまでテストコードを書いていないからできるかどうか自信ないけれど、
~RButton:: 内に WheelUp/Down のチェックを入れるとかで
回避できそうではある。
離した時じゃなくて押した時ちゃう?右クリで ~RButton:: へ行って、
同時にホイールを触ると~RButton & WheelUp/Down:: が動き出す。
ワシの場合は、~RButton:: の処理内容が右ダブルクリック。
設定時間内にダブルクリックを検出しなければ何もせずに終了、と
していたので特に問題は起きていない。
そこまでテストコードを書いていないからできるかどうか自信ないけれど、
~RButton:: 内に WheelUp/Down のチェックを入れるとかで
回避できそうではある。
358名無しさん@お腹いっぱい。
2023/08/08(火) 00:02:10.85ID:2tx9nkkk0 ~RButton::
KeyWait, RButton, T1
If (ErrorLevel)
{
While GetKeyState("RButton", "P")
{
Click
Sleep, 20
}
}
else
{
Send, {Escape}
}
return
~RButton & WheelUp::
{
Sleep, 500
Click
}
return
~RButton & WheelDown::
{
Sleep, 1000
Click
}
return
処理内容は簡略化されてますがこんな感じです。
右クリックしながらホイールを動かすとクリックが処理されて、その後右クリックを離した所でエスケープが入力されてしまいます。
それを防ぐために~RButton::の中でホイール状態を取得しようとした結果>>352。それぞれを独立して動作させたいのですが無理なんでしょうか(ヽ´ω`)
KeyWait, RButton, T1
If (ErrorLevel)
{
While GetKeyState("RButton", "P")
{
Click
Sleep, 20
}
}
else
{
Send, {Escape}
}
return
~RButton & WheelUp::
{
Sleep, 500
Click
}
return
~RButton & WheelDown::
{
Sleep, 1000
Click
}
return
処理内容は簡略化されてますがこんな感じです。
右クリックしながらホイールを動かすとクリックが処理されて、その後右クリックを離した所でエスケープが入力されてしまいます。
それを防ぐために~RButton::の中でホイール状態を取得しようとした結果>>352。それぞれを独立して動作させたいのですが無理なんでしょうか(ヽ´ω`)
2023/08/09(水) 03:34:35.28ID:xviYZMnK0
MouseGestureLなら簡単に出来そうだから本家でも出来るんじゃね
2023/08/09(水) 18:25:52.85ID:syUydIU00
スレッド周りの設定を変にいじってなければ
こんな感じで希望しているような動作になると思う
~RButton & WheelUp::IsWheelUp := True
~RButton & WheelDown::IsWheelDown := True
~RButton::
IsWheelUp := IsWheelDown := False
KeyWait, RButton, T1
if(IsWheelUp){
ToolTip, WheelUp
}else if(IsWheelDown){
ToolTip, WheelDown
}else if(ErrorLevel){
While(GetKeyState("RButton", "P")){
a++
ToolTip, % a
Sleep, 20
}
}else{
ToolTip, Escape
}
return
こんな感じで希望しているような動作になると思う
~RButton & WheelUp::IsWheelUp := True
~RButton & WheelDown::IsWheelDown := True
~RButton::
IsWheelUp := IsWheelDown := False
KeyWait, RButton, T1
if(IsWheelUp){
ToolTip, WheelUp
}else if(IsWheelDown){
ToolTip, WheelDown
}else if(ErrorLevel){
While(GetKeyState("RButton", "P")){
a++
ToolTip, % a
Sleep, 20
}
}else{
ToolTip, Escape
}
return
361名無しさん@お腹いっぱい。
2023/08/12(土) 00:09:18.32ID:O1uhjaQy02023/08/12(土) 00:12:17.13ID:bDvu5aai0
タブキーを押しながら C キーを押したのを
4に割り当てるにはどのように書けばいいんでしょうか?
4に割り当てるにはどのように書けばいいんでしょうか?
2023/08/12(土) 00:16:11.70ID:yq4dIsr+0
普通に入力されるキーをモディファイアにするんじゃない
2023/08/12(土) 06:13:36.00ID:nmj8+2WF0
"A"で指定してるのに
Error: Target window not found.
になるのは何なんだろう
Error: Target window not found.
になるのは何なんだろう
2023/08/12(土) 11:15:30.71ID:pQJSgS+a0
A じゃなく "A" で指定してるからじゃね?
実際のスクリプト見てないから分からんけど
実際のスクリプト見てないから分からんけど
2023/08/12(土) 11:32:35.55ID:nmj8+2WF0
"A"で合ってる
大半は動いて特定のウィンドウだけエラーになる
大半は動いて特定のウィンドウだけエラーになる
2023/08/12(土) 11:48:12.98ID:LsOfcGj10
だから"を抜けという話なの
2023/08/12(土) 11:57:58.01ID:ZMeXwxNY0
よかれと思って分かりやすい表記をするのはコード実行において難しい問題よね
若い頃コマンドラインの-- <set numbers>の<>を入れなくていいの解らず一日溶かしたことある
若い頃コマンドラインの-- <set numbers>の<>を入れなくていいの解らず一日溶かしたことある
2023/08/12(土) 12:07:58.71ID:nmj8+2WF0
"を抜くと
Warning: This variable appears to never be assigned a value.
そもそも実行できない
Warning: This variable appears to never be assigned a value.
そもそも実行できない
2023/08/12(土) 12:10:30.17ID:D5LFJTyY0
具体的に書かない奴はスルー
2023/08/12(土) 13:07:33.77ID:nmj8+2WF0
要は、アクティブウィンドウが無い、という状態になっている
そんなことはあるのか?
そんなことはあるのか?
2023/08/12(土) 16:33:19.42ID:srAYYviQ0
Release v2.0.5 · AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.5
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.5
2023/08/13(日) 10:31:50.59ID:dS54wA3a0
https://www.autohotkey.com からv1.1落とそうとするとボタンが [Download v1.1 (deprecated)]となってるな、初めて気づいた
https://www.autohotkey.com/download/ の方は特に変わった様子無いけどv1.1はもう打ち止めってことかなあ(´・ω・`)
https://www.autohotkey.com/download/ の方は特に変わった様子無いけどv1.1はもう打ち止めってことかなあ(´・ω・`)
2023/08/13(日) 23:17:51.19ID:wbZBZ9Ux0
アナウンスされてから半年以上たつ気がするけど
2023/08/15(火) 09:46:17.85ID:RO47lguz0
メニューを開いた瞬間に何故かフォーカスが外れて操作できないことがたまにあるけど、
何が原因なんだろう
何が原因なんだろう
2023/08/16(水) 03:18:07.49ID:L2eBlJqO0
>>371
ループで状態を取得しつづけていると、
たまにそのようなアクティブウィンドウがないかのような状態になることはありますね…
2.0にして気がついたんだけど、多分1.1の時はエラーにはならずに適当に済ませられていたのが、
厳密にエラーをスローするようになったという感じな気がする
そして"A"とAの違いは2.0と1.1の違いではないですかね
ループで状態を取得しつづけていると、
たまにそのようなアクティブウィンドウがないかのような状態になることはありますね…
2.0にして気がついたんだけど、多分1.1の時はエラーにはならずに適当に済ませられていたのが、
厳密にエラーをスローするようになったという感じな気がする
そして"A"とAの違いは2.0と1.1の違いではないですかね
2023/08/16(水) 06:23:05.41ID:B5Recerj0
"A"を参照する前にメニューを出しているので、メニューが閉じてから直前にアクティブだったウィンドウが
再びアクティブに戻るまでに一瞬の間がある
参照する前に一瞬sleepを入れるとエラーにならなくなった
再びアクティブに戻るまでに一瞬の間がある
参照する前に一瞬sleepを入れるとエラーにならなくなった
2023/08/18(金) 11:43:00.99ID:oTZ9q3EL0
メニューを2つ作っていて、片方は頻繁にフォーカスが外れるけど、もうひとつは外れたことがない
やってることは大差ないのに何が違うんだろう
やってることは大差ないのに何が違うんだろう
2023/08/18(金) 12:04:12.80ID:Q7ZhVJTA0
いいかげん独り言は余所でやれ
2023/08/18(金) 12:14:34.24ID:6chi+Qaa0
頑なにスクリプトを見せるの拒む限り自己解決するしかないだろうな
2023/08/18(金) 12:19:24.68ID:6chi+Qaa0
んんーなんかこのスレというか5ch重いような…書き込みボタン押してからページ反映まで5,6秒ほど掛かるう、オマ環かなあ(´・ω・`)
独り言スマン
独り言スマン
2023/08/18(金) 12:21:11.45ID:6chi+Qaa0
2023/08/18(金) 13:29:28.79ID:MXhu+9P00
>>381
今日遅いね
今日遅いね
2023/08/18(金) 13:41:02.30ID:oTZ9q3EL0
コードさえ見れば解決できるという自身はどこから出てくるんだ
解決できずに別スクリプトを起動してマウスでクリックしてフォーカスを戻してる人もいるくらいで、
多分今も直ってないahkのバグなんだろう
知りたいのは回避方法ではなく原因
解決できずに別スクリプトを起動してマウスでクリックしてフォーカスを戻してる人もいるくらいで、
多分今も直ってないahkのバグなんだろう
知りたいのは回避方法ではなく原因
2023/08/18(金) 13:51:37.99ID:yGxZYDcS0
5chは攻撃受けてるから重い
2023/08/18(金) 13:54:35.13ID:yGxZYDcS0
2023/08/18(金) 14:02:47.28ID:oTZ9q3EL0
ああ、menuね、あれはどうやっても駄目だったよ、とか、
こういう上手い方法があったよとか、知見のある人が反応すればいいんだよ
何も情報を持ってないのにとにかく何か回答しなければという質問スレによく巣食ってる癌は、
S/N比下げるだけなのでミュートしてて欲しい
こういう上手い方法があったよとか、知見のある人が反応すればいいんだよ
何も情報を持ってないのにとにかく何か回答しなければという質問スレによく巣食ってる癌は、
S/N比下げるだけなのでミュートしてて欲しい
2023/08/18(金) 15:13:36.08ID:HkO0/SET0
2023/08/18(金) 15:36:46.27ID:Z7SU+ZYe0
2023/08/19(土) 19:26:49.91ID:37zB30Y00
winキーとか何かが押しっぱなしになって、押して離してをやっても直らなくて、
一旦ahkを終了して再度立ち上げないとどうしようもない、というケースにたまに遭遇する
その手続き自体をahkからやれないもんか
一旦ahkを終了して再度立ち上げないとどうしようもない、というケースにたまに遭遇する
その手続き自体をahkからやれないもんか
2023/08/19(土) 19:52:39.80ID:PhJHVGEu0
監視させるしかないんじゃないの
down状態が5秒続いたら、強制的にupにするとか
それが利かないくらいバグってたら、スクリプト再起動に移行するとか
明らかにdown状態なのに、up返しちゃうくらいおかしいなら
別のアプローチが必要だけど
down状態が5秒続いたら、強制的にupにするとか
それが利かないくらいバグってたら、スクリプト再起動に移行するとか
明らかにdown状態なのに、up返しちゃうくらいおかしいなら
別のアプローチが必要だけど
2023/08/19(土) 20:03:51.32ID:k3nzvT+I0
>>390
この過去スレにあったやつ(だったかどうかは忘れた)
Alt・Ctrl・Shiftキー押されっぱなし対処.ahk
Send, {Alt Up}{LAlt Up}{RAlt Up}{Ctrl Up}{LCtrl Up}{RCtrl Up}{Shift Up}{LShift Up}{RShift Up}{LWin Up}{RWin Up}{LButton Up}{RButton Up}{MButton Up}
Send, {ESC}
変だなぁと思ったら実行
オレはいつもこれで直してる、常駐してるahkは終了しなくても良いと思うよ
この過去スレにあったやつ(だったかどうかは忘れた)
Alt・Ctrl・Shiftキー押されっぱなし対処.ahk
Send, {Alt Up}{LAlt Up}{RAlt Up}{Ctrl Up}{LCtrl Up}{RCtrl Up}{Shift Up}{LShift Up}{RShift Up}{LWin Up}{RWin Up}{LButton Up}{RButton Up}{MButton Up}
Send, {ESC}
変だなぁと思ったら実行
オレはいつもこれで直してる、常駐してるahkは終了しなくても良いと思うよ
2023/08/19(土) 20:09:59.50ID:37zB30Y00
ESCは何で押すの?
2023/08/19(土) 20:23:47.88ID:37zB30Y00
{RButton Up}が入ってると、右クリックが押されちゃうな
2023/08/20(日) 00:05:33.73ID:uFCBx9Pl0
reboot
2023/08/20(日) 07:46:57.56ID:+NO2vz+70
>>390
その辺のキーが押しっぱになる現象って、CapsLock を Ctrl と入れ替えを
やってるとか?AHK はもちろん PowerToys でやっても起こる(多分、他の
リマップ系でも)。
それならこれがおすすめ。今のところ押しっぱ現象も他の妙な副作用もない。
※ただしキーボードから CapsLock の機能がなくなるw
Ctrl2cap - Sysinternals | Microsoft Learn
https://learn.microsoft.com/ja-jp/sysinternals/downloads/ctrl2cap
その辺のキーが押しっぱになる現象って、CapsLock を Ctrl と入れ替えを
やってるとか?AHK はもちろん PowerToys でやっても起こる(多分、他の
リマップ系でも)。
それならこれがおすすめ。今のところ押しっぱ現象も他の妙な副作用もない。
※ただしキーボードから CapsLock の機能がなくなるw
Ctrl2cap - Sysinternals | Microsoft Learn
https://learn.microsoft.com/ja-jp/sysinternals/downloads/ctrl2cap
2023/08/21(月) 06:52:36.46ID:ynMBgfwj0
おお、MS純正デバイスドライバなんだ
Capsはモディファイアに変更してるけど、定番のChangeKeyでレジストリを変えてる
押しっぱなし現象はみんなフック同士の干渉が原因だと思っていて、根本的には避けられない
デバイスドライバ版ahkみたいなのがシェアウェアで出たら買うのに
現状そういうのはのどか一択で、書きやすさはahk v2が勝ってる
Capsはモディファイアに変更してるけど、定番のChangeKeyでレジストリを変えてる
押しっぱなし現象はみんなフック同士の干渉が原因だと思っていて、根本的には避けられない
デバイスドライバ版ahkみたいなのがシェアウェアで出たら買うのに
現状そういうのはのどか一択で、書きやすさはahk v2が勝ってる
2023/08/26(土) 13:40:30.41ID:e6Z469D70
Sticky Keys対策でShiftやCtrlを押し終わるたびにShiftを5回空打ちさせてる
2023/08/29(火) 15:17:03.33ID:Jbveauwv0
右下ろのキーを押した時_にしたくて
¥::
send,+¥
return
としたのですが変わらず¥で出ます
¥::+¥
としても変わらず
簡単な事だと思うのですが、何故出来ないのかヒント頂けないでしょうか?
よろしくお願いします
¥::
send,+¥
return
としたのですが変わらず¥で出ます
¥::+¥
としても変わらず
簡単な事だと思うのですが、何故出来ないのかヒント頂けないでしょうか?
よろしくお願いします
2023/08/29(火) 15:18:53.87ID:Jbveauwv0
あ、V1です
401399
2023/08/29(火) 15:31:39.18ID:Jbveauwv0 すみません、検索で例を色々見てたら丁度見付かりました
vkE2::_
で出来る様になりました
スレ汚し失礼しました
vkE2::_
で出来る様になりました
スレ汚し失礼しました
2023/08/29(火) 15:32:11.68ID:X8K0rgTu0
\は右上のキーだからろの方はキーコードで指定しないとダメ
sc073::_
sc073::_
2023/08/30(水) 17:19:47.77ID:Ryl/SOdu0
Release v2.0.6 · AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.6
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.6
2023/08/30(水) 18:11:41.37ID:oxpZC/QU0
v2.0.6
2023/08/31(木) 22:40:51.14ID:vlAyug6p0
yキーを押してもSend, abcが送信されません。
何が駄目なんでしょうか。
Send, abcの処理はsub.ahk側でしたいです。
;main.ahk------------------
global test
y::
Sleep, 1000
test := "yes"
Sleep, 1000
Return
;sub.ahk------------------
#Persistent
#Include main.ahk
SetTimer, mitukeru, 100
mitukeru:
if (test = "yes") {
Send, abc
}
Return
何が駄目なんでしょうか。
Send, abcの処理はsub.ahk側でしたいです。
;main.ahk------------------
global test
y::
Sleep, 1000
test := "yes"
Sleep, 1000
Return
;sub.ahk------------------
#Persistent
#Include main.ahk
SetTimer, mitukeru, 100
mitukeru:
if (test = "yes") {
Send, abc
}
Return
2023/09/01(金) 02:23:36.87ID:6AcEfkHF0
y::
を見てみなよ
処理内容は、ただ代入しているだけだ
次にSetTimerでサブルーチンに飛ばさないと
ただこのタイマーいつ終わるの?
終了処理が何もないようだけど
を見てみなよ
処理内容は、ただ代入しているだけだ
次にSetTimerでサブルーチンに飛ばさないと
ただこのタイマーいつ終わるの?
終了処理が何もないようだけど
2023/09/01(金) 07:19:25.96ID:qhzzshke0
会社のノートPCにmenuキーが無いのが不便すぎる
フリーソフトとか禁止なので、regeditだけで解決したった
フリーソフトとか禁止なので、regeditだけで解決したった
2023/09/01(金) 07:37:42.70ID:dbcMt4Cv0
>>408
スレ違い
スレ違い
2023/09/01(金) 12:03:41.12ID:fxBmgcCa0
2023/09/01(金) 12:08:50.00ID:fxBmgcCa0
すみません。まだ出来てないかもです。
がんばってみます。
がんばってみます。
2023/09/01(金) 12:12:26.82ID:qhzzshke0
っていうか、複数のahk間でプロセス間通信しようとしてるんでしょ
そんなの無理だよ
そんなの無理だよ
2023/09/01(金) 12:33:22.63ID:YJ2o2ktm0
幾つか突っ込みどころあるが、とりあえず #Include行の位置が悪いな
まあ、#Include行の位置を直しただけじゃまともに動かん…と言うか変数「test」をクリアする行を加えないと暴走するよ
まあ、#Include行の位置を直しただけじゃまともに動かん…と言うか変数「test」をクリアする行を加えないと暴走するよ
2023/09/01(金) 12:39:44.02ID:fxBmgcCa0
2023/09/01(金) 12:43:11.43ID:fxBmgcCa0
2023/09/01(金) 12:44:19.26ID:6AcEfkHF0
sub.ahkってのをライブラリとして使ってるんじゃないの?
includeが逆でなんだかなあって感じだけど
本来は関数化した方が遥かに融通性が高いんだけど
まあ学習の順序があるから
includeが逆でなんだかなあって感じだけど
本来は関数化した方が遥かに融通性が高いんだけど
まあ学習の順序があるから
2023/09/01(金) 12:57:45.45ID:qhzzshke0
includeするならプロセスは1つだけど
両方動かすんじゃないの?
両方動かすんじゃないの?
2023/09/01(金) 19:29:28.33ID:aCFUmNnL0
v2で
a := 1
b := &a
%b% := 2
と同じように
tmp := {a:1}
b := &tmp.a
%b% := 2
でbにtmp.aのVarRefがほしいんだけど&tmp.aでエラーが出ちゃう
これどうやったらいいの?
a := 1
b := &a
%b% := 2
と同じように
tmp := {a:1}
b := &tmp.a
%b% := 2
でbにtmp.aのVarRefがほしいんだけど&tmp.aでエラーが出ちゃう
これどうやったらいいの?
2023/09/01(金) 20:46:26.25ID:0/jYgXFo0
>>418
直接にはできない。
関数 - 定義と使用法|AutoHotkey v2
https://ahkscript.github.io/ja/docs/v2/Functions.htm#ByRef
直接にはできない。
関数 - 定義と使用法|AutoHotkey v2
https://ahkscript.github.io/ja/docs/v2/Functions.htm#ByRef
2023/09/01(金) 21:17:49.17ID:aCFUmNnL0
>>419
仕様でできなかったんですね
オブジェクトの方を持ち歩くようにします
ありがとうございました
> 既知の制限事項:
> オブジェクトのプロパティ(foo.barなど)やA_Clipboardなどの 組み込み変数に対してVarRefを構成することはできないので、これらをByRefで渡すことはできない。
仕様でできなかったんですね
オブジェクトの方を持ち歩くようにします
ありがとうございました
> 既知の制限事項:
> オブジェクトのプロパティ(foo.barなど)やA_Clipboardなどの 組み込み変数に対してVarRefを構成することはできないので、これらをByRefで渡すことはできない。
2023/09/02(土) 17:26:28.26ID:xDVNYmLx0
何か V2.0.4/2.0.6 でエンバグしてるんやって。
スクリプトが動かんようになったって人はアップデートしてみるのも手。
Release v2.0.7 · AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.7
スクリプトが動かんようになったって人はアップデートしてみるのも手。
Release v2.0.7 · AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.7
2023/09/02(土) 18:33:36.19ID:X8oxdeT80
v2.0.7
2023/09/03(日) 14:39:01.92ID:dL6VhtA+0
ヒアドキュメントの仕様が変わってわけわからん
ver.1の頃は
MsgBox, % "
(
さて、
あなたのバージョンは 「" A_AhkVersion "」ですわね。
オホホ
)"
でよかったのがver.2になってから
MsgBox("
(
さて、
あなたのバージョンは「
)"A_AhkVersion "
(
」ですわね。
オホホ
)")
とかしないといけなくなって可読性がー
ver.1の頃は
MsgBox, % "
(
さて、
あなたのバージョンは 「" A_AhkVersion "」ですわね。
オホホ
)"
でよかったのがver.2になってから
MsgBox("
(
さて、
あなたのバージョンは「
)"A_AhkVersion "
(
」ですわね。
オホホ
)")
とかしないといけなくなって可読性がー
2023/09/03(日) 15:01:38.43ID:8zusJ6RA0
理解しているのにわけわからん
とは、どういうことなのか?
長文の文字列は変数に格納するのが通例なんで
関数化されたmsgboxに直接使わなければいいんじゃね
とは、どういうことなのか?
長文の文字列は変数に格納するのが通例なんで
関数化されたmsgboxに直接使わなければいいんじゃね
2023/09/03(日) 15:20:17.21ID:0KBNlEKj0
v2 仕様やとこんな感じやろ(場合よって「"」の位置に気を使う必要がある)。
MsgBox "
(
Here Document,
HERE!!!
)"
MsgBox "
(
Here Document,
HERE!!!
)"
2023/09/03(日) 15:31:18.57ID:Xi/Z1aW+0
改行が意味持ってたり、括弧無しでもokだったり、未だに古臭い
v3に期待
v3に期待
2023/09/03(日) 15:39:07.37ID:0KBNlEKj0
変数絡みやとちょっと面倒くさいことになるかな?
%VarRef% なパターンやと埋め込めるみたいやけど。
MsgBox "
(
AutoHotkey version is`s
)" A_AhkVersion "
(
.
Here Document,
HERE!!!
)"
%VarRef% なパターンやと埋め込めるみたいやけど。
MsgBox "
(
AutoHotkey version is`s
)" A_AhkVersion "
(
.
Here Document,
HERE!!!
)"
2023/09/03(日) 16:01:47.82ID:0KBNlEKj0
ああ、v2 やと %VarRef% も埋め込まれへんみたい。
2023/09/03(日) 16:48:50.59ID:dL6VhtA+0
いやMsgBoxとの取り合わせが悪いとかじゃなくて
式を埋め込めなくなってるのが個人的に致命傷
%VarRef%もだめだしさ
あとオプション周りの挙動がだいぶ変わったように見えて混乱中
式を埋め込めなくなってるのが個人的に致命傷
%VarRef%もだめだしさ
あとオプション周りの挙動がだいぶ変わったように見えて混乱中
2023/09/03(日) 17:16:51.07ID:dL6VhtA+0
ヒアドキュメントに式を埋め込めて、実際に表示されるメッセージを想像しやすいのがよかったのに…
できるっぽい説明あったけど、実際の書き方がまるで理解できなかったし、いま読み返すと全然別の説明っぽい
> If ( or ) appears in the options of a potential continuation section (other than as part of the Join option), the overall line is not interpreted as the start of a continuation section. In other words, lines like (x.y)() and (x=y) && z() are interpreted as expressions. A multi-line expression can also begin with an open-parenthesis at the start of a line, provided that there is at least one other ( or ) on the first physical line. For example, the entire expression could be enclosed with (( ... )).
> ( or ): If an opening or closing parenthesis appears to the right of the initial opening parenthesis (except as a parameter of the Join option), the line is reinterpreted as an expression instead of the beginning of a continuation section. This enables expressions like (x.y)[z]() to be used at the start of a line, and also allows multi-line expressions to start with a line like (( or (MyFunc(.
そしてこういうのに限ってサンプルがない。詰んだ。寝る
できるっぽい説明あったけど、実際の書き方がまるで理解できなかったし、いま読み返すと全然別の説明っぽい
> If ( or ) appears in the options of a potential continuation section (other than as part of the Join option), the overall line is not interpreted as the start of a continuation section. In other words, lines like (x.y)() and (x=y) && z() are interpreted as expressions. A multi-line expression can also begin with an open-parenthesis at the start of a line, provided that there is at least one other ( or ) on the first physical line. For example, the entire expression could be enclosed with (( ... )).
> ( or ): If an opening or closing parenthesis appears to the right of the initial opening parenthesis (except as a parameter of the Join option), the line is reinterpreted as an expression instead of the beginning of a continuation section. This enables expressions like (x.y)[z]() to be used at the start of a line, and also allows multi-line expressions to start with a line like (( or (MyFunc(.
そしてこういうのに限ってサンプルがない。詰んだ。寝る
2023/09/03(日) 18:24:58.98ID:lC0PTvot0
>>423
Format関数使えば多少見やすくなるかも
MsgBox(Format("
(
さて、
あなたのバージョンは「{1}」ですわね。
オホホ、{2}年ですわ。
)", A_AhkVersion, A_YYYY))
Format関数使えば多少見やすくなるかも
MsgBox(Format("
(
さて、
あなたのバージョンは「{1}」ですわね。
オホホ、{2}年ですわ。
)", A_AhkVersion, A_YYYY))
2023/09/03(日) 18:46:21.42ID:Xi/Z1aW+0
pythonでf文字列の実装が妙に遅かったのと同様に、
なんか埋め込むのを嫌う風習があるんだよな
便利なのはperlとかでとっくに判ってたのに
なんか埋め込むのを嫌う風習があるんだよな
便利なのはperlとかでとっくに判ってたのに
2023/09/03(日) 21:59:50.39ID:PW2pKi2Q0
2系の押しっぱ病はいつになったら治るんだ…
2023/09/03(日) 22:09:25.95ID:0KBNlEKj0
2023/09/03(日) 22:14:39.29ID:Xi/Z1aW+0
なんでもないビュアーがすごい行儀悪くキーをフックしてるみたいで、
それを起動した状態で他のソフトを使うと高確率で押しっぱなしになる
開いたまま他のことをしない、しか回避方法が無い
それを起動した状態で他のソフトを使うと高確率で押しっぱなしになる
開いたまま他のことをしない、しか回避方法が無い
2023/09/03(日) 22:38:34.74ID:8zusJ6RA0
そういうアプリはどんどん名前出していこうぜ
情報共有してこその掲示板なわけだし
情報共有してこその掲示板なわけだし
2023/09/04(月) 12:28:15.52ID:K09FILDQ0
epubビュアーのKinoppyだけどね
ahkからKinoppyを何か制御するでもなく、ただいるだけでいろいろおかしくなる
ahkからKinoppyを何か制御するでもなく、ただいるだけでいろいろおかしくなる
2023/09/04(月) 21:28:18.16ID:dQWiiGqe0
>>437 解決の参考にならんかもだが、Kinoppyをインストールして俺環で常駐しているMyScriptに下記のホットキーを追加し
メインアプリとビューアー起動した状態で他のアプリ色々起動したり、しばらく別のことやってたけど特に問題は発生しなかった
問題になりそうな点をあげるとclass名が独特でGUID部分が起動毎に変わるのと
ビューアーの方はExplorer等と同様にahk_exeではhwndが取得できなかったくらい
なのでこれらを含めたウィンドウ指定を直接じゃなくてもGroupやExcludeTitleなんかで行っているとおかしくなる
そうでないなら残念ながらおま環の可能性が高い
; 俺環での関係ありそうな設定
SetTitleMatchMode("RegEx")
InstallKeybdHook()
InstallMouseHook()
A_MenuMaskKey := "vkFF"
return
; メインアプリ
; Kinoppy for Windows
; ahk_class HwndWrapper[Kinoppy.exe;;feff14f8-8819-45a6-9cc5-5edbb2951528]
; ahk_exe Kinoppy.exe
#HotIf WinActive("Kinoppy for Windows ahk_class HwndWrapper\[Kinoppy.exe;; ahk_exe Kinoppy.exe")
XButton1:: MsgBox(WinGetTitle("A"))
LCtrl:: MsgBox(WinGetTitle("A"))
#HotIf
; ビューアー 本は最初から付いてた奴
; [1/160] scripta 18号(2011年冬号、紀伊國屋書店
; ahk_class HwndWrapper[Viewer20.exe;;5f512ab6-52a1-4bc8-8445-abdb7c67f500]
; ahk_exe Viewer20.exe
#HotIf WinActive("ahk_class HwndWrapper\[Viewer20.exe;;")
XButton1:: MsgBox(WinGetTitle("A"))
LCtrl:: MsgBox(WinGetTitle("A"))
#HotIf
メインアプリとビューアー起動した状態で他のアプリ色々起動したり、しばらく別のことやってたけど特に問題は発生しなかった
問題になりそうな点をあげるとclass名が独特でGUID部分が起動毎に変わるのと
ビューアーの方はExplorer等と同様にahk_exeではhwndが取得できなかったくらい
なのでこれらを含めたウィンドウ指定を直接じゃなくてもGroupやExcludeTitleなんかで行っているとおかしくなる
そうでないなら残念ながらおま環の可能性が高い
; 俺環での関係ありそうな設定
SetTitleMatchMode("RegEx")
InstallKeybdHook()
InstallMouseHook()
A_MenuMaskKey := "vkFF"
return
; メインアプリ
; Kinoppy for Windows
; ahk_class HwndWrapper[Kinoppy.exe;;feff14f8-8819-45a6-9cc5-5edbb2951528]
; ahk_exe Kinoppy.exe
#HotIf WinActive("Kinoppy for Windows ahk_class HwndWrapper\[Kinoppy.exe;; ahk_exe Kinoppy.exe")
XButton1:: MsgBox(WinGetTitle("A"))
LCtrl:: MsgBox(WinGetTitle("A"))
#HotIf
; ビューアー 本は最初から付いてた奴
; [1/160] scripta 18号(2011年冬号、紀伊國屋書店
; ahk_class HwndWrapper[Viewer20.exe;;5f512ab6-52a1-4bc8-8445-abdb7c67f500]
; ahk_exe Viewer20.exe
#HotIf WinActive("ahk_class HwndWrapper\[Viewer20.exe;;")
XButton1:: MsgBox(WinGetTitle("A"))
LCtrl:: MsgBox(WinGetTitle("A"))
#HotIf
2023/09/05(火) 23:11:23.66ID:uAjrKV030
質問なのですが ctrl+マウス左クリック で 左クリック を送りたいのですが
^lbutton::
mouseclick,left, , , , 0
return
と書いても左クリック単発ではなくctrl+左クリックになってしまいます
どのように書けばいいですか?
^lbutton::
mouseclick,left, , , , 0
return
と書いても左クリック単発ではなくctrl+左クリックになってしまいます
どのように書けばいいですか?
2023/09/05(火) 23:27:03.44ID:fMQvsfZE0
Send,{LButton}
2023/09/05(火) 23:29:11.87ID:08fzEwC60
>>439
MouseClick - Syntax & Usage | AutoHotkey
https://www.autohotkey.com/docs/v1/lib/MouseClick.htm
MouseClick - Syntax & Usage | AutoHotkey
https://www.autohotkey.com/docs/v1/lib/MouseClick.htm
2023/09/05(火) 23:50:46.44ID:uAjrKV030
>>440, 441
ありがとうございます
試したところそのスクリプトでだいたいは上手くいくのですが10回に1回ぐらいはctrl+左クリックになります
具体的にはブラウザのリンクをこのスクリプトをオンにしてctrl+左クリックするとだいたいは元のタブで開くのですが
10回に1回くらいは別タブで開いてしまいます(左クリックだと元タブでリンクが開き、ctrl+左クリックだと別タブで開く)。
これを防止するためにも ^lbutton:: の開始から終了までは強制的にctrlを押していない状態に出来ないでしょうか?
ありがとうございます
試したところそのスクリプトでだいたいは上手くいくのですが10回に1回ぐらいはctrl+左クリックになります
具体的にはブラウザのリンクをこのスクリプトをオンにしてctrl+左クリックするとだいたいは元のタブで開くのですが
10回に1回くらいは別タブで開いてしまいます(左クリックだと元タブでリンクが開き、ctrl+左クリックだと別タブで開く)。
これを防止するためにも ^lbutton:: の開始から終了までは強制的にctrlを押していない状態に出来ないでしょうか?
2023/09/05(火) 23:57:06.56ID:U/8+P8mP0
クリックする前に
Send {Ctrl Up}
でも書いておけば?
うまくいくかは知らんけど
Send {Ctrl Up}
でも書いておけば?
うまくいくかは知らんけど
2023/09/06(水) 00:04:12.54ID:9rLt8Dwp0
>>443
試したけどだめでした
https://keyboard-test.space/jp/
このサイトでキーの入力状態見てたら Send {Ctrl Up} の瞬間だけ ctrlの入力がオフになっても
次の瞬間またctrlが押された状態になるのでスクリプトが終わるまでずっと {Ctrl Up} の状態を保たないとだめそう
試したけどだめでした
https://keyboard-test.space/jp/
このサイトでキーの入力状態見てたら Send {Ctrl Up} の瞬間だけ ctrlの入力がオフになっても
次の瞬間またctrlが押された状態になるのでスクリプトが終わるまでずっと {Ctrl Up} の状態を保たないとだめそう
2023/09/06(水) 00:11:36.92ID:GGW0aUGl0
すごいサイトだな
ahkにも似たような機能あるけど
ahkにも似たような機能あるけど
2023/09/06(水) 07:15:27.62ID:Yei4EXvP0
Getkeystateってマウスもいけたっけ?
いけるなら物理的に離されてからup打つとか
いけるなら物理的に離されてからup打つとか
2023/09/06(水) 07:53:03.76ID:sYM0CPD00
>>442
Remarks に書いてあることまでちゃんと読んだ?
Remarks
This command uses the sending method set by SendMode.
The Click command is recommended over MouseClick because:
1. It automatically compensates when the left and right mouse buttons are
swapped via the control panel.
2. It is generally easier to use.
To perform a shift-click or control-click, use the Send command before and
after the operation as shown in these examples:
:
The SendPlay mode is able to successfully generate mouse events
in a broader variety of games than the other modes. In addition,
some applications and games may have trouble tracking the mouse
if it moves too quickly. The speed parameter or SetDefaultMouseSpeed
can be used to reduce the speed (in the default SendEvent mode only).
Some applications do not obey a ClickCount higher than 1 for the mouse wheel.
For them, use a Loop such as the following:
:
The BlockInput command can be used to prevent any physical mouse activity by the user from disrupting the simulated mouse events produced by the mouse commands. However, this is generally not needed
for the SendInput/Play modes because they automatically postpone
the user's physical mouse activity until afterward.
There is an automatic delay after every click-down and click-up of
the mouse (except for SendInput mode and for turning the mouse wheel).
Use SetMouseDelay to change the length of the delay.
Remarks に書いてあることまでちゃんと読んだ?
Remarks
This command uses the sending method set by SendMode.
The Click command is recommended over MouseClick because:
1. It automatically compensates when the left and right mouse buttons are
swapped via the control panel.
2. It is generally easier to use.
To perform a shift-click or control-click, use the Send command before and
after the operation as shown in these examples:
:
The SendPlay mode is able to successfully generate mouse events
in a broader variety of games than the other modes. In addition,
some applications and games may have trouble tracking the mouse
if it moves too quickly. The speed parameter or SetDefaultMouseSpeed
can be used to reduce the speed (in the default SendEvent mode only).
Some applications do not obey a ClickCount higher than 1 for the mouse wheel.
For them, use a Loop such as the following:
:
The BlockInput command can be used to prevent any physical mouse activity by the user from disrupting the simulated mouse events produced by the mouse commands. However, this is generally not needed
for the SendInput/Play modes because they automatically postpone
the user's physical mouse activity until afterward.
There is an automatic delay after every click-down and click-up of
the mouse (except for SendInput mode and for turning the mouse wheel).
Use SetMouseDelay to change the length of the delay.
448439
2023/09/06(水) 12:17:42.07ID:9rLt8Dwp0 以下で問題無く動くこと確認しました
^lbutton::
BlockInput, on
send, {click, left}
BlockInput, off
return
しかしBlockInput, onが管理者権限でないと機能しないので使用はためらっています
^lbutton::
BlockInput, on
send, {click, left}
BlockInput, off
return
しかしBlockInput, onが管理者権限でないと機能しないので使用はためらっています
2023/09/06(水) 12:58:50.79ID:ltUQDciW0
>>448
ブラウザ何使ってるか知らんけど、chrome(chromium系)ならchromeのwebストアで「open link same tab」で検索するとやりたい系の拡張出てくるから拡張導入で実現すれば?
ブラウザ何使ってるか知らんけど、chrome(chromium系)ならchromeのwebストアで「open link same tab」で検索するとやりたい系の拡張出てくるから拡張導入で実現すれば?
2023/09/06(水) 13:01:25.15ID:ltUQDciW0
2023/09/06(水) 18:44:01.82ID:Yb6yqz+60
>>448
要はCtrlが物理的に押し下げられている間に発生するキーリピートを止めればいいので下記のような方法でもできるが
これだとKeyNameと同名の既存のホットキーがある場合上書きしてしまうため、既存のホットキーをOnにし直す必要がある
あと >>444 のサイトは物理キーと論理キーの区別がされてないのでこの様なケースではテストして使うには不適切だと思うぞ
^LButton::
Hotkey, LCtrl, disable_key, On
Hotkey, RCtrl, disable_key, On
Send, {LButton}
Hotkey, LCtrl, disable_key, Off
Hotkey, RCtrl, disable_key, Off
return
disable_key:
return
要はCtrlが物理的に押し下げられている間に発生するキーリピートを止めればいいので下記のような方法でもできるが
これだとKeyNameと同名の既存のホットキーがある場合上書きしてしまうため、既存のホットキーをOnにし直す必要がある
あと >>444 のサイトは物理キーと論理キーの区別がされてないのでこの様なケースではテストして使うには不適切だと思うぞ
^LButton::
Hotkey, LCtrl, disable_key, On
Hotkey, RCtrl, disable_key, On
Send, {LButton}
Hotkey, LCtrl, disable_key, Off
Hotkey, RCtrl, disable_key, Off
return
disable_key:
return
2023/09/06(水) 20:22:25.18ID:X26chPwY0
数日パソコンつけっぱにしたら暴走する事ってありますか?
昨日から入力で文字出なかったり重く感じて来たと思ったら今日「っっっっっっっっ」以上の連打状態になったり日本語オンオフが連打状態になったりして、文字入力関係で何かあるとすればこれだけかなって
パソコン再起動で直ったんですがおま環でしょうか?
それか何か記述がおかしくて影響する事とか
ただ今まで問題無くここ数日で追記した事もありません
Win11
V1
昨日から入力で文字出なかったり重く感じて来たと思ったら今日「っっっっっっっっ」以上の連打状態になったり日本語オンオフが連打状態になったりして、文字入力関係で何かあるとすればこれだけかなって
パソコン再起動で直ったんですがおま環でしょうか?
それか何か記述がおかしくて影響する事とか
ただ今まで問題無くここ数日で追記した事もありません
Win11
V1
2023/09/06(水) 20:25:31.25ID:lmw46YqV0
ただのahkあるある
2023/09/06(水) 21:25:42.58ID:uFzGHYTO0
2023/09/06(水) 22:09:08.69ID:9rLt8Dwp0
>>451
ありがとうございます
試すとそのスクリプトを単独の.ahkファイルに書くと問題なく動作するのですが
自分が普段使ってる他にも長々と別のスクリプトが書いてある.ahkファイルの中に書くと
5回に1回ぐらい失敗(ctrl+左クリックが送られる)します
何かの処理が間に合わずに物理ctrlキーが割り込んできているのかと思い以下のようにsleepを挿入しても同じように失敗します
^LButton::
Hotkey, LCtrl, disable_key, On ;LCtrl::return と同じ
Hotkey, RCtrl, disable_key, On
sleep, 500
Send, {LButton}
sleep, 500
Hotkey, LCtrl, disable_key, Off ;上で定義したLCtrlのホットキーを削除
Hotkey, RCtrl, disable_key, Off
sleep, 500
return
disable_key:
return
何でctrlが割り込んで来ちゃうんですかね?
ありがとうございます
試すとそのスクリプトを単独の.ahkファイルに書くと問題なく動作するのですが
自分が普段使ってる他にも長々と別のスクリプトが書いてある.ahkファイルの中に書くと
5回に1回ぐらい失敗(ctrl+左クリックが送られる)します
何かの処理が間に合わずに物理ctrlキーが割り込んできているのかと思い以下のようにsleepを挿入しても同じように失敗します
^LButton::
Hotkey, LCtrl, disable_key, On ;LCtrl::return と同じ
Hotkey, RCtrl, disable_key, On
sleep, 500
Send, {LButton}
sleep, 500
Hotkey, LCtrl, disable_key, Off ;上で定義したLCtrlのホットキーを削除
Hotkey, RCtrl, disable_key, Off
sleep, 500
return
disable_key:
return
何でctrlが割り込んで来ちゃうんですかね?
2023/09/06(水) 23:02:51.49ID:Yb6yqz+60
>>455
そうなるとコード全体を見てみないと分からんが
全コード晒すのもそれを解析するのも現実的でないのでとりあえず適当に思い当たるのを挙げとくと
・同条件でトリガーされるホットキーで他に干渉しているものがないかチェックして、あればHotkeyで無効にする
・SetKeyDelay 及び SetMouseDelay を変更しているなら戻す
・SendInput もしくは SendPlay を使用する
・Send, {LButton} の前に Send, {Blind}{LCtrl Up}{RCtrl Up} を入れ明示的に押し上げる
・Hotkey, LCtrl, disable_key, On P100 のように優先度を上げる
・#UseHook を使う
・ホットキーやスレッド周りの設定で極端な設定をしているものがあれば戻す
とまあ基本手当たり次第かな、がんばって
そうなるとコード全体を見てみないと分からんが
全コード晒すのもそれを解析するのも現実的でないのでとりあえず適当に思い当たるのを挙げとくと
・同条件でトリガーされるホットキーで他に干渉しているものがないかチェックして、あればHotkeyで無効にする
・SetKeyDelay 及び SetMouseDelay を変更しているなら戻す
・SendInput もしくは SendPlay を使用する
・Send, {LButton} の前に Send, {Blind}{LCtrl Up}{RCtrl Up} を入れ明示的に押し上げる
・Hotkey, LCtrl, disable_key, On P100 のように優先度を上げる
・#UseHook を使う
・ホットキーやスレッド周りの設定で極端な設定をしているものがあれば戻す
とまあ基本手当たり次第かな、がんばって
2023/09/08(金) 00:16:48.01ID:suMaKzxk0
質問させてください
AHKでWin10のBluetoothをオン/オフ切り替えるコマンドってありませんか?
AHKでWin10のBluetoothをオン/オフ切り替えるコマンドってありませんか?
2023/09/08(金) 07:45:00.03ID:GbWsAhNI0
>>457
AHK にはないやろ。
autohotkey bluetooth on off - Google 検索
https://www.google.com/search?q=autohotkey+bluetooth+on+off
AHK にはないやろ。
autohotkey bluetooth on off - Google 検索
https://www.google.com/search?q=autohotkey+bluetooth+on+off
2023/09/08(金) 08:55:55.00ID:+ULrgBan0
runがあるんだからahkだけで何でもできる
2023/09/08(金) 09:32:53.12ID:GbWsAhNI0
2023/09/08(金) 09:38:25.14ID:MNBExYpU0
runしないといけないってことはahkで出来ないことじゃね?
2023/09/08(金) 09:58:48.37ID:YMO30/bT0
ただの言葉遊びだが、>>457の質問の仕方もちょっとあれだな
恐らくAHK経由で制御できるかを知りたいんだろうが
コマンドと書いてしまっているから、存在しないので、「ない」
という答えが返ってくるはめになる
制御スイッチとしてのスクリプトを書けるかといえば書ける
恐らくAHK経由で制御できるかを知りたいんだろうが
コマンドと書いてしまっているから、存在しないので、「ない」
という答えが返ってくるはめになる
制御スイッチとしてのスクリプトを書けるかといえば書ける
2023/09/08(金) 13:21:18.66ID:suMaKzxk0
2023/09/08(金) 17:58:23.82ID:+ULrgBan0
::の後{の前に改行がいるルールは、何の役に立ってるの?
続けて書いても誤解は無いと思うけど
続けて書いても誤解は無いと思うけど
2023/09/08(金) 18:43:25.14ID:i4UroxiT0
v2の話?
v2ならホットキーは関数だから、そういう書式ルールなんでとしか
ただOTBも許容しているから、別に前でなくてもいいよね
F1::{
Run "Explorer"
}
v2ならホットキーは関数だから、そういう書式ルールなんでとしか
ただOTBも許容しているから、別に前でなくてもいいよね
F1::{
Run "Explorer"
}
2023/09/08(金) 18:52:15.25ID:gx8PwsTd0
>>464
パーサの役に立ってるよ
パーサの役に立ってるよ
2023/09/08(金) 21:28:52.01ID:GbWsAhNI0
>>464
ちゅうかさ、AHK v2 にそんな「ルール」はないやろ。
「行末の{」に対して、オブジェクト or OTB の判定が入るだけで。
Scripts - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Scripts.htm#continuation-expr
ちゅうかさ、AHK v2 にそんな「ルール」はないやろ。
「行末の{」に対して、オブジェクト or OTB の判定が入るだけで。
Scripts - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Scripts.htm#continuation-expr
2023/09/08(金) 21:38:01.87ID:+ULrgBan0
OTBで書けるケースが限定されている、というルールでしょ
そんなややこしいことにするメリットが判らん
そんなややこしいことにするメリットが判らん
2023/09/08(金) 22:05:34.06ID:zFwuV2d30
2023/09/08(金) 22:35:10.31ID:GbWsAhNI0
2023/09/08(金) 22:43:00.25ID:+ULrgBan0
全然判らん
何と何を誤解するという具体例とかあるの
何と何を誤解するという具体例とかあるの
2023/09/08(金) 22:55:06.64ID:zFwuV2d30
2023/09/09(土) 08:49:36.22ID:pR8NjTB70
v1みたいに処理が一つなら省略できるんだから別にいいじゃん
スクリプトの改行で文句言う奴なんて初めて見たぜ
スクリプトの改行で文句言う奴なんて初めて見たぜ
2023/09/09(土) 13:53:20.96ID:xOfvB+/e0
なんかよく分からないその人なりのこだわりがあるんだろ。
2023/09/09(土) 15:42:27.29ID:feDxAAkf0
何かの互換性の維持の為とかならまあ仕方ないけど、
そんなの関係なくて単に面倒くさいという理由で合理性が欠如してたら、
もうちょっと頑張れよと思うのは仕方ない
そんなの関係なくて単に面倒くさいという理由で合理性が欠如してたら、
もうちょっと頑張れよと思うのは仕方ない
2023/09/09(土) 21:56:07.18ID:dR4zuzdz0
2023/09/10(日) 15:58:51.93ID:ZkN65p7R0
AutoHotkeyって、ネーミング通りホットキーに操作を割り当てるだけの物かと思ってスルーしてたけど
調べたら色々出来るんだね
こんなことならUWSC(作者死亡、6年更新ない)に手を出さず、最初からAutoHotkeyにしとけば良かった。
調べたら色々出来るんだね
こんなことならUWSC(作者死亡、6年更新ない)に手を出さず、最初からAutoHotkeyにしとけば良かった。
2023/09/10(日) 16:09:06.76ID:oMtz/ggC0
今からでも遅くはありません
勇者よ、学ぶのです
勇者よ、学ぶのです
2023/09/10(日) 16:11:04.10ID:ItMWkI4Z0
ImageSearchまだ使ったことないけど、使いこなすと可能性が広がりそうだな
2023/09/10(日) 16:24:59.90ID:oXJfo1RU0
2023/09/10(日) 16:36:29.30ID:ApyovvyA0
Keyhac って Python だったよな
2023/09/10(日) 16:46:52.42ID:ItMWkI4Z0
のどかにラッパーを追加してpythonのモジュールみたいにできないかな
ぶっちゃけ、キーの入れ替え以外は全部pythonでできる
ぶっちゃけ、キーの入れ替え以外は全部pythonでできる
2023/09/10(日) 16:57:15.43ID:ItMWkI4Z0
ラッパーていうか、アプリそのものだな
のどかはデバイスドライバとそれを使う本体で構成されてるので、
APIを解析してのどか以外からデバイスドライバを使うことも可能
APIの全機能をカバーしただけの低レベルpythonモジュールをまずこさえて、
それを利用してahkのスクリプトを理解できる上位モジュールから呼び出す
のどかはデバイスドライバとそれを使う本体で構成されてるので、
APIを解析してのどか以外からデバイスドライバを使うことも可能
APIの全機能をカバーしただけの低レベルpythonモジュールをまずこさえて、
それを利用してahkのスクリプトを理解できる上位モジュールから呼び出す
2023/09/11(月) 11:00:53.01ID:ia7g+DFl0
>>481
keyhacは修飾キー周りの設定がめんどいのと更新止まってるから使ってないな
keyhacは修飾キー周りの設定がめんどいのと更新止まってるから使ってないな
2023/09/11(月) 20:36:49.65ID:AdChF0Gh0
Release v2.0.8 · AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.8
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.8
2023/09/11(月) 20:39:27.89ID:tG+HBWzg0
2023/09/11(月) 20:51:26.09ID:H9PG0Vk20
メンテナンスだけなんだから
そりゃ当然だわ
そりゃ当然だわ
2023/09/11(月) 21:17:56.44ID:AdChF0Gh0
公式のダウンロードページでも「Download v1.1 (deprecated)」になってるしな。
セキュリティ絡みかよっぽどなバグでもない限りアップデートはないやろ。
セキュリティ絡みかよっぽどなバグでもない限りアップデートはないやろ。
2023/09/11(月) 21:27:50.78ID:tG+HBWzg0
2023/09/11(月) 21:28:32.59ID:tG+HBWzg0
492名無しさん@お腹いっぱい。
2023/09/12(火) 02:41:12.62ID:ZxfrDDhW0 漠然とした質問ですがAHKって何に使ってますか?
自分はpython書くくらいしかPCで作業しないので
Pythonであまり使わない@に()を割り当てたり
=と""を打ちやすくしたりしてみたのですが
他に割り当てるほどのことが何も思いつきません
何でもできるツールなので、使い方がわかってないだけだと思うのですが……
切り取り貼り付けなどのショートカットをワンプッシュでできるようにしてみたのですが元々Ctrl+C、Vとかはかなり押しやすい配置なのであまり便利になりませんでした
皆さんが複雑な作業でホットキー設定して便利だと感じているものって何かありますか?
自分はpython書くくらいしかPCで作業しないので
Pythonであまり使わない@に()を割り当てたり
=と""を打ちやすくしたりしてみたのですが
他に割り当てるほどのことが何も思いつきません
何でもできるツールなので、使い方がわかってないだけだと思うのですが……
切り取り貼り付けなどのショートカットをワンプッシュでできるようにしてみたのですが元々Ctrl+C、Vとかはかなり押しやすい配置なのであまり便利になりませんでした
皆さんが複雑な作業でホットキー設定して便利だと感じているものって何かありますか?
2023/09/12(火) 03:06:37.00ID:TCPOB/1O0
2023/09/12(火) 04:30:06.97ID:48RxhFtI0
2023/09/12(火) 07:42:20.39ID:Nluft5rv0
mayu -> yamy -> ahk と流れてきて、設定を連綿と引き継いでいる
最初にやりたかったのは、ダイヤモンドカーソル
CapsLock+esdxがカーソルキーになる
他にも極力ホームポジションから動かなくていいように、ファンクションキーとか、
かな入力の一部を別のキーに追加
あとは特定アプリ限定で、マウスでしか操作出来ない機能にキーアサインを追加
最初にやりたかったのは、ダイヤモンドカーソル
CapsLock+esdxがカーソルキーになる
他にも極力ホームポジションから動かなくていいように、ファンクションキーとか、
かな入力の一部を別のキーに追加
あとは特定アプリ限定で、マウスでしか操作出来ない機能にキーアサインを追加
2023/09/12(火) 08:32:49.30ID:GBoxE6db0
関数ライブラリ廃止がクソすぎる やってられん
2023/09/12(火) 11:28:42.32ID:qk3wwP0M0
>>492
IMEオンオフ切り替えを含め、遠いキーをなるべく手元に
アクティブウィンドウ枠をIMEオンオフに応じて色付け
再変換:半角文字列を未確定全角に‖未確定全角文字列を確定英数字に
アクティブタイトルバーに暗記したい英単語を順次表示
発音記号、欧文文字ダイレクト入力
アプリ一発起動
各種メディアプレーヤーのホットキーを統一
ClipboardHisoryをAHK版にして、カスタマイズ
自分のスクリプトを点検したら、こんな感じでした。
IMEオンオフ切り替えを含め、遠いキーをなるべく手元に
アクティブウィンドウ枠をIMEオンオフに応じて色付け
再変換:半角文字列を未確定全角に‖未確定全角文字列を確定英数字に
アクティブタイトルバーに暗記したい英単語を順次表示
発音記号、欧文文字ダイレクト入力
アプリ一発起動
各種メディアプレーヤーのホットキーを統一
ClipboardHisoryをAHK版にして、カスタマイズ
自分のスクリプトを点検したら、こんな感じでした。
2023/09/12(火) 11:49:46.07ID:UAm/ijNJ0
2023/09/12(火) 12:43:04.65ID:uIyr4Ei90
別に新規作成のテンプレに必ず使うライブラリ書くとかしておけば
良いだけでしょ
大げさに騒ぎすぎ
良いだけでしょ
大げさに騒ぎすぎ
2023/09/12(火) 13:14:01.88ID:Nluft5rv0
使ったことないけど、includeするのとは違う名前の管理してくれるの?
2023/09/12(火) 13:56:53.17ID:0mkXggI90
2023/09/12(火) 21:03:09.06ID:V/2CrKsZ0
2023/09/12(火) 22:19:12.36ID:48RxhFtI0
2023/09/13(水) 15:48:09.66ID:m4N6UCY60
2023/09/13(水) 17:24:56.06ID:5W893Rfo0
2023/09/13(水) 17:30:46.12ID:Wgwsv5oV0
そもそもブラウザ以外でマウスを使わない
2023/09/13(水) 17:46:36.73ID:el7ZvXLi0
シェルもCUIかよ
男らしいなw
男らしいなw
2023/09/13(水) 21:54:54.11ID:Ep4twdpZ0
>>505
出来るよ。キーリピート防いで、長押保持
NumPad◆::
Click,Left,D
KeyWait,NumPad◆ ;リピート連打防止長押保持
Click,Left,U
Return
それとドラッグ用に、クリックON/OFFトグルも
NumPad▼::
Click,Left,D
Sleep 200 ;×無いと即OFF誤動作
KeyWait,NumPad▼,D ;押込検知
Click,Left,U
Return
出来るよ。キーリピート防いで、長押保持
NumPad◆::
Click,Left,D
KeyWait,NumPad◆ ;リピート連打防止長押保持
Click,Left,U
Return
それとドラッグ用に、クリックON/OFFトグルも
NumPad▼::
Click,Left,D
Sleep 200 ;×無いと即OFF誤動作
KeyWait,NumPad▼,D ;押込検知
Click,Left,U
Return
2023/09/14(木) 08:58:24.57ID:yiUXLhWC0
a::
Click,L,D
KeyWait,%A_ThisHotKey%
Click,L,U
Return
これ系のホットキー、自前ウィンドウ(GUIやListLines)のタイトルバーに対して押すと
クリックされっぱなしになっちゃうんだけどおま環?
Click,L,D
KeyWait,%A_ThisHotKey%
Click,L,U
Return
これ系のホットキー、自前ウィンドウ(GUIやListLines)のタイトルバーに対して押すと
クリックされっぱなしになっちゃうんだけどおま環?
2023/09/14(木) 11:25:43.09ID:KPv1xtwM0
かきこめるのかな
511名無しさん@お腹いっぱい。
2023/09/14(木) 11:38:55.24ID:KPv1xtwM0 https:〜〜=99 というある99番目のページurl があって
StringTrimLeftとStringTrimrightで、https:〜〜= までと 99 に切り分けて
99を数値処理して、再結合して98番目をひらき、97番目をひらき・・・を繰り返したいんですが
https://ahkwiki.net/-Concat で結合すると*の箇所でlist_numが数値ではなく文字列になってしまい実現できません
どうやって解決できるでしょうか?
StringGetPos, OutputVar, url_list,=, R1 ,
StringTrimLeft,list_num,url_list,OutputVar+1
StringTrimRight,url_list,url_list,StrLen(list_num)
Loop,5
{
Sleep,1000
list_url := url_list list_num *
Run,%list_url%
list_num =list_num-1
StringTrimLeftとStringTrimrightで、https:〜〜= までと 99 に切り分けて
99を数値処理して、再結合して98番目をひらき、97番目をひらき・・・を繰り返したいんですが
https://ahkwiki.net/-Concat で結合すると*の箇所でlist_numが数値ではなく文字列になってしまい実現できません
どうやって解決できるでしょうか?
StringGetPos, OutputVar, url_list,=, R1 ,
StringTrimLeft,list_num,url_list,OutputVar+1
StringTrimRight,url_list,url_list,StrLen(list_num)
Loop,5
{
Sleep,1000
list_url := url_list list_num *
Run,%list_url%
list_num =list_num-1
2023/09/14(木) 11:47:07.84ID:KJr2fbsG0
どこにキー入力の要素が
2023/09/14(木) 12:05:09.94ID:qDtiR+3o0
2023/09/14(木) 12:17:00.09ID:KPv1xtwM0
>>513
凡ミスでしたありがとうございます。
凡ミスでしたありがとうございます。
2023/09/14(木) 12:27:01.77ID:KJr2fbsG0
=と==を大文字小文字の区別の為だけに使い分けて、
そのせいで代入を:=にするのはどう考えてもデメリットが大きいので、
=は代入にしてしまった方がいい
そのせいで代入を:=にするのはどう考えてもデメリットが大きいので、
=は代入にしてしまった方がいい
2023/09/14(木) 13:11:14.76ID:yGaUQqIl0
2023/09/14(木) 17:42:45.40ID:DzQdSu6f0
2023/09/14(木) 19:58:28.52ID:dC0vICTI0
外部スクリプトよく呼び出すなら
ret := RunScript("
(
#!cmd
echo hello
)")
msgbox % ret ; ==> "hello"
なんてラッパー作っとくと楽だぞ
ret := RunScript("
(
#!cmd
echo hello
)")
msgbox % ret ; ==> "hello"
なんてラッパー作っとくと楽だぞ
2023/09/14(木) 20:43:03.47ID:yiUXLhWC0
これほんとに俺だけ?>>509
これだけの記述でも100%再現する
----------------
ListLines
LButton::
Click, L, D
KeyWait, LButton
Click, L, U
Return
----------------
これだけの記述でも100%再現する
----------------
ListLines
LButton::
Click, L, D
KeyWait, LButton
Click, L, U
Return
----------------
2023/09/14(木) 22:14:28.70ID:qDtiR+3o0
>>519
スマンかった。おま環じゃないなこれ
昼に軽く試したときはならなかったんだが、今やったら確実に再現するわ
むしろ昼にやった時ならなかったのが謎
KeyWaitの有無は関係なく、DownとUpを別々にした場合に発生する模様
タイトルバーを対象とした時のみDown後にUpが送られずスタックして
Escを押すか、タイトルバー以外の場所でLButton押下時にUpが送られてる
Send, {LButton Down} に変えても同様
なんでこうなるかは分からん
スマンかった。おま環じゃないなこれ
昼に軽く試したときはならなかったんだが、今やったら確実に再現するわ
むしろ昼にやった時ならなかったのが謎
KeyWaitの有無は関係なく、DownとUpを別々にした場合に発生する模様
タイトルバーを対象とした時のみDown後にUpが送られずスタックして
Escを押すか、タイトルバー以外の場所でLButton押下時にUpが送られてる
Send, {LButton Down} に変えても同様
なんでこうなるかは分からん
2023/09/14(木) 22:39:00.29ID:yiUXLhWC0
検証ども おま環じゃなくてよかった
ちなみにv2でも同じだった
ちなみにv2でも同じだった
2023/09/14(木) 22:43:30.80ID:/4keP4wt0
2023/09/15(金) 09:56:11.88ID:8lJJsAOr0
2023/09/17(日) 04:25:54.62ID:sHFSptxP0
質問よろしいでしょうか?
Spotifyにグローバルショートカットを送るスクリプトです
これだと最小化している時は反応しません どう修正すればよいでしょうか?
getSpotifyHwnd() {
WinGet, spotifyHwnd, ID, ahk_exe spotify.exe
Return spotifyHwnd
}
spotifyKey(key) {
spotifyHwnd := getSpotifyHwnd()
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
Return
}
Pause::
{
spotifyKey("!+{B}")
Return
}
Spotifyにグローバルショートカットを送るスクリプトです
これだと最小化している時は反応しません どう修正すればよいでしょうか?
getSpotifyHwnd() {
WinGet, spotifyHwnd, ID, ahk_exe spotify.exe
Return spotifyHwnd
}
spotifyKey(key) {
spotifyHwnd := getSpotifyHwnd()
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
Return
}
Pause::
{
spotifyKey("!+{B}")
Return
}
2023/09/17(日) 04:31:37.96ID:sHFSptxP0
もうひとつ質問がありまして
上記のスクリプトを改変し、コンパイルしたexeを呼び出した際にSpotifyに !+{B} を自動で送信
その後AHKのexe自体を終了させたいのです
何がしたいかと言うと、遠隔で該当exeを実行するコマンドを送る度に !+{B} をSpotifyに送りたいという事なのですが
可能でしょうか・・・ 宜しくお願い致します。
上記のスクリプトを改変し、コンパイルしたexeを呼び出した際にSpotifyに !+{B} を自動で送信
その後AHKのexe自体を終了させたいのです
何がしたいかと言うと、遠隔で該当exeを実行するコマンドを送る度に !+{B} をSpotifyに送りたいという事なのですが
可能でしょうか・・・ 宜しくお願い致します。
2023/09/17(日) 05:22:22.98ID:AK0a2owI0
Spotifyを使ってないので適当に書くけど、普通にアクティブにしてから
キー送信するのはダメなの?
getSpotifyHwnd() {
WinGet, spotifyHwnd, ID, ahk_exe spotify.exe
Return spotifyHwnd
}
spotifyKey(key) {
spotifyHwnd := getSpotifyHwnd()
WinActivate ahk_id %spotifyHwnd%
Send %key%
Return
}
spotifyKey("!+{B}")
ExitApp
あと、送信するキーはBじゃなくてbじゃないの?
キー送信するのはダメなの?
getSpotifyHwnd() {
WinGet, spotifyHwnd, ID, ahk_exe spotify.exe
Return spotifyHwnd
}
spotifyKey(key) {
spotifyHwnd := getSpotifyHwnd()
WinActivate ahk_id %spotifyHwnd%
Send %key%
Return
}
spotifyKey("!+{B}")
ExitApp
あと、送信するキーはBじゃなくてbじゃないの?
2023/09/17(日) 05:30:12.82ID:sHFSptxP0
>>526
ありがとうございます!できました!
ええ、Bじゃなくてbですね・・・ ググって出てきたスクリプトを書き換えたダケなんで色々理解していません・・・
{ } で囲う意味も分かって無くて、動かなかったから囲ったら動いた ぐらいのスキルです汗
ありがとうございます!できました!
ええ、Bじゃなくてbですね・・・ ググって出てきたスクリプトを書き換えたダケなんで色々理解していません・・・
{ } で囲う意味も分かって無くて、動かなかったから囲ったら動いた ぐらいのスキルです汗
2023/09/17(日) 05:52:40.93ID:AK0a2owI0
一つ目の関数が冗長なので単純化した
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinActivate ahk_id %spotifyHwnd%
Send %key%
Return
}
spotifyKey("!+{b}")
ExitApp
getSpotifyHwnd()は消していい
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinActivate ahk_id %spotifyHwnd%
Send %key%
Return
}
spotifyKey("!+{b}")
ExitApp
getSpotifyHwnd()は消していい
2023/09/17(日) 06:06:33.03ID:sHFSptxP0
2023/09/17(日) 06:38:43.23ID:AK0a2owI0
これで良いんじゃないの?
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinGet winMM, MinMax, ahk_id %spotifyHwnd% ;ウィンドウの最大化最小化を調べる
if (winMM = -1) ;最小化しているなら
WinRestore ahk_id %spotifyHwnd% ;最小化を解除
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
Return
}
spotifyKey("!+{b}")
ExitApp
WinRestoreで正しく送信されないなら、WinActivateに変更
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinGet winMM, MinMax, ahk_id %spotifyHwnd% ;ウィンドウの最大化最小化を調べる
if (winMM = -1) ;最小化しているなら
WinRestore ahk_id %spotifyHwnd% ;最小化を解除
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
Return
}
spotifyKey("!+{b}")
ExitApp
WinRestoreで正しく送信されないなら、WinActivateに変更
2023/09/17(日) 07:35:15.03ID:sHFSptxP0
2023/09/17(日) 07:42:33.32ID:sHFSptxP0
ああ、こうですね できました。
が、細かいことですがフォアグラウンドに来てる時だけはキー無効になってしまいますね なんでだろ
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinGet winMM, MinMax, ahk_id %spotifyHwnd% ;ウィンドウの最大化最小化を調べる
if (winMM = -1) ;最小化しているなら
WinRestore ahk_id %spotifyHwnd% ;最小化を解除
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
Return
}
Pause::
{
spotifyKey("!+{b}")
Return
}
が、細かいことですがフォアグラウンドに来てる時だけはキー無効になってしまいますね なんでだろ
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinGet winMM, MinMax, ahk_id %spotifyHwnd% ;ウィンドウの最大化最小化を調べる
if (winMM = -1) ;最小化しているなら
WinRestore ahk_id %spotifyHwnd% ;最小化を解除
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
Return
}
Pause::
{
spotifyKey("!+{b}")
Return
}
2023/09/17(日) 07:57:47.81ID:AgjEWBqI0
タブの選択とか実行とかをマウスでしかできないソフトにショートカットキーを追加する
前は座標を測って押してたけど、画像認識に変更した
画像ファイルを引数に指定すると押してくれる関数化したのですっきり
押した後、元のマウスカーソルに戻すので、そのうちahkでやってることを忘れる
前は座標を測って押してたけど、画像認識に変更した
画像ファイルを引数に指定すると押してくれる関数化したのですっきり
押した後、元のマウスカーソルに戻すので、そのうちahkでやってることを忘れる
2023/09/17(日) 13:24:44.00ID:FD5+4qql0
>>518
いいなーv2はrunscript()なんてあるんだ
dllcallでattachしてとか地味に長い関数書いてた
Run, %exec_command% %arg%,, Hide, pid
WinWait, ahk_pid %pid%
DllCall("AttachConsole", "UInt", pid)
WshShell := ComObjCreate("Wscript.Shell")
exec := WshShell.Exec("%ComSpec% /u /c " . exec_command . " " . arg)
output := exec.StdOut.ReadAll()
DllCall("FreeConsole")
いいなーv2はrunscript()なんてあるんだ
dllcallでattachしてとか地味に長い関数書いてた
Run, %exec_command% %arg%,, Hide, pid
WinWait, ahk_pid %pid%
DllCall("AttachConsole", "UInt", pid)
WshShell := ComObjCreate("Wscript.Shell")
exec := WshShell.Exec("%ComSpec% /u /c " . exec_command . " " . arg)
output := exec.StdOut.ReadAll()
DllCall("FreeConsole")
2023/09/17(日) 14:08:18.16ID:RotPmQmd0
Release v2.0.9 · AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.9
> Fixed stacking of hotstrings with the X option.
> Fixed debugger not listing local vars if the function is at the bottom of the stack.
> Fixed Gui threads to show on the debugger's call stack.
> Fixed some combinations of &/ByRef causing stack overflow in ExitApp.
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.9
> Fixed stacking of hotstrings with the X option.
> Fixed debugger not listing local vars if the function is at the bottom of the stack.
> Fixed Gui threads to show on the debugger's call stack.
> Fixed some combinations of &/ByRef causing stack overflow in ExitApp.
2023/09/17(日) 14:14:03.80ID:MyPIJBxa0
当分fix祭り終わらなそうだな
2023/09/17(日) 14:21:57.49ID:AgjEWBqI0
さっさとpython化しようぜ
2023/09/17(日) 14:40:09.89ID:vOzAWoz00
2023/09/17(日) 14:41:24.90ID:AgjEWBqI0
スクリプト再発明してオーバーフローしたー、とか困らなくていい
2023/09/17(日) 15:00:43.17ID:RotPmQmd0
>>534
いや、ないだろ。
いや、ないだろ。
2023/09/17(日) 15:05:55.08ID:vOzAWoz00
2023/09/17(日) 15:09:11.40ID:AgjEWBqI0
ahkのコア部分だけpythonのモジュール化して、キーの置き換えとかいろんな処理はpythonで書く
世界中の人が寄ってたかって便利にすることができる
で、コアだけのどかと差し替えると、スクリプトそのままで安定性が向上する
世界中の人が寄ってたかって便利にすることができる
で、コアだけのどかと差し替えると、スクリプトそのままで安定性が向上する
2023/09/17(日) 15:16:12.59ID:vOzAWoz00
2023/09/17(日) 16:40:52.99ID:ejOMxxCZ0
宗教だから触らない
2023/09/17(日) 16:59:13.01ID:FD5+4qql0
>>540
ないんかいw
ないんかいw
2023/09/17(日) 17:23:24.31ID:RotPmQmd0
あらへんねんw
Run/RunWait は普通にあるけど、んなもんあったっけ?と公式リファレンスで見たけどない。
多分、Unix系のスクリプト実行よろしく1行目を見て実際に走らせる shell なりを
変えられるものちゃうか?
Run/RunWait は普通にあるけど、んなもんあったっけ?と公式リファレンスで見たけどない。
多分、Unix系のスクリプト実行よろしく1行目を見て実際に走らせる shell なりを
変えられるものちゃうか?
2023/09/17(日) 18:11:00.58ID:vOzAWoz00
2023/09/17(日) 18:55:52.94ID:RotPmQmd0
>>547
それをワシに聞かれても知らんがな。
それをワシに聞かれても知らんがな。
2023/09/17(日) 21:20:13.01ID:6mVDQMFc0
v2はいつになったら押しっぱが解消されるんだろう…
2023/09/18(月) 00:44:41.37ID:MCvojQwt0
>>549
ちょっと前のレスでもkey upさせる手法出てたけど、処理に装飾キー含まれるときに全部のkeyをupする関数とか入れたら?
holdup_key() {
local keys = ["Ctrl", "Shift", "Alt", "LWin", "sc079", "sc07B"]
for key in keys {
SendInput, {key up}
}
}
ちょっと前のレスでもkey upさせる手法出てたけど、処理に装飾キー含まれるときに全部のkeyをupする関数とか入れたら?
holdup_key() {
local keys = ["Ctrl", "Shift", "Alt", "LWin", "sc079", "sc07B"]
for key in keys {
SendInput, {key up}
}
}
2023/09/18(月) 02:13:47.11ID:jPhetF1l0
それローカルの宣言する意味あるの?
2023/09/18(月) 07:32:17.17ID:DiSScFBT0
sleep 1 を入れた方がいいっぽい
ループ処理がそれに代わってるかもしれないけど
ループ処理がそれに代わってるかもしれないけど
2023/09/18(月) 07:39:40.16ID:G+And54K0
*XButton1::
{
while GetKeyState("XButton1", "P")
{
Send {Blind}{WheelDown}
Sleep 10
}
}
v1は正常に動く
v2だと稀にGetKeyStateの状態が更新されずに永久ループする
{
while GetKeyState("XButton1", "P")
{
Send {Blind}{WheelDown}
Sleep 10
}
}
v1は正常に動く
v2だと稀にGetKeyStateの状態が更新されずに永久ループする
2023/09/18(月) 07:50:20.70ID:DiSScFBT0
確率の問題なんだろうな
アトムであって欲しい処理のスリットが、v1よりv2の方が広い
ダーティでなくなった分だけ脆弱になってしまうっていう
どこでフックの奪い合いが起きても本質的に問題ない
という作りになってないと、どうしても不安定になる
アトムであって欲しい処理のスリットが、v1よりv2の方が広い
ダーティでなくなった分だけ脆弱になってしまうっていう
どこでフックの奪い合いが起きても本質的に問題ない
という作りになってないと、どうしても不安定になる
2023/09/18(月) 13:07:34.00ID:cSd5nxXI0
2023/09/18(月) 22:46:50.69ID:oUaH/YqD0
>>553
俺の環境ではそんなこと起こったことないが、公式フォーラムのバグレポート(未解決)に似たような報告があるな
v2ではSendMode("Input")がデフォルトになったが、このモードがGetKeyStateに干渉しているのではないかと推測されている
とりあえずEventモードなら発現しないらしいので
Send("{Blind}{WheelDown}")の所をSendEventにするか、SendModeをEventにしてしばらく様子を見てみて
俺の環境ではそんなこと起こったことないが、公式フォーラムのバグレポート(未解決)に似たような報告があるな
v2ではSendMode("Input")がデフォルトになったが、このモードがGetKeyStateに干渉しているのではないかと推測されている
とりあえずEventモードなら発現しないらしいので
Send("{Blind}{WheelDown}")の所をSendEventにするか、SendModeをEventにしてしばらく様子を見てみて
2023/09/21(木) 18:09:14.32ID:/qgZEuhq0
お世話になっております!また教えて頂けませんか?すみません・・・
NumLock::Run,calculator:
Numロックで電卓を起動したいんですが、「既に起動している場合は、そのプロセスをアクティブにする」にあったコレを追加した時の全体の記述がわからないです・・・
単純に追加しただけだと無限に開けてしまいます
Process,Exist,calculator: ;起動しているかどうかを調べる
If ErrorLevel <> 0 ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
Else ;起動していなかった場合
calculator: ;起動する
NumLock::Run,calculator:
Numロックで電卓を起動したいんですが、「既に起動している場合は、そのプロセスをアクティブにする」にあったコレを追加した時の全体の記述がわからないです・・・
単純に追加しただけだと無限に開けてしまいます
Process,Exist,calculator: ;起動しているかどうかを調べる
If ErrorLevel <> 0 ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
Else ;起動していなかった場合
calculator: ;起動する
2023/09/21(木) 18:13:06.53ID:/qgZEuhq0
2023/09/21(木) 20:04:42.79ID:3aqubDRm0
2023/09/21(木) 20:33:27.57ID:/qgZEuhq0
2023/09/22(金) 18:18:33.75ID:QYS2Gl5t0
>>558
ifとelseで出来ました!ありがとう!
ifとelseで出来ました!ありがとう!
2023/09/22(金) 18:25:41.20ID:QYS2Gl5t0
else入ってなかったわ
2023/09/22(金) 21:16:52.43ID:QYS2Gl5t0
やっぱりだめでした 他のアプリがアクティブだとそっちでショートカットが発動してしまいます
2023/09/22(金) 21:27:25.15ID:Z0XFNyal0
そうですか
自分が書いたものを貼らないなら
そうですか
としか返せませんよ
自分が書いたものを貼らないなら
そうですか
としか返せませんよ
2023/09/22(金) 22:05:39.07ID:QYS2Gl5t0
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinGet winMM, MinMax, ahk_id %spotifyHwnd% ;ウィンドウの最大化最小化を調べる
if (winMM = -1) ;最小化しているなら
WinRestore ahk_id %spotifyHwnd% ;最小化を解除
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
if (winMM = 1)
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
Send %key%
Return
}
Pause::
{
spotifyKey("!+{b}")
Return
}
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinGet winMM, MinMax, ahk_id %spotifyHwnd% ;ウィンドウの最大化最小化を調べる
if (winMM = -1) ;最小化しているなら
WinRestore ahk_id %spotifyHwnd% ;最小化を解除
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
if (winMM = 1)
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
Send %key%
Return
}
Pause::
{
spotifyKey("!+{b}")
Return
}
2023/09/22(金) 22:05:51.98ID:QYS2Gl5t0
>>564
すみません上書きで消してたみたいでゴミ箱探したりしましたが結局みつからず、たぶんこんなかんじでした
spotifyに直接sendしてないせいですね あと関数やら97%わかってないせいです・・・
5~7行目だけだとSpotifyが最前面にアクティブな時だけ!+{b}が送られない理由がまるでわからくて
if (winMM = 1)以降は意味分かってないのにこうやったら行けた程度のヤツで実際何も分かってないでやってます
すみません上書きで消してたみたいでゴミ箱探したりしましたが結局みつからず、たぶんこんなかんじでした
spotifyに直接sendしてないせいですね あと関数やら97%わかってないせいです・・・
5~7行目だけだとSpotifyが最前面にアクティブな時だけ!+{b}が送られない理由がまるでわからくて
if (winMM = 1)以降は意味分かってないのにこうやったら行けた程度のヤツで実際何も分かってないでやってます
2023/09/22(金) 22:08:40.20ID:QYS2Gl5t0
今は電卓のと足してコレで凌いでます Spotifyの上以外では動作するので問題はないです
NumLock::
If WinExist("電卓")
WinActivate, 電卓
Else
Run, calc.exe
return
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinGet winMM, MinMax, ahk_id %spotifyHwnd% ;ウィンドウの最大化最小化を調べる
if (winMM = -1) ;最小化しているなら
WinRestore ahk_id %spotifyHwnd% ;最小化を解除
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
Return
}
Pause::
{
spotifyKey("!+{b}")
Return
}
NumLock::
If WinExist("電卓")
WinActivate, 電卓
Else
Run, calc.exe
return
spotifyKey(key) {
spotifyHwnd := WinExist("ahk_exe spotify.exe")
WinGet winMM, MinMax, ahk_id %spotifyHwnd% ;ウィンドウの最大化最小化を調べる
if (winMM = -1) ;最小化しているなら
WinRestore ahk_id %spotifyHwnd% ;最小化を解除
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend, , %key%, ahk_id %spotifyHwnd%
Return
}
Pause::
{
spotifyKey("!+{b}")
Return
}
2023/09/22(金) 23:03:49.16ID:Z0XFNyal0
これでどうかな
if (winMM = -1) {
WinRestore ahk_id %spotifyHwnd%
}
if WinActive("ahk_id " spotifyHwnd) {
Send, %key%
} else {
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend,, %key%
}
if (winMM = -1) {
WinRestore ahk_id %spotifyHwnd%
}
if WinActive("ahk_id " spotifyHwnd) {
Send, %key%
} else {
ControlFocus, Chrome_RenderWidgetHostHWND1, ahk_id %spotifyHwnd%
ControlSend,, %key%
}
2023/09/22(金) 23:10:08.94ID:aFWrFMGJ0
アクティブになってなかったらアクティブにしてから普通に Send, %key% すればいいんでないの?
2023/09/22(金) 23:16:19.36ID:QYS2Gl5t0
2023/09/22(金) 23:17:51.06ID:QYS2Gl5t0
2023/09/22(金) 23:20:27.07ID:GiZ06ZcB0
>>565-567
これ、なんとなーく動いているようだけど
Chrome_RenderWidgetHostHWND1ってWindow Classでしょ
本来はClassNN、テキスト、コントロールのHWNDのいずれかを指定しなければいけないはずなんだけど
Chrome_RenderWidgetHostHWND1とかIntermediate D3D Window1とか
これ、なんとなーく動いているようだけど
Chrome_RenderWidgetHostHWND1ってWindow Classでしょ
本来はClassNN、テキスト、コントロールのHWNDのいずれかを指定しなければいけないはずなんだけど
Chrome_RenderWidgetHostHWND1とかIntermediate D3D Window1とか
2023/09/22(金) 23:20:58.65ID:lHAlZ4YK0
一人ウィザードおるよな
何で動くのかじっくり解析しないと判らない
何で動くのかじっくり解析しないと判らない
2023/09/22(金) 23:27:39.72ID:GiZ06ZcB0
あっちゃんとClassNNだったか、すまん俺の勘違いだった
忘れてくれ
忘れてくれ
2023/09/24(日) 14:22:42.43ID:3uyZatfe0
Release v2.0.10 · AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.10
Fixed crashing when a named function hotkey is used after #HotIf.
Fixed numeric literals ending with a dot to not cause line continuation.
Fixed pre-increment/decrement to work with chained array indexing.
Fixed OnNotify/OnCommand applying styles only applicable to OnEvent.
Fixed FileExist/DirExist leaking handles when emptydir\* is used.
Fixed DirExist leaking handles when only files match.
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.10
Fixed crashing when a named function hotkey is used after #HotIf.
Fixed numeric literals ending with a dot to not cause line continuation.
Fixed pre-increment/decrement to work with chained array indexing.
Fixed OnNotify/OnCommand applying styles only applicable to OnEvent.
Fixed FileExist/DirExist leaking handles when emptydir\* is used.
Fixed DirExist leaking handles when only files match.
2023/09/24(日) 14:28:51.71ID:rEh5+F890
なんでそんなに不安定なの
2023/09/24(日) 14:29:05.38ID:tlr4nZzK0
ユーザーの移行が本格的に始まったのか
フィードバックが増えたんだろうな
フィードバックが増えたんだろうな
2023/09/25(月) 00:41:40.07ID:Vz/pMkdm0
あるソフト(実行ファイル名をfoo.exeとします)のショートカットを殺しつつ、日本語文字入力中のショートカットは殺したくないのですが、なにか上手くやる方法はあるでしょうか?
例えば、foo.exeのショートカットキーCtrl+Uを無効にしつつ、
foo.exe内のテキストボックスで日本語入力をしているときにはIMEのCtrl+Uの機能を有効のままにしたい、
という感じです
例えば、foo.exeのショートカットキーCtrl+Uを無効にしつつ、
foo.exe内のテキストボックスで日本語入力をしているときにはIMEのCtrl+Uの機能を有効のままにしたい、
という感じです
2023/09/25(月) 00:44:10.82ID:Vz/pMkdm0
>>578
間違えて途中で送信しちゃいました
foo.exeのCtrl+Uを無効にしようとして.ahkファイルに
#IfWinActive,ahk_exe foo.exe
^u::
とすると日本語入力中のCtrl+Uまで無効にされてしまい困っているという状態です
間違えて途中で送信しちゃいました
foo.exeのCtrl+Uを無効にしようとして.ahkファイルに
#IfWinActive,ahk_exe foo.exe
^u::
とすると日本語入力中のCtrl+Uまで無効にされてしまい困っているという状態です
2023/09/25(月) 01:22:43.19ID:H0BPCsvf0
Open InterpreterにAHK組み合わせたら本当の意味でのAutoHotKeyが実現できて笑ってる
2023/09/25(月) 08:25:29.27ID:+xBY+Yqs0
2023/09/26(火) 04:45:18.81ID:8jjFqO/J0
2023/09/26(火) 09:02:12.31ID:UqTVMUhE0
(´・ω・`).。oO(「foo.exe」とかアプリ名を何で伏せるんだろう…)
・foo.exe側でCtrl+Uの割り当てを無効に変える(別のキーに割り当てる)
・日本語入力中のCtrl+Uの代わりにF6を押下する
・ahkでCtrl+U押下したらF6送出するようにする(foo.exe側のF6に何も割り当てがないこと)
この内のどれかで対処する(自分が思いついたのはこれだけだった)
・foo.exe側でCtrl+Uの割り当てを無効に変える(別のキーに割り当てる)
・日本語入力中のCtrl+Uの代わりにF6を押下する
・ahkでCtrl+U押下したらF6送出するようにする(foo.exe側のF6に何も割り当てがないこと)
この内のどれかで対処する(自分が思いついたのはこれだけだった)
2023/09/26(火) 10:16:47.57ID:/VFCsiDa0
エロい奴だから
585名無しさん@お腹いっぱい。
2023/09/26(火) 12:10:25.33ID:BqRz5POi0 エロいやつをホットキー入れてまで起動してるやつおらんやろ
2023/09/26(火) 12:12:30.33ID:/VFCsiDa0
全てのテクノロジーはエロを原動力に発展している
2023/09/26(火) 13:03:53.20ID:Y07m41ei0
chromeとかelectron系はキャレットが独自実装だから取得できないよ
昔ACCライブラリで検出しようとして上手く行かなかったわ
X=%Caret_Location.x% Y=%Caret_Location.y%
昔ACCライブラリで検出しようとして上手く行かなかったわ
X=%Caret_Location.x% Y=%Caret_Location.y%
2023/09/27(水) 22:43:18.37ID:5u5WHwU70
>>583
伏せないほうがいいdすかね?Win版LINEです
伏せないほうがいいdすかね?Win版LINEです
2023/09/28(木) 20:08:11.30ID:SIZ6DkpS0
tooltipにemoji表示する方法ありますか?
2023/09/28(木) 21:09:38.26ID:Nf8VDUte0
モノクロやけど普通に出るやろ
ToolTip "🍦", 100, 150
ToolTip "🍦", 100, 150
2023/09/30(土) 03:56:22.34ID:EHs419dZ0
IfInString, a, m
hensuu:=1
aという変数の中にmという文字があると変数を変えるっていうだけの話なんですけど
IfInString, a, 1
hensuu:=1
IfInString, a, 2
hensuu:=1
IfInString, a, 3
hensuu:=1
と検出する文字列が複数になったときにやってられないんでループで回そうとしているんですが
list=[1,2,3・・・・]
Loop,% list.Length()
{
IfInString, a, list[A_Index]
hensuu:=1
break
}
としているんですが、”へんすう”が0のままでbreakされているようです
原因は何でしょうか?
hensuu:=1
aという変数の中にmという文字があると変数を変えるっていうだけの話なんですけど
IfInString, a, 1
hensuu:=1
IfInString, a, 2
hensuu:=1
IfInString, a, 3
hensuu:=1
と検出する文字列が複数になったときにやってられないんでループで回そうとしているんですが
list=[1,2,3・・・・]
Loop,% list.Length()
{
IfInString, a, list[A_Index]
hensuu:=1
break
}
としているんですが、”へんすう”が0のままでbreakされているようです
原因は何でしょうか?
2023/09/30(土) 07:13:52.00ID:aunpj35J0
原因はv1を使ってることです
2023/09/30(土) 07:49:51.39ID:FJNgzxOZ0
2023/09/30(土) 07:58:11.28ID:nXp5JoSn0
>>591
その例だとこうだろ
hensuu:=0
a:="bred"
list:=["red","green","blue"]
Loop,% list.Length()
{
If InStr(a, list[A_Index]) {
hensuu:=1
break
}
}
msgbox % hensuu
IfInStringは廃止(予定)だから使うべきじゃない
関数のInStrを使う
あと、listの後にコロンが入ってない
文字列なのにダブルクォーテーションでくくってない
その例だとこうだろ
hensuu:=0
a:="bred"
list:=["red","green","blue"]
Loop,% list.Length()
{
If InStr(a, list[A_Index]) {
hensuu:=1
break
}
}
msgbox % hensuu
IfInStringは廃止(予定)だから使うべきじゃない
関数のInStrを使う
あと、listの後にコロンが入ってない
文字列なのにダブルクォーテーションでくくってない
2023/09/30(土) 08:11:22.14ID:8kGAhi8Z0
ちゃんとlistの長さ分だけループ周ってるの?
とか
list[A_Index]がちゃんと複数文字列としてループ内で展開されてるの?
とかもあるけど
そもそもの話としてIfInStringじゃなくてcontains、RegExMatch()あたりを使うべき処理かと
とか
list[A_Index]がちゃんと複数文字列としてループ内で展開されてるの?
とかもあるけど
そもそもの話としてIfInStringじゃなくてcontains、RegExMatch()あたりを使うべき処理かと
2023/09/30(土) 08:16:16.25ID:nXp5JoSn0
普通は検索要素がそう多くなければ正規表現でちょちょってやるような処理よ
フラグを立てるだけならfalseとtrueを使った方が後でソースを見返すときに
分かりやすくていいぞ
hensuu:=false
a:="bred"
if RegExMatch(a,"red|green|blue") {
hensuu:=true
}
msgbox % hensuu
フラグを立てるだけならfalseとtrueを使った方が後でソースを見返すときに
分かりやすくていいぞ
hensuu:=false
a:="bred"
if RegExMatch(a,"red|green|blue") {
hensuu:=true
}
msgbox % hensuu
2023/09/30(土) 22:12:19.26ID:WWZtyfbn0
AutoHotkey初心者です。
質問があります。↓のようなスクリプトを書いて実行させました(verは1.1です)。
;「無変換」が単独で押されたら、「Backspace」が押されたことにする。
vk1D::Send,{Blind}{Backspace}
;「変換」が単独で押されたら、「Enter」が押されたことにする。
vk1C::Send,{Blind}{Enter}
通常の「Backspaceキー」と「Enterキー」ですと、キーを押し続けると削除や改行をし続けますが、
このスクリプトだと「無変換キー」と「変換キー」を押し続けても何も反応はなく、
押し上げてやっと1回だけ削除や改行をします。
これを通常の「Backspaceキー」と「Enterキー」と同じように、
キーを押し続けると削除や改行をし続けるようにするにはどのようなスクリプトを書けばいいのでしょうか?
質問があります。↓のようなスクリプトを書いて実行させました(verは1.1です)。
;「無変換」が単独で押されたら、「Backspace」が押されたことにする。
vk1D::Send,{Blind}{Backspace}
;「変換」が単独で押されたら、「Enter」が押されたことにする。
vk1C::Send,{Blind}{Enter}
通常の「Backspaceキー」と「Enterキー」ですと、キーを押し続けると削除や改行をし続けますが、
このスクリプトだと「無変換キー」と「変換キー」を押し続けても何も反応はなく、
押し上げてやっと1回だけ削除や改行をします。
これを通常の「Backspaceキー」と「Enterキー」と同じように、
キーを押し続けると削除や改行をし続けるようにするにはどのようなスクリプトを書けばいいのでしょうか?
2023/09/30(土) 22:25:35.84ID:FJNgzxOZ0
↑いつもの荒らしです
触らないように
触らないように
600名無しさん@お腹いっぱい。
2023/09/30(土) 22:31:34.90ID:lxiWU+kb0 Blindは大抵変なことになるな
2023/09/30(土) 23:10:22.54ID:g6QA9piE0
>>597
これなんかおかしいよ
Blindで修飾キーの押下の可能性をを示唆しているのに
無変換の単独キーって、よくわからん
例えば、Shift + BS とか Ctrl + BS は普通にエディタ使っていると
人によっては、まあまあ使うんだけど
Shift + 無変換で Shift + BS になってほしいのか、ほしくないのか?
どっち?
これなんかおかしいよ
Blindで修飾キーの押下の可能性をを示唆しているのに
無変換の単独キーって、よくわからん
例えば、Shift + BS とか Ctrl + BS は普通にエディタ使っていると
人によっては、まあまあ使うんだけど
Shift + 無変換で Shift + BS になってほしいのか、ほしくないのか?
どっち?
602597
2023/09/30(土) 23:37:47.61ID:WWZtyfbn0 >>601
私はAutoHotkey初心者なので、「Blind」の意味もよく分かっていません。
参考にしたスクリプトに「Blind」が入っていたので、自分の方でも入れているだけです。
「Shift+無変換」で「Shift+Backspace」にはなって欲しくないです(必要と感じていないため)。
しかし、「Shift+変換」で「Shift+Enter」にはなって欲しいので、
>>597には省略して書きませんでしたが、実際のスクリプトは↓のようになっています。
;「変換」が単独で押されたら、「Enter」が押されたことにする。
vk1C::Send,{Blind}{Enter}
;「Shift+変換」が押されたら、「Shift+Enter」が押されたことにする。
+vk1C::Send,+{Enter}
省略した理由は、「Shift+変換」は押し続けて反応して欲しいわけではなかったからですが、
今、試してみたところ、↑のスクリプトだと、「変換」単独だと押し続けて反応はしませんが、
「Shift+変換」は押し続けて反応しますね。
私の希望は以下の3点です。
@「無変換」を押し続けると「Backspace」を押し続けたように動作して欲しい。
A「変換」を押し続けると「Enter」を押し続けたように動作して欲しい。
B「Shift+変換」を押したら「Shift+Enter」を押したように動作して欲しい。
私はAutoHotkey初心者なので、「Blind」の意味もよく分かっていません。
参考にしたスクリプトに「Blind」が入っていたので、自分の方でも入れているだけです。
「Shift+無変換」で「Shift+Backspace」にはなって欲しくないです(必要と感じていないため)。
しかし、「Shift+変換」で「Shift+Enter」にはなって欲しいので、
>>597には省略して書きませんでしたが、実際のスクリプトは↓のようになっています。
;「変換」が単独で押されたら、「Enter」が押されたことにする。
vk1C::Send,{Blind}{Enter}
;「Shift+変換」が押されたら、「Shift+Enter」が押されたことにする。
+vk1C::Send,+{Enter}
省略した理由は、「Shift+変換」は押し続けて反応して欲しいわけではなかったからですが、
今、試してみたところ、↑のスクリプトだと、「変換」単独だと押し続けて反応はしませんが、
「Shift+変換」は押し続けて反応しますね。
私の希望は以下の3点です。
@「無変換」を押し続けると「Backspace」を押し続けたように動作して欲しい。
A「変換」を押し続けると「Enter」を押し続けたように動作して欲しい。
B「Shift+変換」を押したら「Shift+Enter」を押したように動作して欲しい。
2023/09/30(土) 23:42:14.27ID:KnLHxxU/0
2023/09/30(土) 23:47:22.86ID:KnLHxxU/0
>602
{Blind}付けるなら +vk1c:: の行は要らないのでは?
{Blind}付けるなら +vk1c:: の行は要らないのでは?
2023/10/01(日) 00:07:27.97ID:aO5V046V0
>>602
無変換だけサンプルで
変換の方はわかると思う
vk1D::BS
+vk1D::Del ;Shift + 無変換でdel
;*^vk1D:: ;Ctrl + 無変換は受け付ける
;他の修飾キーと無変換の組み合わせを無効化
*!vk1D::
*#vk1D::
return
当然だけど、無変換 + a など無変換を修飾キーとしたホットキーを混ぜると正しく動作しない
そういうのも使いたいなあとなると、押下時間などを考慮した多少面倒なコードを書く必要がある
そうすると誤爆したりする可能性があるのでお勧めしない
無変換だけサンプルで
変換の方はわかると思う
vk1D::BS
+vk1D::Del ;Shift + 無変換でdel
;*^vk1D:: ;Ctrl + 無変換は受け付ける
;他の修飾キーと無変換の組み合わせを無効化
*!vk1D::
*#vk1D::
return
当然だけど、無変換 + a など無変換を修飾キーとしたホットキーを混ぜると正しく動作しない
そういうのも使いたいなあとなると、押下時間などを考慮した多少面倒なコードを書く必要がある
そうすると誤爆したりする可能性があるのでお勧めしない
606597
2023/10/01(日) 00:24:47.36ID:5y0E7yg10 >>603
そうです。別の行に↓のようなスクリプトを書いています。
;「無変換+Q」が押されたら、「Alt+←」が押されたことにする(戻る)。
vk1D & q::Send,!{Left}
;「無変換+W」が押されたら、「Alt+→」が押されたことにする(進む)。
vk1D & w::Send,!{Right}
>>604
今、試してみましたが「+vk1c:: の行」を消すと、
「Shift+変換」を押したら、「Shift+Enter」を押したように動作しなくなります。
>>605
スクリプト、どうもありがとうございます。
別の行に「無変換+何かのキー」のスクリプトを書くと、
「無変換」を単独で押し続けた時に「Backspace」を押し続けたように動作しなくなるということですか?
そうならば、無変換キーを修飾キーとしたホットキーは使い続けたいので、
「無変換」を単独で押し続けた時に「Backspace」を押し続けたように動作して欲しいという希望は諦めることにします。
そうです。別の行に↓のようなスクリプトを書いています。
;「無変換+Q」が押されたら、「Alt+←」が押されたことにする(戻る)。
vk1D & q::Send,!{Left}
;「無変換+W」が押されたら、「Alt+→」が押されたことにする(進む)。
vk1D & w::Send,!{Right}
>>604
今、試してみましたが「+vk1c:: の行」を消すと、
「Shift+変換」を押したら、「Shift+Enter」を押したように動作しなくなります。
>>605
スクリプト、どうもありがとうございます。
別の行に「無変換+何かのキー」のスクリプトを書くと、
「無変換」を単独で押し続けた時に「Backspace」を押し続けたように動作しなくなるということですか?
そうならば、無変換キーを修飾キーとしたホットキーは使い続けたいので、
「無変換」を単独で押し続けた時に「Backspace」を押し続けたように動作して欲しいという希望は諦めることにします。
2023/10/01(日) 00:44:40.72ID:aO5V046V0
608597
2023/10/01(日) 08:03:39.09ID:5y0E7yg10 >>607
おっしゃっていることがよく分かりません。
私は「無変換」を「修飾キー」として使った上で、
「無変換」単独押しをした時は(Backspaceキーとして)「キーリピート」をして削除し続けて欲しいのですが、
それはできないということでしょうか?
おっしゃっていることがよく分かりません。
私は「無変換」を「修飾キー」として使った上で、
「無変換」単独押しをした時は(Backspaceキーとして)「キーリピート」をして削除し続けて欲しいのですが、
それはできないということでしょうか?
2023/10/01(日) 08:09:26.00ID:vJZ6he//0
2023/10/01(日) 09:14:16.51ID:jCSy+5iI0
キートップの文字を書き換えたかのように、そのキーを完全に置き換える
どんな組み合わせで押しても置き換わって動作する
という挙動をahkで書くのはなかなか大変だけど、
yamyでは1行だったんだよな
どんな組み合わせで押しても置き換わって動作する
という挙動をahkで書くのはなかなか大変だけど、
yamyでは1行だったんだよな
2023/10/01(日) 09:37:27.76ID:1MOKFxYN0
>>608
修飾キーっていうのは単独押しでは作用しないから修飾キーなわけでしょ
例外はWinキーで、これは単独だと離したときにスタートメニューが発動するから成立している
これを無変換に当てはめるとすると、離したときにBSが発動してたらキーリピートになりようがない
だから前のレスで書いたように、押下時間でリピートになったり、修飾キーになったりみたいな
仕組みにする必要がある
ただBSなんかは瞬時に発動してくれないとイラつくだけだと思うんだよね
修飾キーのつもりで押したのに文字が消えたとか誤爆もあるし
修飾キーっていうのは単独押しでは作用しないから修飾キーなわけでしょ
例外はWinキーで、これは単独だと離したときにスタートメニューが発動するから成立している
これを無変換に当てはめるとすると、離したときにBSが発動してたらキーリピートになりようがない
だから前のレスで書いたように、押下時間でリピートになったり、修飾キーになったりみたいな
仕組みにする必要がある
ただBSなんかは瞬時に発動してくれないとイラつくだけだと思うんだよね
修飾キーのつもりで押したのに文字が消えたとか誤爆もあるし
612597
2023/10/01(日) 10:23:09.43ID:IXVZWApm0613名無しさん@お腹いっぱい。
2023/10/01(日) 18:48:40.48ID:MIF/cMMY0 クリップボードに画像ファイルがコピーされた時に、それを開いて画像データをクリップボードに持つようにしたいのですが、どう書くのがいいでしょう?
powertoyでもできたりしますか?
powertoyでもできたりしますか?
2023/10/02(月) 07:50:12.52ID:Y0OCwQiz0
>>613
正:それを開いて画像データをメモリに持つ
誤:それを開いて画像データをクリップボードに持つ
ということ?
Win10/11 以降の Snip & Sketch/Snipping Tool なら特に何もせんでも
頭36yte分の Clipborad の header/Signature? を読み飛ばしゃ PNG の
画像データがそのまま入ってる。
それ以前の場合はちょっと面倒で、歴史的経緯?でちょっと古い形式での
Windows BMPデータが入っているっぽいので色々と変換せんと、今どきの
BMPデータにならない。
正:それを開いて画像データをメモリに持つ
誤:それを開いて画像データをクリップボードに持つ
ということ?
Win10/11 以降の Snip & Sketch/Snipping Tool なら特に何もせんでも
頭36yte分の Clipborad の header/Signature? を読み飛ばしゃ PNG の
画像データがそのまま入ってる。
それ以前の場合はちょっと面倒で、歴史的経緯?でちょっと古い形式での
Windows BMPデータが入っているっぽいので色々と変換せんと、今どきの
BMPデータにならない。
615名無しさん@お腹いっぱい。
2023/10/02(月) 19:37:50.10ID:tI65VkKa0 AHK v2 の fat arrow function は
() => expr
というフォーマットで、式だから 1行しか書けない
() => 123
{} が来る場合は JavaScript のように複数行書けたらいいのにな
```
() => {
a := 123
b := 456
return a + b
}
```
のように
比較的簡単に実装できそうだけど、実装すれば breaking change になってしまう
現状だと () => {} はオブジェクトを返すという意味なので。
JavaScript の場合は、{} が来たら例外的に関数本体として扱われるようになっていて便利だ
() => expr
というフォーマットで、式だから 1行しか書けない
() => 123
{} が来る場合は JavaScript のように複数行書けたらいいのにな
```
() => {
a := 123
b := 456
return a + b
}
```
のように
比較的簡単に実装できそうだけど、実装すれば breaking change になってしまう
現状だと () => {} はオブジェクトを返すという意味なので。
JavaScript の場合は、{} が来たら例外的に関数本体として扱われるようになっていて便利だ
2023/10/02(月) 19:38:02.65ID:4IbfaSx20
ahk v1.1です。
エクスプローラーで使用しています。
IME.ahk を使用しています。
文字入力中(名前の変更や検索欄入力)だった場合は、 a
そうでない場合は、+^a のスクリプトにしたいのですが
下記の方法だと文字入力中の判定がうまく出来ないので
教えていただきたいです。
a::
If IME_GetConverting() = 0 {
Send, +^a
}else{
Send, a
}
Return
エクスプローラーで使用しています。
IME.ahk を使用しています。
文字入力中(名前の変更や検索欄入力)だった場合は、 a
そうでない場合は、+^a のスクリプトにしたいのですが
下記の方法だと文字入力中の判定がうまく出来ないので
教えていただきたいです。
a::
If IME_GetConverting() = 0 {
Send, +^a
}else{
Send, a
}
Return
2023/10/02(月) 19:38:16.12ID:4IbfaSx20
ahk v1.1です。
エクスプローラーで使用しています。
IME.ahk を使用しています。
文字入力中(名前の変更や検索欄入力)だった場合は、 a
そうでない場合は、+^a のスクリプトにしたいのですが
下記の方法だと文字入力中の判定がうまく出来ないので
教えていただきたいです。
a::
If IME_GetConverting() = 0 {
Send, +^a
}else{
Send, a
}
Return
エクスプローラーで使用しています。
IME.ahk を使用しています。
文字入力中(名前の変更や検索欄入力)だった場合は、 a
そうでない場合は、+^a のスクリプトにしたいのですが
下記の方法だと文字入力中の判定がうまく出来ないので
教えていただきたいです。
a::
If IME_GetConverting() = 0 {
Send, +^a
}else{
Send, a
}
Return
2023/10/02(月) 19:38:30.91ID:4IbfaSx20
ahk v1.1です。
エクスプローラーで使用しています。
IME.ahk を使用しています。
文字入力中(名前の変更や検索欄入力)だった場合は、 a
そうでない場合は、+^a のスクリプトにしたいのですが
下記の方法だと文字入力中の判定がうまく出来ないので
教えていただきたいです。
a::
If IME_GetConverting() = 0 {
Send, +^a
}else{
Send, a
}
Return
エクスプローラーで使用しています。
IME.ahk を使用しています。
文字入力中(名前の変更や検索欄入力)だった場合は、 a
そうでない場合は、+^a のスクリプトにしたいのですが
下記の方法だと文字入力中の判定がうまく出来ないので
教えていただきたいです。
a::
If IME_GetConverting() = 0 {
Send, +^a
}else{
Send, a
}
Return
2023/10/02(月) 22:31:01.66ID:JWMVaWUA0
2023/10/03(火) 17:39:12.06ID:2DNPH3ID0
>>618
あなたがやりたいことは>>581の方法で実装できます
ただし、検索欄等のキャレットは取得できないかもしれないので
その場合は ControlGetFocus でコントロール名を照合するなどの別のアプローチが必要になるかもしれません
蛇足ですが IME_GetConverting() は変換候補ウィンドウが表示されているかどうかを判別しているだけなので
直接入力時や変換未確定(文字列に下線が付いてるだけの状態)時は文字入力中と判断されません
また、IMEの仕様上の問題で別のプロセスから入力コンテキスト(変換中の情報)を取得することはできないので
外部アプリの文字入力中かどうかの判定にはそのアプリに適した様々な方法を試す必要があります
あなたがやりたいことは>>581の方法で実装できます
ただし、検索欄等のキャレットは取得できないかもしれないので
その場合は ControlGetFocus でコントロール名を照合するなどの別のアプローチが必要になるかもしれません
蛇足ですが IME_GetConverting() は変換候補ウィンドウが表示されているかどうかを判別しているだけなので
直接入力時や変換未確定(文字列に下線が付いてるだけの状態)時は文字入力中と判断されません
また、IMEの仕様上の問題で別のプロセスから入力コンテキスト(変換中の情報)を取得することはできないので
外部アプリの文字入力中かどうかの判定にはそのアプリに適した様々な方法を試す必要があります
2023/10/03(火) 19:30:40.48ID:759jFrqH0
2023/10/04(水) 18:56:24.73ID:tIruFCPa0
重い腰を上げてようやくv2に移行したがv2最高だわ
普通の文法のプログラムが書けるというすばらしさ
v1のサポートさっさと打ち切ってネット上の醜いv1のコード駆逐してほしい
普通の文法のプログラムが書けるというすばらしさ
v1のサポートさっさと打ち切ってネット上の醜いv1のコード駆逐してほしい
2023/10/04(水) 22:35:25.70ID:kSzEGkao0
624名無しさん@お腹いっぱい。
2023/10/05(木) 06:02:55.84ID:bWuMkV3d0 >>615 です
関数本体を宣言できる機能が1ヶ月前に v2.1-alpha で追加されたみたいです
書き方は、
() => {}
ではなく、
() {}
こうするらしい
(たしかにこれだと breaking change にならない)
```
SetTimer(() {
MsgBox "5 second timer expired."
}, -5000)
```
使い捨ての関数を宣言したいことはよくあるので便利そう
https://www.autohotkey.com/docs/alpha/Functions.htm#funcexpr
alpha で追加されたことに気づかずに forum で feature request して、
更に実装日を1ヶ月勘違いして数日前に実装されたのかと勘違いして返事してしまった
関数本体を宣言できる機能が1ヶ月前に v2.1-alpha で追加されたみたいです
書き方は、
() => {}
ではなく、
() {}
こうするらしい
(たしかにこれだと breaking change にならない)
```
SetTimer(() {
MsgBox "5 second timer expired."
}, -5000)
```
使い捨ての関数を宣言したいことはよくあるので便利そう
https://www.autohotkey.com/docs/alpha/Functions.htm#funcexpr
alpha で追加されたことに気づかずに forum で feature request して、
更に実装日を1ヶ月勘違いして数日前に実装されたのかと勘違いして返事してしまった
625名無しさん@お腹いっぱい。
2023/10/05(木) 06:18:36.34ID:bWuMkV3d0 v2-alpha のドキュメント
https://www.autohotkey.com/docs/alpha/
v2-alpha のダウンロード
https://www.autohotkey.com/download/2.1/
v2-alpha のリリースノート
https://www.autohotkey.com/docs/alpha/ChangeLog.htm
https://www.autohotkey.com/docs/alpha/
v2-alpha のダウンロード
https://www.autohotkey.com/download/2.1/
v2-alpha のリリースノート
https://www.autohotkey.com/docs/alpha/ChangeLog.htm
626名無しさん@お腹いっぱい。
2023/10/06(金) 01:45:23.21ID:ev1enbnj0 v2.1 の無名関数を試した
AHK の無名関数は、OTB style としての僅かな制約(最初の { で改行しないといけない)があるけど、
それ以外は普通に使える
無名関数がサポートされたことで、言語としての書き心地は JavaScript とかなり近くなった
無名関数が使えると発想も変わるし、多用もする機能なので、
実質的には v2.5 くらいの変化に感じる
AHK の無名関数は、OTB style としての僅かな制約(最初の { で改行しないといけない)があるけど、
それ以外は普通に使える
無名関数がサポートされたことで、言語としての書き心地は JavaScript とかなり近くなった
無名関数が使えると発想も変わるし、多用もする機能なので、
実質的には v2.5 くらいの変化に感じる
2023/10/06(金) 05:15:27.47ID:jYxejNZf0
fat arrowで無理やり書いてたのから開放されるのか
三項演算子覚えたてみたいな見た目になるから嫌だったんだよ
三項演算子覚えたてみたいな見た目になるから嫌だったんだよ
628名無しさん@お腹いっぱい。
2023/10/07(土) 19:31:15.14ID:9zvIUWci0 v2.1 では、unset というもの(JavaScript の undefined のような)が導入された
これまで、引数のデフォルト値などは 0, -1, '' あたりを代入してごまかすしかなかったけど、unset できれいに(普通に)書けるようになった
```
; これまでの書き方
myFunc(a, b := '') {
if b != ''
do something
}
; v2.1
myFunc(a, b := unset) {
if IsSet(b)
do something
}
```
unset 導入に伴い、?, ??, ??= 演算子も使えるようになった
```
obj?.a?.func()
b := c ?? 123
d ??= 456
```
変数を(自分のメモ用に)宣言だけしたいときにも、適当な値を代入する代わりに unset が使える
```
; これは実質的には何も宣言していないのと同じで、この行自体が存在しない場合と等価
a := unset
```
これまで、引数のデフォルト値などは 0, -1, '' あたりを代入してごまかすしかなかったけど、unset できれいに(普通に)書けるようになった
```
; これまでの書き方
myFunc(a, b := '') {
if b != ''
do something
}
; v2.1
myFunc(a, b := unset) {
if IsSet(b)
do something
}
```
unset 導入に伴い、?, ??, ??= 演算子も使えるようになった
```
obj?.a?.func()
b := c ?? 123
d ??= 456
```
変数を(自分のメモ用に)宣言だけしたいときにも、適当な値を代入する代わりに unset が使える
```
; これは実質的には何も宣言していないのと同じで、この行自体が存在しない場合と等価
a := unset
```
629名無しさん@お腹いっぱい。
2023/10/07(土) 19:32:02.43ID:9zvIUWci0 JavaScript のように a === undefined とは書けず、IsSet(a) と明示的にチェックする必要があるという違いがあるけれど、undefined のようなものが使えるようになった、という話
なぜ IsSet() で明示的なチェックが必要なのかというと、JavaScript の(strict mode の)場合は a という変数が存在して(宣言はされていて)その値が undefined だけど、AHK v2.1 の場合は、a := unset とすると、a という変数自体は存在しないまま
IsSet() は、変数の値が unset かどうかをチェックしているのではなく、変数自体が存在するかをチェックしているからだろうと思う
このことと関連して、デフォルト引数で unset を代入したとき、その引数を他の関数に渡したい場合は次のように書く
```
myFunc(a := unset) {
myAnotherFunc(a ?? unset)
; myAnotherFunc(a) だと、a が unset のとき、a という変数自体が存在しないのでエラーになる
}
```
なぜ IsSet() で明示的なチェックが必要なのかというと、JavaScript の(strict mode の)場合は a という変数が存在して(宣言はされていて)その値が undefined だけど、AHK v2.1 の場合は、a := unset とすると、a という変数自体は存在しないまま
IsSet() は、変数の値が unset かどうかをチェックしているのではなく、変数自体が存在するかをチェックしているからだろうと思う
このことと関連して、デフォルト引数で unset を代入したとき、その引数を他の関数に渡したい場合は次のように書く
```
myFunc(a := unset) {
myAnotherFunc(a ?? unset)
; myAnotherFunc(a) だと、a が unset のとき、a という変数自体が存在しないのでエラーになる
}
```
2023/10/07(土) 19:53:04.05ID:p00Uoc4y0
めんどくさいだけでメリットを感じない
2023/10/08(日) 13:05:54.46ID:SBMAHfMn0
2023/10/08(日) 13:53:44.85ID:SBMAHfMn0
なんかこれ系使ってるの書いたなと思って探してきた
前にループでRangeを使いたいって話があった後、自分でも範囲指定のが欲しくなったときのやつ
; PythonのRangeみたいなやつ(forで使うことしか考えてない)
Range(start?, stop?, step?) {
s := Integer(step ?? 1)
if !IsSet(start) && !IsSet(stop) && !IsSet(step)
c := 1 - s ; Range()
else if IsSet(start) && !IsSet(stop) && !IsSet(step)
c := 1 - s, m := Integer(start) ; Range(stop)
else if IsSet(start) && IsSet(stop)
c := Integer(start) - s, m := Integer(stop) ; Range(start, stop[, step])
else
Throw Error("パラメータが変です。", "Range")
return (&n) => (n := c += s, !IsSet(start) || c <= m)
}
前にループでRangeを使いたいって話があった後、自分でも範囲指定のが欲しくなったときのやつ
; PythonのRangeみたいなやつ(forで使うことしか考えてない)
Range(start?, stop?, step?) {
s := Integer(step ?? 1)
if !IsSet(start) && !IsSet(stop) && !IsSet(step)
c := 1 - s ; Range()
else if IsSet(start) && !IsSet(stop) && !IsSet(step)
c := 1 - s, m := Integer(start) ; Range(stop)
else if IsSet(start) && IsSet(stop)
c := Integer(start) - s, m := Integer(stop) ; Range(start, stop[, step])
else
Throw Error("パラメータが変です。", "Range")
return (&n) => (n := c += s, !IsSet(start) || c <= m)
}
633名無しさん@お腹いっぱい。
2023/10/08(日) 23:51:41.99ID:yx819iOD02023/10/13(金) 20:31:04.41ID:lUFs50Mf0
v2使ってます
ダブルクオーテーションで囲んだ変数を展開する方法はあるでしょうか?
調べてみたらv1の頃はできたっぽいんですが…
以下は例で、本当にやりたいのはテキストファイルに書いておいた文字列が含む変数を展開することです
v := "「A_AhkVersion」"
MsgBox v ; A_AhkVersionと表示されるのを2.0.10とかにしたい
ダブルクオーテーションで囲んだ変数を展開する方法はあるでしょうか?
調べてみたらv1の頃はできたっぽいんですが…
以下は例で、本当にやりたいのはテキストファイルに書いておいた文字列が含む変数を展開することです
v := "「A_AhkVersion」"
MsgBox v ; A_AhkVersionと表示されるのを2.0.10とかにしたい
2023/10/13(金) 21:09:19.74ID:kszrn8gL0
無変換(SC07B)+変換(SC079)+o
はどうやって書けばいいでしょうか?
~SC079 & SC07B & o::
は動きませんでした
はどうやって書けばいいでしょうか?
~SC079 & SC07B & o::
は動きませんでした
2023/10/13(金) 22:58:19.97ID:1crCpIhe0
>>634
https://ahkscript.github.io/ja/docs/v2/Variables.htm#Intro
>>635
修飾キー(Ctrl、Shift、Alt、Win)以外の3つ以上のコンビネーションキーはサポートされていない
ホットキーを2つまでにして、#IF または ホットキーの処理内で GetKeyState で3つ目以降のキー状態を取得して分岐させることは可能ではあるが
そもそも使用中のキーボードによっては修飾キー以外のキーは3つ以上の同時押しを認識できない場合も多々あるのでそこら辺は環境による
https://ahkscript.github.io/ja/docs/v2/Variables.htm#Intro
>>635
修飾キー(Ctrl、Shift、Alt、Win)以外の3つ以上のコンビネーションキーはサポートされていない
ホットキーを2つまでにして、#IF または ホットキーの処理内で GetKeyState で3つ目以降のキー状態を取得して分岐させることは可能ではあるが
そもそも使用中のキーボードによっては修飾キー以外のキーは3つ以上の同時押しを認識できない場合も多々あるのでそこら辺は環境による
2023/10/13(金) 23:04:18.36ID:ERs/JTAS0
>>634
https://www.autohotkey.com/docs/v2/lib/RegExMatch.htm#ExDeref
これv1の時からTransform廃止するからこんな感じの関数でやってねって言ってたけど
関数内ローカルの展開に使えなくてTransformの代わりにならない
https://www.autohotkey.com/docs/v2/lib/RegExMatch.htm#ExDeref
これv1の時からTransform廃止するからこんな感じの関数でやってねって言ってたけど
関数内ローカルの展開に使えなくてTransformの代わりにならない
2023/10/14(土) 00:58:11.68ID:iMxXiXwK0
>>636
ありがとうございます
アドバイス通りにやったらうまくいきました
#If GetKeyState("SC07B", "P") && GetKeyState("SC079", "P")
i::
SendInput, {Up}
return
#if
ところが次の問題が~sc079 & i::を設定していると動かなくなります
同時併用はできないでしょうか?
ありがとうございます
アドバイス通りにやったらうまくいきました
#If GetKeyState("SC07B", "P") && GetKeyState("SC079", "P")
i::
SendInput, {Up}
return
#if
ところが次の問題が~sc079 & i::を設定していると動かなくなります
同時併用はできないでしょうか?
2023/10/14(土) 08:08:17.62ID:DXkbEwUP0
2023/10/14(土) 08:39:17.96ID:281ftA3E0
>>638
実際にどういう書き方をしているかはわからんけど、おそらく #If が同条件での発動になってて ~sc079 & i:: の方が優先されているだけだと思う
やり方は色々あるけど一例としてこんな感じでも動く
#If !GetKeyState("SC07B", "P")
~sc079 & i::SendInput, {Down}
#If
#If GetKeyState("SC07B", "P") && GetKeyState("SC079", "P")
i::SendInput, {Up}
#If
実際にどういう書き方をしているかはわからんけど、おそらく #If が同条件での発動になってて ~sc079 & i:: の方が優先されているだけだと思う
やり方は色々あるけど一例としてこんな感じでも動く
#If !GetKeyState("SC07B", "P")
~sc079 & i::SendInput, {Down}
#If
#If GetKeyState("SC07B", "P") && GetKeyState("SC079", "P")
i::SendInput, {Up}
#If
2023/10/14(土) 09:17:07.76ID:3TcJyM+70
>>637
どうにかならないかと思ったけどあんまりどうにもならなかった
ローカル変数を扱いたいときだけ列挙してクロージャにして渡して
MsgBox Deref("%var1%def%var2%", varName => (var1, var2, %varName%))
関数定義のところで受け取って
Deref(Str, derefFunc?)
途中のderef部分を
out .= IsSet(derefFunc) ? derefFunc(m[2]) : %m[2]%
みたいな
どうにかならないかと思ったけどあんまりどうにもならなかった
ローカル変数を扱いたいときだけ列挙してクロージャにして渡して
MsgBox Deref("%var1%def%var2%", varName => (var1, var2, %varName%))
関数定義のところで受け取って
Deref(Str, derefFunc?)
途中のderef部分を
out .= IsSet(derefFunc) ? derefFunc(m[2]) : %m[2]%
みたいな
2023/10/14(土) 13:14:24.79ID:281ftA3E0
>>634
636だけどちょっと読み違えてた。そういうことをやりたいならこんな感じで変数にしたい文字列を置き換えるかな…
v := "「A_AhkVersion」「A_YYYY」"
for var in ["A_AhkVersion", "A_YYYY"]
v := RegExReplace(v, var, %var%)
MsgBox v
連想配列を用いる方法もある。一見冗長に見えるがプログラミング的に推奨されるのはこちらの方だと思う
variables := Map("A_AhkVersion", A_AhkVersion, "A_YYYY", A_YYYY)
for key in variables
v := RegExReplace(v, key, variables[key])
v1のTransformも内部的には同様のことやってると思う。ただ、廃止された理由にも含まれると思うけど
予想外のところが変換されてたりしてバグの温床になるのであまり推奨されない
やるにしてももっとマッチパターンを厳密化した方が良い
>>641 の言ってることは別の問題で、やりたくはないんだろうけど元の変数をグローバル化してしまうのが簡単ではある
まあ手段が目的化してしまってる所もあるんだろうけど、
単純な文字列展開なら文字列結合やFormat関数でどうとでもなるので別にいらないのでは?とも思う
636だけどちょっと読み違えてた。そういうことをやりたいならこんな感じで変数にしたい文字列を置き換えるかな…
v := "「A_AhkVersion」「A_YYYY」"
for var in ["A_AhkVersion", "A_YYYY"]
v := RegExReplace(v, var, %var%)
MsgBox v
連想配列を用いる方法もある。一見冗長に見えるがプログラミング的に推奨されるのはこちらの方だと思う
variables := Map("A_AhkVersion", A_AhkVersion, "A_YYYY", A_YYYY)
for key in variables
v := RegExReplace(v, key, variables[key])
v1のTransformも内部的には同様のことやってると思う。ただ、廃止された理由にも含まれると思うけど
予想外のところが変換されてたりしてバグの温床になるのであまり推奨されない
やるにしてももっとマッチパターンを厳密化した方が良い
>>641 の言ってることは別の問題で、やりたくはないんだろうけど元の変数をグローバル化してしまうのが簡単ではある
まあ手段が目的化してしまってる所もあるんだろうけど、
単純な文字列展開なら文字列結合やFormat関数でどうとでもなるので別にいらないのでは?とも思う
2023/10/14(土) 17:31:51.42ID:iMxXiXwK0
2023/10/14(土) 21:33:45.85ID:3TcJyM+70
645633
2023/10/15(日) 13:03:37.69ID:/B+GGiqI0 お返事をくださった皆さん、ありがとうございました
書き忘れてましたがv1でのやり方はご指摘の通りTransformでした
使う変数は組込変数で、使う場面も限定されるので、連想配列で工夫したいと思います
書き忘れてましたがv1でのやり方はご指摘の通りTransformでした
使う変数は組込変数で、使う場面も限定されるので、連想配列で工夫したいと思います
2023/10/15(日) 15:47:01.10ID:TKXXnipr0
https://www.autohotkey.com/docs/v2/Scripts.htm#continuation-section
だいぶ前のレスで上記URLを参考にしたと思われる
v2でのヒアドキュメントが変数を絡めると見にくくなる話が出てたが
継続行開始と終了の()の内側に"入れ改行位置を分けてやればいけることに気がついた
F1:: { ; 公式ドキュメントの例に則った記述
MsgBox("
(Join
現在のバージョンは「
)" A_AhkVersion "
(
」です。
)", "テストメッセージ")
}
F2:: { ; ちょっと詰め込みすぎて逆に分かりにくかもだがこんな感じでいける
MsgBox(
(Comment
"現在のバージョンは「" A_AhkVersion "」です。
今年は" A_YYYY "年です。
来年は" A_YYYY + 1 "年になるでしょう。 ; VSCODE AHKv2-LSP では文字列カラーになるけど、
; Commentオプションも機能する
来月は" ((A_MM + 1 > 12) ? 1 : A_MM + 1) "月のはずです。"
), "テストメッセージ")
}
ただし、公式記法と違い文中の"は`"のように明示的にエスケープする必要がある
その他の自動インデント判定等は普通に機能する
だいぶ前のレスで上記URLを参考にしたと思われる
v2でのヒアドキュメントが変数を絡めると見にくくなる話が出てたが
継続行開始と終了の()の内側に"入れ改行位置を分けてやればいけることに気がついた
F1:: { ; 公式ドキュメントの例に則った記述
MsgBox("
(Join
現在のバージョンは「
)" A_AhkVersion "
(
」です。
)", "テストメッセージ")
}
F2:: { ; ちょっと詰め込みすぎて逆に分かりにくかもだがこんな感じでいける
MsgBox(
(Comment
"現在のバージョンは「" A_AhkVersion "」です。
今年は" A_YYYY "年です。
来年は" A_YYYY + 1 "年になるでしょう。 ; VSCODE AHKv2-LSP では文字列カラーになるけど、
; Commentオプションも機能する
来月は" ((A_MM + 1 > 12) ? 1 : A_MM + 1) "月のはずです。"
), "テストメッセージ")
}
ただし、公式記法と違い文中の"は`"のように明示的にエスケープする必要がある
その他の自動インデント判定等は普通に機能する
2023/10/16(月) 06:27:36.80ID:HnFsiC+R0
なんか無理やりヒアドキュメント使いたいってだけで本末転倒なんよ
最初の例だと
F1:: {
MsgBox(
"現在のバージョンは「"
A_AhkVersion
"」です。"
,"テストメッセージ"
)
}
とか書けばいいだけだし、二番目の例だと逆に可読性が低くてメンテナンスに問題出やすい
それに仕様の穴を突くような変態表記していると、本体更新で後々にバグとして顕在化してきて支障が出る
最初の例だと
F1:: {
MsgBox(
"現在のバージョンは「"
A_AhkVersion
"」です。"
,"テストメッセージ"
)
}
とか書けばいいだけだし、二番目の例だと逆に可読性が低くてメンテナンスに問題出やすい
それに仕様の穴を突くような変態表記していると、本体更新で後々にバグとして顕在化してきて支障が出る
2023/10/16(月) 10:20:02.59ID:Bz5r9zRC0
なにがなんでもv2の欠点を欠点と認めない人がずっと頑張ってるけど
その行為なんかメリットある?
その行為なんかメリットある?
2023/10/16(月) 11:38:46.89ID:Wb0gkuWM0
v3まで待つしか
2023/10/16(月) 12:44:38.46ID:JfuEMiXm0
v1のヘンタイコードに対応することは二度とないよ
2023/10/16(月) 16:43:14.30ID:eNxVDezc0
過去の資産のあるゴミ言語から
資産のないゴミ言語になった
資産のないゴミ言語になった
2023/10/16(月) 16:50:51.45ID:Wb0gkuWM0
先進性があるならともかく、どっかで見たような言語を再開発する意味とは
2023/10/16(月) 18:31:08.61ID:dLR3pMBg0
すまん例が悪かった。AHKでヒアドキュメントを使いたい理由って大抵は簡易的なリストや箇条書きなどの複数行の文を出力する際に
コード上で書いてあるインデントをLTrimで無視したい場合だと思うんだけど、公式例通りにやると変数が絡むとややこしくなるが、こういう風にも書けるということ
俺も理解が足りてなかったが、仕様上の穴ではなく、公式ドキュメントが分かりにくいだけで継続セクションが実際にどのようにどこまで有効であるのかという話
よく読んだら引用符で始まらない場合は式として扱われるという主旨のことが回りくどく書いてあった。正直そんなに必要になることはないし、どうでもいいと言われればそれでいいんだけどね
; 公式例 ""で囲んだ文字列内で継続セクションを開始している為()内の全てが文字列として扱われ、文中の"も文字として扱われるので、式を扱う場合は一度セクションを区切る必要がある
MsgBox("
(LTrim
現在のバージョンは「
)" A_AhkVersion "
(LTrim
」です。
あいうえお
かき"く"けこ`nさしすせそ
)"
) ; 5chの仕様の為、インデントは全角スペースに置き換え
; 文字列結合 各行頭行末に"、文中の"はエスケープ、改行もエスケープされた物のみ 全文を1行にまとめても良い
MsgBox(
"現在のバージョンは「" A_AhkVersion "」です。`n"
"あいうえお`n"
"かき`"く`"けこ`nさしすせそ"
)
; ""の位置を変え、文中の"はエスケープ 文字列結合と同じく式として扱われ、対応する()内が継続セクションと認識される
MsgBox(
(LTrim
"現在のバージョンは「" A_AhkVersion "」です。
あいうえお
かき`"く`"けこ`nさしすせそ"
)
)
コード上で書いてあるインデントをLTrimで無視したい場合だと思うんだけど、公式例通りにやると変数が絡むとややこしくなるが、こういう風にも書けるということ
俺も理解が足りてなかったが、仕様上の穴ではなく、公式ドキュメントが分かりにくいだけで継続セクションが実際にどのようにどこまで有効であるのかという話
よく読んだら引用符で始まらない場合は式として扱われるという主旨のことが回りくどく書いてあった。正直そんなに必要になることはないし、どうでもいいと言われればそれでいいんだけどね
; 公式例 ""で囲んだ文字列内で継続セクションを開始している為()内の全てが文字列として扱われ、文中の"も文字として扱われるので、式を扱う場合は一度セクションを区切る必要がある
MsgBox("
(LTrim
現在のバージョンは「
)" A_AhkVersion "
(LTrim
」です。
あいうえお
かき"く"けこ`nさしすせそ
)"
) ; 5chの仕様の為、インデントは全角スペースに置き換え
; 文字列結合 各行頭行末に"、文中の"はエスケープ、改行もエスケープされた物のみ 全文を1行にまとめても良い
MsgBox(
"現在のバージョンは「" A_AhkVersion "」です。`n"
"あいうえお`n"
"かき`"く`"けこ`nさしすせそ"
)
; ""の位置を変え、文中の"はエスケープ 文字列結合と同じく式として扱われ、対応する()内が継続セクションと認識される
MsgBox(
(LTrim
"現在のバージョンは「" A_AhkVersion "」です。
あいうえお
かき`"く`"けこ`nさしすせそ"
)
)
2023/10/16(月) 19:09:39.65ID:pPRJ1RqD0
この仕様を見ていると変数展開させて使うって人は
ほとんどいないんだろうなと思うわ
PowerShellみたいにした方が良いのに
ほとんどいないんだろうなと思うわ
PowerShellみたいにした方が良いのに
2023/10/16(月) 19:19:36.47ID:YfG7lbKB0
pythonのf文字列も実装遅かったしな
前からあったアイディアなのに採用しなかったということは、意図的に避けたんだろう
前からあったアイディアなのに採用しなかったということは、意図的に避けたんだろう
656名無しさん@お腹いっぱい。
2023/10/17(火) 19:53:48.71ID:v6kMRlAv0 右クリックだけの時は普通に右クリックして、
右クリック+ホイールの上下でブラウザの拡大縮小をやりたいんですが
下のマクロだとマウスクリック+ホイール上下で拡大縮小と右クリックメニューが同時に出ます
また、ブラウザのマウスジェスチャが効かなくなります。
どうやって修正したらいいですか。
RButton::RButton
return
RButton & WheelUp::
SendInput, {RButton}^{-} ; マウスの右クリック + ホイール上でCtrl+「-」が送信される
return
RButton & WheelDown::
SendInput, {RButton}^{+} ; マウスの右クリック + ホイール下でCtrl+「+」が送信される
return
右クリック+ホイールの上下でブラウザの拡大縮小をやりたいんですが
下のマクロだとマウスクリック+ホイール上下で拡大縮小と右クリックメニューが同時に出ます
また、ブラウザのマウスジェスチャが効かなくなります。
どうやって修正したらいいですか。
RButton::RButton
return
RButton & WheelUp::
SendInput, {RButton}^{-} ; マウスの右クリック + ホイール上でCtrl+「-」が送信される
return
RButton & WheelDown::
SendInput, {RButton}^{+} ; マウスの右クリック + ホイール下でCtrl+「+」が送信される
return
657sage
2023/10/17(火) 21:25:54.42ID:hsUb4Jn70 右クリックメニューが最後出てもいいなら
WheelUp::
if GetKeyState("RButton")
SendInput {ctrl down}{WheelUp}{ctrl up}
else
SendInput {WheelUp}
return
WheelDown::
if GetKeyState("RButton")
SendInput {ctrl down}{WheelDown}{ctrl up}
else
SendInput {WheelDown}
return
WheelUp::
if GetKeyState("RButton")
SendInput {ctrl down}{WheelUp}{ctrl up}
else
SendInput {WheelUp}
return
WheelDown::
if GetKeyState("RButton")
SendInput {ctrl down}{WheelDown}{ctrl up}
else
SendInput {WheelDown}
return
2023/10/17(火) 22:29:56.60ID:zT0TFsHP0
MouseGestureLならMG_CancelDefBehavior()で右クリックメニューを抑制できるから
AutoHotkeyでも出来るだろうね
AutoHotkeyでも出来るだろうね
2023/10/17(火) 22:39:17.44ID:pYkaTV7l0
>>656
個人的な見解で申し訳ないが…
>ブラウザのマウスジェスチャが効かなくなります。
このように不都合なことが起こりかねないから
1)ブラウザ側のマウスジェスチャだけでやる
か、
2)ブラウザの機能を無効にして外部マウスジェスチャツール(例えばMouseGestureL.ahk)だけでやる
かどっちかにした方が良いよ思うよ
2)だとブラウザの操作がショートカットキーで全て実現できるならマウスジェスチャツールでも実現できるし
そのブラウザだけじゃなく他のアプリでも個別に設定したマウスジェスチャで操作できる利点があるし
個人的な見解で申し訳ないが…
>ブラウザのマウスジェスチャが効かなくなります。
このように不都合なことが起こりかねないから
1)ブラウザ側のマウスジェスチャだけでやる
か、
2)ブラウザの機能を無効にして外部マウスジェスチャツール(例えばMouseGestureL.ahk)だけでやる
かどっちかにした方が良いよ思うよ
2)だとブラウザの操作がショートカットキーで全て実現できるならマウスジェスチャツールでも実現できるし
そのブラウザだけじゃなく他のアプリでも個別に設定したマウスジェスチャで操作できる利点があるし
2023/10/18(水) 00:50:07.18ID:6hRvblQL0
2023/10/20(金) 17:07:44.29ID:xwrdv7kg0
解決策がさっぱりわからない事でみなさんのご意見伺おうと整理して文章書いてたら解決してしまった…
2023/10/21(土) 00:14:47.71ID:QsqkSmLl0
>>661
あるある
あるある
2023/10/21(土) 00:15:10.09ID:QsqkSmLl0
>>661
あるある
あるある
664名無しさん@お腹いっぱい。
2023/10/21(土) 07:27:33.45ID:uDJeYMX30 書くと考えが整理されるよね
2023/10/21(土) 08:58:11.72ID:670MOFi40
変な話だけどコーディングは漢字の書き取りみたいに
不細工でもいいから手で繰り返し書くと習得が早まるのはあるな
コピペだけしているようだと全然仕組みを覚えない
不細工でもいいから手で繰り返し書くと習得が早まるのはあるな
コピペだけしているようだと全然仕組みを覚えない
2023/10/21(土) 10:25:37.09ID:qkI01+t50
改行を\nではなく`nにしないといけない理由って何だっけ
2023/10/21(土) 10:57:36.70ID:A46hLlw90
2023/10/21(土) 11:12:42.18ID:670MOFi40
Windowsのコマンドラインと干渉させないためでしょ
例えば、\note というディレクトリが誤判定される危険性がある
\\でエスケープすればいいじゃんって見解もあるが
Windowsで既に用いられてるからね(例えばレジストリトファイル)
それをエスケープしようとすると\\\\のエスケープ地獄に陥るから
変えるのは妥当
どうしても嫌ならエスケープ文字を変えるオプションもあったはず
全くお勧めしないけど
例えば、\note というディレクトリが誤判定される危険性がある
\\でエスケープすればいいじゃんって見解もあるが
Windowsで既に用いられてるからね(例えばレジストリトファイル)
それをエスケープしようとすると\\\\のエスケープ地獄に陥るから
変えるのは妥当
どうしても嫌ならエスケープ文字を変えるオプションもあったはず
全くお勧めしないけど
2023/10/21(土) 11:18:54.11ID:670MOFi40
レジストリトファイル
↓
レジストリ ファイル
↓
レジストリ ファイル
2023/10/21(土) 11:46:02.56ID:qkI01+t50
他の言語と同じ方法にしとけばいいのに、独自路線を選ぶんだよな
誰も気付かなかったうまいやり方見つけちゃった
ちげーよ、デメリットがでかいから誰もやらないだけだよ
誰も気付かなかったうまいやり方見つけちゃった
ちげーよ、デメリットがでかいから誰もやらないだけだよ
2023/10/21(土) 12:02:08.83ID:PFRfZnbl0
「"」はなんで「`"」じゃダメだったんだろう
2023/10/21(土) 12:31:59.43ID:Ls2E16c40
最近使い始めてどうしても意味がわからない事がありお教えて頂きたいのですが例を見ると二行目とか三行目の最初10個くらいスペース空けています
あれは必ず何個空けないといけないとか空けずに書くと弊害が起きるとか理由や意味があるからなってるんですよね?
空けずに左端から書くのがわかりやすいし書きやすいと思ったのですけどルールがあるならちゃんと知っておきたいと思って質問させて頂きましたサンプルなどを見てやっているのでV1です
よろしくお願いします
あれは必ず何個空けないといけないとか空けずに書くと弊害が起きるとか理由や意味があるからなってるんですよね?
空けずに左端から書くのがわかりやすいし書きやすいと思ったのですけどルールがあるならちゃんと知っておきたいと思って質問させて頂きましたサンプルなどを見てやっているのでV1です
よろしくお願いします
2023/10/21(土) 12:32:12.21ID:qkI01+t50
:= も同様の拘りなんだよな
何故かデファクトスタンダードに逆らってイキりたがる
= は曖昧だから:=と==だけにします、なら判る
= は既によく判らん用途に使ってるからとか基本設計がおかしい
何故かデファクトスタンダードに逆らってイキりたがる
= は曖昧だから:=と==だけにします、なら判る
= は既によく判らん用途に使ってるからとか基本設計がおかしい
2023/10/21(土) 12:39:38.67ID:MgetEplM0
2023/10/21(土) 12:42:29.00ID:uwWEvv0P0
v1の頃に決まった話になると、そんな小さいことに目くじら立てるどころじゃない気が
20年くらい前で他の同系統の言語も同じようなものとはいえツッコミどころが山盛りでは
20年くらい前で他の同系統の言語も同じようなものとはいえツッコミどころが山盛りでは
2023/10/21(土) 12:47:14.39ID:MgetEplM0
2023/10/21(土) 15:26:28.94ID:Ls2E16c40
2023/10/21(土) 21:30:29.25ID:9BoGHaTl0
見やすくというか
読みやすくというか
理解しやすくというか
読みやすくというか
理解しやすくというか
2023/10/21(土) 23:29:27.11ID:Ls2E16c40
680名無しさん@お腹いっぱい。
2023/10/23(月) 03:03:06.70ID:WlJrDHiJ0 \\\\のエスケープ地獄は、たしかにちょっとつらい
なので ` でエスケープする妥当性はわかる
けど、JavaScript のように `` を文字列のリテラルとして使えるともっと嬉しかった
変数置換ができるなら更に嬉しい
(変数置換ができないとしても、' も " もエスケープなしで記述できるだけでも嬉しい)
AHK の無名関数は、JavaScript のように () => {} こうは書けず、() {} こう書く必要がある >>624
AHK は JavaScript を参考にしつつも、微妙に追随できていなくて、独自路線(しかもちょっと残念な)があるのが、たしかにちょっと残念に思う
個人的には、ここまで JavaScript を参考にしているなら、基本的に JavaScript と同じにして、
JavaScript + AHK 用の関数群という形にしてほしいと思う
v3 ではそうなるといいなと思う
なので ` でエスケープする妥当性はわかる
けど、JavaScript のように `` を文字列のリテラルとして使えるともっと嬉しかった
変数置換ができるなら更に嬉しい
(変数置換ができないとしても、' も " もエスケープなしで記述できるだけでも嬉しい)
AHK の無名関数は、JavaScript のように () => {} こうは書けず、() {} こう書く必要がある >>624
AHK は JavaScript を参考にしつつも、微妙に追随できていなくて、独自路線(しかもちょっと残念な)があるのが、たしかにちょっと残念に思う
個人的には、ここまで JavaScript を参考にしているなら、基本的に JavaScript と同じにして、
JavaScript + AHK 用の関数群という形にしてほしいと思う
v3 ではそうなるといいなと思う
2023/10/23(月) 08:16:22.70ID:YDc6e+fm0
> JavaScript + AHK 用の関数群
これってたしか日本の人がそういうの大分前に作ってたよね
ちょっと検索しても出なかったけどやめちゃったのか
これってたしか日本の人がそういうの大分前に作ってたよね
ちょっと検索しても出なかったけどやめちゃったのか
2023/10/23(月) 21:54:32.87ID:9tna838Y0
v2公式でGUIにHTML/CSS/JSサポートしてくれたらいいのになぁ
683名無しさん@お腹いっぱい。
2023/10/24(火) 02:00:01.88ID:LXOelMg+0 ahkにキーボードマクロ機能ってあったりするのでしょうか?
具体的には、レノボ トラックポイントキーボードIIで、
起動時にFn+Escを自動で押したいのです
このキーボードでファンクションキーはデフォルトで機能キーが割り当てられていて、
ファンクションキーとして使うためには起動毎にファンクションロックしてやらないとダメなのを自動化したいのです
ベクターのキーボードマクロをいくつか試したのですが、
Fnキーみたいなキーボード個別の特殊キーに対応したのが見つけられません
ahkならキーコード拾えそうなので質問してみました
よろしくお願いいたします
具体的には、レノボ トラックポイントキーボードIIで、
起動時にFn+Escを自動で押したいのです
このキーボードでファンクションキーはデフォルトで機能キーが割り当てられていて、
ファンクションキーとして使うためには起動毎にファンクションロックしてやらないとダメなのを自動化したいのです
ベクターのキーボードマクロをいくつか試したのですが、
Fnキーみたいなキーボード個別の特殊キーに対応したのが見つけられません
ahkならキーコード拾えそうなので質問してみました
よろしくお願いいたします
684名無しさん@お腹いっぱい。
2023/10/24(火) 02:56:41.93ID:LXOelMg+0 >>683自己レス
どうやらこのFnキーはPCにはキーコードを発出しておらず、キーボード内で完結しているみたい
こりゃPC側で何やっても無理ですね
レノボに要望出すくらいかできることはなさそうです
お騒がせしました
どうやらこのFnキーはPCにはキーコードを発出しておらず、キーボード内で完結しているみたい
こりゃPC側で何やっても無理ですね
レノボに要望出すくらいかできることはなさそうです
お騒がせしました
685名無しさん@お腹いっぱい。
2023/10/24(火) 03:07:23.96ID:XK3z8D+O0 >>682
HTML を表示できるコンポーネントが使えたら便利そうだね
HTML を表示できるコンポーネントが使えたら便利そうだね
2023/10/24(火) 07:13:30.38ID:35rovyz10
Fnキーはどこもステルスだが
つーか使いにくいからFnキーとして置かなくても別キーとかでも良いのに、手前に陣取って邪魔なんだよな
つーか使いにくいからFnキーとして置かなくても別キーとかでも良いのに、手前に陣取って邪魔なんだよな
2023/10/24(火) 08:38:38.26ID:Peo0Ada/0
Ctrlとかと誤爆しやすい位置にリマップ不可なFnなんて、悪意しか感じん
2023/10/24(火) 10:26:10.08ID:Hn9xTC4v0
ノートPCはディスプレイとキーボードを外付けして使うのが正解
2023/10/24(火) 10:43:45.23ID:hLY2TQAp0
ノートって今は中途半端すぎて売り上げ落ちているらしいな
スマホとかUSBメモリとかクラウドとか理由はいろいろあるんだろうけど
スマホとかUSBメモリとかクラウドとか理由はいろいろあるんだろうけど
2023/10/24(火) 11:02:12.95ID:Hn9xTC4v0
うちの会社はフリーアドレス化したのでノートじゃないと無理だな
キーボード繋がせて欲しい
アプリケーションキーが存在しないとか意味判らん
キーボード繋がせて欲しい
アプリケーションキーが存在しないとか意味判らん
2023/10/24(火) 11:42:22.74ID:hLY2TQAp0
AppsKeyは右クリが壊れた時に使ってたわ
あの時はアプリによっては右クリでしか呼び出せないメニューがあることに気づいいて
UI設計の大切さを学んだわ
あの時はアプリによっては右クリでしか呼び出せないメニューがあることに気づいいて
UI設計の大切さを学んだわ
2023/10/24(火) 12:35:47.02ID:utY4MNcR0
ThinkPadキーボード、Fnキー、Appsキーの話になってるので質問させて下さい
キーボードをThinkPadキーボードに変えたらやらないといけない事が出来たので何かアドバイスお願いします
ThinkPadキーボードは旧型のUSB接続
今まではAppsキーに二回押したらEscを割り当てていました(サンプルコード集参照)
ThinkPadキーボードに右クリボタンがありAppsキーは無いので記述をRbuttonに書き換え
これで以前と同じ使い心地になる…と思ったらそうではありませんでした
例えばファイルやメールにフォーカスがある時、Appsキーならカーソルがどこにあってもそフォーカスの物に右クリメニューが出ますが右ボタンだとカーソルのある場所の右クリメニューが出る
それは当たり前ですが、その使い方を望んではおらず
じゃあRbuttonをAppsキーにすればとも思いましたが、それだとマウス自体の右ボタンの挙動も変わってしまう
それも望んでいない
AHKにはRbuttonとして認識されているのでどうにも出来ないでしょうか?
それと真ん中のボタン、押しながらトラックポイントを動かせばスクロールする機能ですがこれにも何か別の機能とかを割り当てられないかとKey historyを見ても何も出ていません
Fnと同様で他に使う事は無理でしょうか?
Win11 Pro
AHK v1.1.37.01
キーボードをThinkPadキーボードに変えたらやらないといけない事が出来たので何かアドバイスお願いします
ThinkPadキーボードは旧型のUSB接続
今まではAppsキーに二回押したらEscを割り当てていました(サンプルコード集参照)
ThinkPadキーボードに右クリボタンがありAppsキーは無いので記述をRbuttonに書き換え
これで以前と同じ使い心地になる…と思ったらそうではありませんでした
例えばファイルやメールにフォーカスがある時、Appsキーならカーソルがどこにあってもそフォーカスの物に右クリメニューが出ますが右ボタンだとカーソルのある場所の右クリメニューが出る
それは当たり前ですが、その使い方を望んではおらず
じゃあRbuttonをAppsキーにすればとも思いましたが、それだとマウス自体の右ボタンの挙動も変わってしまう
それも望んでいない
AHKにはRbuttonとして認識されているのでどうにも出来ないでしょうか?
それと真ん中のボタン、押しながらトラックポイントを動かせばスクロールする機能ですがこれにも何か別の機能とかを割り当てられないかとKey historyを見ても何も出ていません
Fnと同様で他に使う事は無理でしょうか?
Win11 Pro
AHK v1.1.37.01
2023/10/24(火) 12:41:50.16ID:acf7AARQ0
>>690
BTキーボードくらい繋がるでしょ
BTキーボードくらい繋がるでしょ
694名無しさん@お腹いっぱい。
2023/10/24(火) 14:02:16.64ID:7EB3AWV+0 キーAを押しながら、キーBを押すって動作をスクリプトに書いた場合、
Aを押した状態でB以外の入力を受け付けなくなるのって回避方法ある?
Aを押した状態でB以外の入力を受け付けなくなるのって回避方法ある?
2023/10/25(水) 00:46:51.16ID:xHwpED+J0
696名無しさん@お腹いっぱい。
2023/10/25(水) 07:18:48.75ID:0tfdF69F0 >>694
キーAとキーBは何キーですか?
キーAとキーBは何キーですか?
697名無しさん@お腹いっぱい。
2023/10/25(水) 20:18:18.98ID:BMAQsHQh0 質問です。Potplayerをバックグラウンドで操作したいのですが以下のスクリプトでは動作しません。アドバイスお願いします。 v1.11.11
!enter::
DetectHiddenWindows, On
ControlSend, ahk_class, {space}, ahk_class PotPlayer
return
!enter::
DetectHiddenWindows, On
ControlSend, ahk_class, {space}, ahk_class PotPlayer
return
2023/10/26(木) 20:39:28.63ID:stdJKV+p0
その第一引数はなんなの
2023/10/27(金) 17:11:32.49ID:W6kx2B0a0
cmdでif必要なときはbatかahkで書いてたけど、|使って論理演算子作れるの発見して驚愕してる
wikiのRunに書いてほしかった…
wikiのRunに書いてほしかった…
2023/10/27(金) 18:13:18.72ID:Gr5vROVq0
これと、
Run / RunWait - Syntax & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/Run.htm#Return_Value
これの組み合わせってこと?
Variables and Expressions - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Variables.htm#Operators
Run / RunWait - Syntax & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/Run.htm#Return_Value
これの組み合わせってこと?
Variables and Expressions - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Variables.htm#Operators
2023/10/28(土) 04:22:30.30ID:MaaLhlYz0
|単体のパイプだとわからないけど、&や&&や||でコマンドライン1行に複数コマンドを書く話?
それならAutoHotKeyじゃなくてWindowsのcmdの解説だからwikiに書いてないのでは
それならAutoHotKeyじゃなくてWindowsのcmdの解説だからwikiに書いてないのでは
702名無しさん@お腹いっぱい。
2023/10/28(土) 05:36:10.86ID:JXkBTMwt0 >>699
もう少しわかりやすく書いてほしい
もう少しわかりやすく書いてほしい
2023/10/28(土) 11:18:23.74ID:Ti0/3LdE0
2023/10/29(日) 14:07:13.81ID:Pb3Qv4nh0
Sendで上下左右を指定すると通常の動作で一呼吸置いてから連打しますが、最初から連打(加速)させる方法ありますか?
2023/10/29(日) 14:17:04.36ID:WbJiFF2/0
お祈りが足りていないと思われます
706697
2023/10/29(日) 18:02:57.55ID:lxd/WQLd0 >>698
前身のKimplayerでは、この部分にahk_parentと書けば動いたので、試行錯誤の名残です。省略してもahk_parentと書いても動作しません。
前身のKimplayerでは、この部分にahk_parentと書けば動いたので、試行錯誤の名残です。省略してもahk_parentと書いても動作しません。
2023/10/30(月) 11:09:53.57ID:AK80qRlt0
セットアップウィザードだとAHKが効かないんだけど、これってそんな低レイヤなやつなの?
(例:サクラエディタのインストーラ)
(例:サクラエディタのインストーラ)
2023/10/30(月) 20:33:09.44ID:q/qv9w0o0
ブラウザ上の共有ボタン?から開かれる文字の不要部分を削除して開く様にって出来ますか?
例えばニコ生でタイトル横のTwitterの鳥をクリックすると別タブ(デフォはウインドウかポップアップだったっけ?)でそのページのタイトルやURLが入ったツイート画面が開かれます
URL自体がそれを表してるのでURLから毎回同じ不要な部分(文字)を削除して開かれれば可能という事になります
例
ニコニコニュース実況
で鳥をクリックすると
https://twitter.com/intent/tweet?url=https%3A%2F%2Flive.nicovideo.jp%2Fwatch%2Flv343242011%3Fref%3Dsharetw_large&text=%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E5%AE%9F%E6%B3%81%20%2F%20%E3%83%8B%E3%82%B3%E7%94%9F%E8%A6%96%E8%81%B4%E4%B8%AD&hashtags=%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&original_referer=https://live.nicovideo.jp/watch/lv343242011?kind=focus_onair
がアドレスバーに入った物が開きます(アドレスバーでは日本語の所は日本語)
「 / ニコ生視聴中 」と「?ref=sharetw_large」の二ヶ所を毎回消しているので自動で消したい
「 / ニコ生視聴中 」の部分は「20%2F%20%E3%83%8B%E3%82%B3%E7%94%9F%E8%A6%96%E8%81%B4%E4%B8%AD」かな
やり方ありましたらどうかご教授よろしくお願いします
https://twitter.com/thejimwatkins
例えばニコ生でタイトル横のTwitterの鳥をクリックすると別タブ(デフォはウインドウかポップアップだったっけ?)でそのページのタイトルやURLが入ったツイート画面が開かれます
URL自体がそれを表してるのでURLから毎回同じ不要な部分(文字)を削除して開かれれば可能という事になります
例
ニコニコニュース実況
で鳥をクリックすると
https://twitter.com/intent/tweet?url=https%3A%2F%2Flive.nicovideo.jp%2Fwatch%2Flv343242011%3Fref%3Dsharetw_large&text=%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E5%AE%9F%E6%B3%81%20%2F%20%E3%83%8B%E3%82%B3%E7%94%9F%E8%A6%96%E8%81%B4%E4%B8%AD&hashtags=%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&original_referer=https://live.nicovideo.jp/watch/lv343242011?kind=focus_onair
がアドレスバーに入った物が開きます(アドレスバーでは日本語の所は日本語)
「 / ニコ生視聴中 」と「?ref=sharetw_large」の二ヶ所を毎回消しているので自動で消したい
「 / ニコ生視聴中 」の部分は「20%2F%20%E3%83%8B%E3%82%B3%E7%94%9F%E8%A6%96%E8%81%B4%E4%B8%AD」かな
やり方ありましたらどうかご教授よろしくお願いします
https://twitter.com/thejimwatkins
2023/10/30(月) 20:47:48.43ID:qNduaTef0
>>708
それは AHK にやらさせるよりはブラウザの拡張とかにやらせる方がエエと思うで。
例えば Chrome系なら Redirector とかで正規表現で処理して文字列の置換、変換を
やらせるとか。
それは AHK にやらさせるよりはブラウザの拡張とかにやらせる方がエエと思うで。
例えば Chrome系なら Redirector とかで正規表現で処理して文字列の置換、変換を
やらせるとか。
2023/10/31(火) 01:02:48.10ID:VQwByWJT0
ボッタクリ価格じゃなければほしかった
3kくらいの安物kbでどっかパクってくれ
PFU「HHKB Studio」の店頭展示スタート、マウスやジェスチャー機能を搭載 - AKIBA PC Hotline!
https://akiba-pc.watch.impress.co.jp/docs/news/news/1542840.html
https://asset.watch.impress.co.jp/img/ah/docs/1542/840/a3.jpg
3kくらいの安物kbでどっかパクってくれ
PFU「HHKB Studio」の店頭展示スタート、マウスやジェスチャー機能を搭載 - AKIBA PC Hotline!
https://akiba-pc.watch.impress.co.jp/docs/news/news/1542840.html
https://asset.watch.impress.co.jp/img/ah/docs/1542/840/a3.jpg
2023/10/31(火) 02:06:18.28ID:6Eky0BOu0
2023/10/31(火) 07:56:28.30ID:ODQQeTIS0
>>706
コード見せられてもアプローチ間違いか文法ミスくらいしか指摘できないので
その試行錯誤を全部書いてもらった方がアドバイスしやすい
・キー割当を1キー(ファンクション系)にする
・プレイヤーのどのコントロールならショトカが効くか調べてそのクラス名をwindowspyで見る
・アクティブ状態でうまくいくか
・detecthiddenwindowなしでうまくいくか
・sendを試す
・ahk_proccessとか全部試す
予想はクラス名が間違い
コード見せられてもアプローチ間違いか文法ミスくらいしか指摘できないので
その試行錯誤を全部書いてもらった方がアドバイスしやすい
・キー割当を1キー(ファンクション系)にする
・プレイヤーのどのコントロールならショトカが効くか調べてそのクラス名をwindowspyで見る
・アクティブ状態でうまくいくか
・detecthiddenwindowなしでうまくいくか
・sendを試す
・ahk_proccessとか全部試す
予想はクラス名が間違い
2023/10/31(火) 18:42:02.72ID:y7iEy6x60
>>704
キーリピートの開始遅延時間の話なのでWindowsの設定を変更するか、AHKでホットキー押下時に連打するスクリプトを書いてください
>>706
結論だけ先に書くと
ControlFocus, , ahk_class PotPlayer
ControlSend, , {Space}, ahk_class PotPlayer
コントロールのフォーカスによってキー操作の挙動が変わるアプリの場合
ControlSendでコントロール名を指定していたとしてもフォーカスがあるコントロールのキー操作が優先されます
通常はウィンドウをアクティブにした際に、フォーカスはアプリ側でデフォルトコントロールにセットされ直されるので、大抵の場合は問題にはなりませんが
ウィンドウを非アクティブにした場合は、フォーカスは最後にセットされていたコントロールが保持したままになっています
よって、フォーカスをセットし直してやる必要がある場合があります
>>707
何がしたいのか分かりませんが普通に使えます
思い当たる要因があるとすれば、AHKの管理者権限の有無、アンチウイルスソフトの干渉などです
キーリピートの開始遅延時間の話なのでWindowsの設定を変更するか、AHKでホットキー押下時に連打するスクリプトを書いてください
>>706
結論だけ先に書くと
ControlFocus, , ahk_class PotPlayer
ControlSend, , {Space}, ahk_class PotPlayer
コントロールのフォーカスによってキー操作の挙動が変わるアプリの場合
ControlSendでコントロール名を指定していたとしてもフォーカスがあるコントロールのキー操作が優先されます
通常はウィンドウをアクティブにした際に、フォーカスはアプリ側でデフォルトコントロールにセットされ直されるので、大抵の場合は問題にはなりませんが
ウィンドウを非アクティブにした場合は、フォーカスは最後にセットされていたコントロールが保持したままになっています
よって、フォーカスをセットし直してやる必要がある場合があります
>>707
何がしたいのか分かりませんが普通に使えます
思い当たる要因があるとすれば、AHKの管理者権限の有無、アンチウイルスソフトの干渉などです
2023/10/31(火) 23:22:24.75ID:Y3UYTU1P0
2023/11/01(水) 12:03:28.13ID:F+Xo6EIO0
タスクマネージャーも同じだった
普段何気なく使うツールでも権限レベル高いやつって意外とあるんだろうな
普段何気なく使うツールでも権限レベル高いやつって意外とあるんだろうな
2023/11/01(水) 12:07:14.56ID:ByqGOUsx0
>>695
ライブラリ使わないとこうやって書くらしい
html =
(
<form id="form">
Name1: <input type="text" name="name1" id="name1" autofocus required><br>
Name2: <input type="text" name="name2" id="name2" required><br><br>
<input type="submit" id="submit" value="Submit">
</form>
)
gui, add, ActiveX, w300 h100 vWB, about:<!DOCTYPE html><meta http-equiv="X-UA-Compatible" content="IE=edge">
WB.document.write(html)
guicontrol, focus, WB
GetElem := ObjBindMethod(WB.document, "getElementById")
GetElem.Call("name1").focus()
gui, show
GetElem.Call("form").addEventListener("submit", Func("Submit"))
return
Submit() {
global GetElem
value1 := GetElem.Call("name1").value
value2 := GetElem.Call("name2").value
Gui, Destroy
MsgBox % "Name1: " . value1 . "`nName2: " . value2
}
ライブラリ使わないとこうやって書くらしい
html =
(
<form id="form">
Name1: <input type="text" name="name1" id="name1" autofocus required><br>
Name2: <input type="text" name="name2" id="name2" required><br><br>
<input type="submit" id="submit" value="Submit">
</form>
)
gui, add, ActiveX, w300 h100 vWB, about:<!DOCTYPE html><meta http-equiv="X-UA-Compatible" content="IE=edge">
WB.document.write(html)
guicontrol, focus, WB
GetElem := ObjBindMethod(WB.document, "getElementById")
GetElem.Call("name1").focus()
gui, show
GetElem.Call("form").addEventListener("submit", Func("Submit"))
return
Submit() {
global GetElem
value1 := GetElem.Call("name1").value
value2 := GetElem.Call("name2").value
Gui, Destroy
MsgBox % "Name1: " . value1 . "`nName2: " . value2
}
717697
2023/11/01(水) 23:23:03.60ID:mN14R+DL0 >>712
返答ありがとうございます。https://www.autohotkey.com/boards/viewtopic.php?t=23992などを見たりして、ClassNNの項目を記入したり。
ControlSend,Afx:10000000:b:00010011:01900011:000000003,{Space},ahk_class PotPlayer
ControlSend,,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su1 AfxWnd140su2 AfxWnd140su3 AfxWnd140su4 AfxWnd140su5 AfxWnd140su6 AfxWnd140su7 AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,ahk_parent,{Space},ahk_class PotPlayer
>>713
なんと!数年来の夢が、今まさに私の目の前で、現実として起こっているではありませぬか。某サイトのControlSendの項目ばかり読んでいましたので、ControlFocusなるものあって、それが必要などとは、初心者には思いもよりませんでした。検索してもなかなか解決案が見出せず、半分諦め、そのまま数年が過ぎ、3年ぶりの5ch書き込みとなったわけです。端的で丁寧な解答ありがとうございました。
秋の頃
かの地にて
数年悩まされし問題解決す
われ うれしきやうれし
かれ すぐれしやすぐれし
ここ すばらしきやすばらし
返答ありがとうございます。https://www.autohotkey.com/boards/viewtopic.php?t=23992などを見たりして、ClassNNの項目を記入したり。
ControlSend,Afx:10000000:b:00010011:01900011:000000003,{Space},ahk_class PotPlayer
ControlSend,,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su1 AfxWnd140su2 AfxWnd140su3 AfxWnd140su4 AfxWnd140su5 AfxWnd140su6 AfxWnd140su7 AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,ahk_parent,{Space},ahk_class PotPlayer
>>713
なんと!数年来の夢が、今まさに私の目の前で、現実として起こっているではありませぬか。某サイトのControlSendの項目ばかり読んでいましたので、ControlFocusなるものあって、それが必要などとは、初心者には思いもよりませんでした。検索してもなかなか解決案が見出せず、半分諦め、そのまま数年が過ぎ、3年ぶりの5ch書き込みとなったわけです。端的で丁寧な解答ありがとうございました。
秋の頃
かの地にて
数年悩まされし問題解決す
われ うれしきやうれし
かれ すぐれしやすぐれし
ここ すばらしきやすばらし
718697
2023/11/01(水) 23:23:09.14ID:mN14R+DL0 >>712
返答ありがとうございます。https://www.autohotkey.com/boards/viewtopic.php?t=23992などを見たりして、ClassNNの項目を記入したり。
ControlSend,Afx:10000000:b:00010011:01900011:000000003,{Space},ahk_class PotPlayer
ControlSend,,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su1 AfxWnd140su2 AfxWnd140su3 AfxWnd140su4 AfxWnd140su5 AfxWnd140su6 AfxWnd140su7 AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,ahk_parent,{Space},ahk_class PotPlayer
>>713
なんと!数年来の夢が、今まさに私の目の前で、現実として起こっているではありませぬか。某サイトのControlSendの項目ばかり読んでいましたので、ControlFocusなるものあって、それが必要などとは、初心者には思いもよりませんでした。検索してもなかなか解決案が見出せず、半分諦め、そのまま数年が過ぎ、3年ぶりの5ch書き込みとなったわけです。端的で丁寧な解答ありがとうございました。
秋の頃
かの地にて
数年悩まされし問題解決す
われ うれしきやうれし
かれ すぐれしやすぐれし
ここ すばらしきやすばらし
返答ありがとうございます。https://www.autohotkey.com/boards/viewtopic.php?t=23992などを見たりして、ClassNNの項目を記入したり。
ControlSend,Afx:10000000:b:00010011:01900011:000000003,{Space},ahk_class PotPlayer
ControlSend,,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su1 AfxWnd140su2 AfxWnd140su3 AfxWnd140su4 AfxWnd140su5 AfxWnd140su6 AfxWnd140su7 AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,ahk_parent,{Space},ahk_class PotPlayer
>>713
なんと!数年来の夢が、今まさに私の目の前で、現実として起こっているではありませぬか。某サイトのControlSendの項目ばかり読んでいましたので、ControlFocusなるものあって、それが必要などとは、初心者には思いもよりませんでした。検索してもなかなか解決案が見出せず、半分諦め、そのまま数年が過ぎ、3年ぶりの5ch書き込みとなったわけです。端的で丁寧な解答ありがとうございました。
秋の頃
かの地にて
数年悩まされし問題解決す
われ うれしきやうれし
かれ すぐれしやすぐれし
ここ すばらしきやすばらし
2023/11/02(木) 13:04:33.36ID:Ak5m1K3y0
惰性で窓使いの憂鬱、yamy、のどかと長年使い続けてきたんだがAHKに移行したけど最高だなこれ
もっと早く使うんだった
なんとなくキーボードフィルタドライバが最強と思ってたけど別にそんなことなかったわ
もっと早く使うんだった
なんとなくキーボードフィルタドライバが最強と思ってたけど別にそんなことなかったわ
2023/11/02(木) 19:09:53.60ID:sleiHkfU0
そうそう変なことは起きないけど、やっぱりのどかより安定性は落ちるだろう
2023/11/06(月) 18:08:04.59ID:/0Einrp10
>>713
ありがとうございます解決しました
思ったよりも複雑でした
; This script sends cursor arrow keys without an initial delay (or with customized delay)
; Alternative: HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response (needs reboot after change)
#Requires AutoHotkey v1.1.33
timeoutSec := 0.08 ; To repeat, the key must be held for this number of seconds
delay := 35 ; Delay (ms) after each keystroke sent
#UseHook
Up::
Down::
Left::
Right::
hk := A_ThisHotkey
SendEvent % key := "{" hk "}"
SetKeyDelay delay
KeyWait % hk, % "T" timeoutSec
If ErrorLevel ; Key was held
While GetKeyState(hk, "P")
SendEvent % key
Return
#UseHook Off
ありがとうございます解決しました
思ったよりも複雑でした
; This script sends cursor arrow keys without an initial delay (or with customized delay)
; Alternative: HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response (needs reboot after change)
#Requires AutoHotkey v1.1.33
timeoutSec := 0.08 ; To repeat, the key must be held for this number of seconds
delay := 35 ; Delay (ms) after each keystroke sent
#UseHook
Up::
Down::
Left::
Right::
hk := A_ThisHotkey
SendEvent % key := "{" hk "}"
SetKeyDelay delay
KeyWait % hk, % "T" timeoutSec
If ErrorLevel ; Key was held
While GetKeyState(hk, "P")
SendEvent % key
Return
#UseHook Off
2023/11/09(木) 16:15:51.39ID:JiGuppz+0
出来なくて困っていること
=CLCLというソフトウェアでメニューを出すショートカットキーをautohotkeyのスクリプトに組み込みたいが
そのキーをautohotkeyで発生させても、CLCLがメニューを出してくれない、無反応
どうやればいいのか教えて戴けないでしょうか?
元々のやりたいこと。
=現在クリップボードに入っている内容と一つ前にクリップボードに入っていたものを並べて、一度にコピペで簡単にワンキーで出したい。
=CLCLというソフトウェアでメニューを出すショートカットキーをautohotkeyのスクリプトに組み込みたいが
そのキーをautohotkeyで発生させても、CLCLがメニューを出してくれない、無反応
どうやればいいのか教えて戴けないでしょうか?
元々のやりたいこと。
=現在クリップボードに入っている内容と一つ前にクリップボードに入っていたものを並べて、一度にコピペで簡単にワンキーで出したい。
2023/11/09(木) 17:57:11.75ID:tg51kBeX0
できた
global PREV := Clipboard
OnClipboardChange("clichan")
Exit
a::
try Menu, m, DeleteAll
Menu, m, Add, % shoten(Clipboard), exec
Menu, m, Add, % shoten(PREV), exec
Menu, m, Show
Return
exec() {
MsgBox, % A_ThisMenuItemPos = 1 ? Clipboard : PREV
}
shoten(s) {
Return, RegExReplace(s, "s)^.{20}\K.+$", "…")
}
clichan() {
static tmp := Clipboard
PREV := tmp
tmp := Clipboard
}
global PREV := Clipboard
OnClipboardChange("clichan")
Exit
a::
try Menu, m, DeleteAll
Menu, m, Add, % shoten(Clipboard), exec
Menu, m, Add, % shoten(PREV), exec
Menu, m, Show
Return
exec() {
MsgBox, % A_ThisMenuItemPos = 1 ? Clipboard : PREV
}
shoten(s) {
Return, RegExReplace(s, "s)^.{20}\K.+$", "…")
}
clichan() {
static tmp := Clipboard
PREV := tmp
tmp := Clipboard
}
2023/11/12(日) 01:04:15.97ID:kQQD0v9s0
キーに割り当てた1回押しのスクリプトが動作しないんだけど原因わかりませんか?
例えばこれでr長押しでctrl+rは入力されるんだけどr短押しは何も入力されない事になってる
r::
KeyWait, r
If (A_TimeSinceThisHotkey < 500)
{
Send, r
}
Else
{
Send, ^r
}
return
シンプルにこれでもr押しても何も入力されてない
r::
Send, r
return
こっちはr押すとちゃんとtが押される
r::
Send, t
return
例えばこれでr長押しでctrl+rは入力されるんだけどr短押しは何も入力されない事になってる
r::
KeyWait, r
If (A_TimeSinceThisHotkey < 500)
{
Send, r
}
Else
{
Send, ^r
}
return
シンプルにこれでもr押しても何も入力されてない
r::
Send, r
return
こっちはr押すとちゃんとtが押される
r::
Send, t
return
2023/11/12(日) 01:27:22.14ID:KS4GMiu40
>>724
はい、サンプル・・・というか、これ使えば良いんだよ
サンプルコード集 - AutoHotkey Wiki
https://ahkwiki.net/SampleCodes
1.1 1つのキーに3種類以上の動作割り当て
はい、サンプル・・・というか、これ使えば良いんだよ
サンプルコード集 - AutoHotkey Wiki
https://ahkwiki.net/SampleCodes
1.1 1つのキーに3種類以上の動作割り当て
2023/11/12(日) 02:24:03.58ID:kQQD0v9s0
2023/11/12(日) 04:00:38.94ID:J2mV0aOi0
2023/11/12(日) 12:41:38.94ID:vUMDSFHH0
おもろいソフト。msdoc見てもdllcall書けない人向けかな
https://ramensoftware.com/winapiexec
https://ramensoftware.com/winapiexec
729名無しさん@お腹いっぱい。
2023/11/13(月) 04:41:07.39ID:P7W13EFk0 AHK以外からちょっとwinapiを使いたい場合等にも便利そうだね
2023/11/13(月) 11:12:55.08ID:LViqGPzi0
スリープさせたい時とか、exeと引数では書けなくてdllにパラメータ渡さないといけない
そういうことをするプログラムを書いてコンパイルしてもいいけど、スクリプト的に書けた方が楽
そういうことをするプログラムを書いてコンパイルしてもいいけど、スクリプト的に書けた方が楽
2023/11/14(火) 00:13:36.65ID:hYjyzviz0
732名無しさん@お腹いっぱい。
2023/11/14(火) 08:51:40.32ID:4ufkw/A60 俺はスリープをAHKっぽくこうやってる
WinActivate,ahk_class Shell_TrayWnd
Sleep,100
Send,!{f4}
Sleep,100
Send,{Up}{Enter}
WinActivate,ahk_class Shell_TrayWnd
Sleep,100
Send,!{f4}
Sleep,100
Send,{Up}{Enter}
2023/11/14(火) 08:57:28.13ID:pSQoRZoU0
そもそも、rundll32.exe になんでその機能が無いんだ
2023/11/15(水) 00:23:40.26ID:2HG+ST0K0
try
foo()
catch
; ignore
bar()
baz()
というバグに気がつくのに1週間かかった
挙動が謎すぎて頭おかしくなりそうだったぜ
foo()
catch
; ignore
bar()
baz()
というバグに気がつくのに1週間かかった
挙動が謎すぎて頭おかしくなりそうだったぜ
2023/11/16(木) 01:40:35.11ID:Ssm6wYKa0
2023/11/16(木) 03:07:08.84ID:iAWmDVf40
2023/11/16(木) 08:06:45.15ID:xoUSj9v/0
2023/11/16(木) 08:17:58.35ID:uao/GslT0
Textifyは使えるかな
この手のソフトはいろいろあるけど、大抵動作がおかしい
この手のソフトはいろいろあるけど、大抵動作がおかしい
2023/11/16(木) 08:30:53.13ID:uao/GslT0
あー、インストーラーの奴か
パス
パス
2023/11/16(木) 14:30:14.59ID:OSkkf/ew0
>>738
TextifyはMSAAでテキスト取得してるから同じことAHKでACCと組み合わせてやってるわ
TextifyはMSAAでテキスト取得してるから同じことAHKでACCと組み合わせてやってるわ
741名無しさん@お腹いっぱい。
2023/11/23(木) 04:01:16.28ID:xgRY4R0+0 本日の年と日付をいれるショートカット
FormatTime,TimeString,,yyyy_MMdd
Send,%TimeString%_
Return
で動いているのですが、MicrosoftIMEだと何故か全角になってしまいます。(2023_1123)
googleimeだと2023_1123_ときちんと半角になるのですが、常に半角でインサートする方法ないでしょうか?
IMEの設定オートコレクトで全てを半角で入力の設定をしましたが駄目でした。
宜しくお願い致します。
FormatTime,TimeString,,yyyy_MMdd
Send,%TimeString%_
Return
で動いているのですが、MicrosoftIMEだと何故か全角になってしまいます。(2023_1123)
googleimeだと2023_1123_ときちんと半角になるのですが、常に半角でインサートする方法ないでしょうか?
IMEの設定オートコレクトで全てを半角で入力の設定をしましたが駄目でした。
宜しくお願い致します。
742名無しさん@お腹いっぱい。
2023/11/23(木) 04:55:43.77ID:xgRY4R0+0 すいません解決しました。
2023/11/23(木) 07:45:52.99ID:M1PYCksN0
どうやったの?
744名無しさん@お腹いっぱい。
2023/11/23(木) 08:02:34.98ID:xLQ95KaJ0 Clipboard使うとか?
2023/11/23(木) 08:38:58.88ID:wJkYm+IG0
日付と時刻はexcelがctrl-;とctrl-:で、
エディタも同じアサインにしたので、
それ以外に入力したい局面が無い
エディタも同じアサインにしたので、
それ以外に入力したい局面が無い
746名無しさん@お腹いっぱい。
2023/11/23(木) 16:26:51.70ID:FQJI0Qn00 age
2023/11/23(木) 17:06:17.48ID:wJkYm+IG0
回避しとる
2023/11/24(金) 18:36:54.89ID:f1zdFUGD0
日付は
datetime;;
date;;
time;;
fdatetime;;
fdate;;
ftime;;
でやってるな
~;;でhotstring展開は何かと便利
誤爆もない
:O:date;::
FormatTime,s,,yyyy/MM/dd
Send % s
return
datetime;;
date;;
time;;
fdatetime;;
fdate;;
ftime;;
でやってるな
~;;でhotstring展開は何かと便利
誤爆もない
:O:date;::
FormatTime,s,,yyyy/MM/dd
Send % s
return
749名無しさん@お腹いっぱい。
2023/11/24(金) 19:45:30.47ID:4Yiy9myC02023/11/29(水) 20:42:43.56ID:we/lrGpo0
すみません、A_TickCountの事でお尋ねします。
If A_TickCount 30000msから60000ms
までなら指定コマンドを実行したいのですが、どう記述していいかわかりません。
よろしくお願いします。
If A_TickCount 30000msから60000ms
までなら指定コマンドを実行したいのですが、どう記述していいかわかりません。
よろしくお願いします。
2023/11/29(水) 21:15:00.37ID:we/lrGpo0
わかりました、Betweenでした。
752名無しさん@お腹いっぱい。
2023/12/05(火) 11:27:36.94ID:Wh9Ksc6F0 FormatTime,TimeString,,yyyy_MMdd
Send,%TimeString%_
Return
日付を入れるショートカット、全角だと全角入力になっちゃうのってどうしようもないのかな?
Send,%TimeString%_
Return
日付を入れるショートカット、全角だと全角入力になっちゃうのってどうしようもないのかな?
2023/12/05(火) 11:42:19.35ID:0R4KhECr0
方法1 IMEをオフにしてからSendする
方法2 Clipboardに入れてctrl+vをSendする
方法2 Clipboardに入れてctrl+vをSendする
2023/12/05(火) 13:32:31.78ID:IPuO4dhM0
かな入力だからIMEは頻繁にon/offするけど、ローマ字の人は基本的にずっとonだしな
755名無しさん@お腹いっぱい。
2023/12/05(火) 15:01:25.96ID:yv4SlF+C0 で、
v2に移行していいのか?
不具合とかない?
移植がたいへんだな
v2に移行していいのか?
不具合とかない?
移植がたいへんだな
756名無しさん@お腹いっぱい。
2023/12/05(火) 17:39:57.13ID:Wh9Ksc6F02023/12/05(火) 18:48:25.60ID:0R4KhECr0
>>756
Clipboard := TimeString
Clipboard := TimeString
2023/12/06(水) 03:59:49.87ID:hcY1PgK80
○やりたいこと
置換前と置換後の文字を指定した上で、
aaa,aaa
↓
aaa
aaa (,→改行) としたい
○試したこと
↓がんばって書いたもの
^+f::
Send, ^c
ClipWait, 1
A := Clipboard
InputBox, SearchText, 置換前の文字, 置換前の文字を入力してください。
☆InputBox, ReplaceText, 置換後の文字, 置換後の文字を入力してください。
★Clipboard := RegEXReplace(A, SearchText, ReplaceText)
ClipWait, 1
Send, ^v
return
☆の時に `n "`n" `r`n Shift+Enter など試したが全ボツ・・
★ReplaceText→"`n" としたら改行されたが、これだと特定の検索置換しか使えない・・
v1.1.34.03です・・ よろしくお願いします・・
置換前と置換後の文字を指定した上で、
aaa,aaa
↓
aaa
aaa (,→改行) としたい
○試したこと
↓がんばって書いたもの
^+f::
Send, ^c
ClipWait, 1
A := Clipboard
InputBox, SearchText, 置換前の文字, 置換前の文字を入力してください。
☆InputBox, ReplaceText, 置換後の文字, 置換後の文字を入力してください。
★Clipboard := RegEXReplace(A, SearchText, ReplaceText)
ClipWait, 1
Send, ^v
return
☆の時に `n "`n" `r`n Shift+Enter など試したが全ボツ・・
★ReplaceText→"`n" としたら改行されたが、これだと特定の検索置換しか使えない・・
v1.1.34.03です・・ よろしくお願いします・・
2023/12/06(水) 07:35:38.30ID:QCf+VSRH0
2023/12/06(水) 10:04:04.46ID:h7vdOkf00
>>758
aaaが何を指しているのかよくわからんが
Clipboard:= RegEXReplace(A, SearchText, RegEXReplace(ReplaceText, ",", "`n"))
かな
aaaが何を指しているのかよくわからんが
Clipboard:= RegEXReplace(A, SearchText, RegEXReplace(ReplaceText, ",", "`n"))
かな
761名無しさん@お腹いっぱい。
2023/12/06(水) 10:36:13.53ID:SB+WZnS002023/12/06(水) 11:18:47.47ID:1AjfeAYD0
>>758
A = aaa,aaa
InputBox, SearchText, 置換前の文字, 置換前の文字を入力してください。 ;「,」
InputBox, ReplaceText, 置換後の文字, 置換後の文字を入力してください。 ;「,`n」
Transform, ReplaceText, Deref, %ReplaceText%
A := RegEXReplace(A, SearchText, ReplaceText)
MsgBox, %A%
A = aaa,aaa
InputBox, SearchText, 置換前の文字, 置換前の文字を入力してください。 ;「,」
InputBox, ReplaceText, 置換後の文字, 置換後の文字を入力してください。 ;「,`n」
Transform, ReplaceText, Deref, %ReplaceText%
A := RegEXReplace(A, SearchText, ReplaceText)
MsgBox, %A%
2023/12/06(水) 11:24:02.59ID:1AjfeAYD0
2023/12/06(水) 11:27:49.59ID:qXT5hvVy0
v1の存在そのものがデメリット
最初からv2だったらどんなに良かったか
最初からv2だったらどんなに良かったか
2023/12/06(水) 11:29:39.45ID:QKeYlogm0
修飾キー押しっぱなし問題はv2だと解消されてる?
単に文法が変わっただけなら移行する理由がない
単に文法が変わっただけなら移行する理由がない
2023/12/06(水) 11:33:59.45ID:qXT5hvVy0
同じ機能を奪い合って矛盾が起きてるので本質的に解決できない
のどかとかに乗り換えるしか
のどかとかに乗り換えるしか
767名無しさん@お腹いっぱい。
2023/12/06(水) 12:16:34.66ID:SB+WZnS00768名無しさん@お腹いっぱい。
2023/12/06(水) 12:17:50.85ID:SB+WZnS002023/12/06(水) 16:52:13.80ID:hcY1PgK80
2023/12/06(水) 19:11:05.84ID:XshpwR0v0
いわゆる「修飾キー押しっぱなし病」について、
ネット上では、Sendの後にSleepを入れればいいとか(やってみたが効果は感じなかった)、
InstallKeybdHookを指定すればいいとか(これは効果を感じた)、
いろいろ書いてあるが、
単純に、修飾キーをSendした後にはその修飾キーのkeyupを送ればいいんじゃね?と思って、
SendKey(str){
Send(str)
Sleep(5)
if InStr(str,"#")
Send("{LWin Up}{RWin Up}")
if InStr(str,"^")
Send("{Ctrl Up}")
if InStr(str,"+")
Send("{Shift Up}")
if InStr(str,"!")
Send("{Alt Up}")
}
こんな関数をSendの代わりに使うようにしたら、
InstallKeybdHookを指定しなくても押しっぱなし病消えたっぽい
単にまだ出てないだけかもしれないけど
ネット上では、Sendの後にSleepを入れればいいとか(やってみたが効果は感じなかった)、
InstallKeybdHookを指定すればいいとか(これは効果を感じた)、
いろいろ書いてあるが、
単純に、修飾キーをSendした後にはその修飾キーのkeyupを送ればいいんじゃね?と思って、
SendKey(str){
Send(str)
Sleep(5)
if InStr(str,"#")
Send("{LWin Up}{RWin Up}")
if InStr(str,"^")
Send("{Ctrl Up}")
if InStr(str,"+")
Send("{Shift Up}")
if InStr(str,"!")
Send("{Alt Up}")
}
こんな関数をSendの代わりに使うようにしたら、
InstallKeybdHookを指定しなくても押しっぱなし病消えたっぽい
単にまだ出てないだけかもしれないけど
2023/12/06(水) 20:50:32.37ID:ock+wqmq0
海外の人達ってデバイスドライバ系のキーバインドソフトが必要になったら何使ってるの?
まさかのどか?それはないか
まさかのどか?それはないか
2023/12/06(水) 23:00:59.56ID:V1ueBJwG0
>>758
頑なにバグまみれの古いバージョンを使い続けるのは罰ゲームなのか苦行なのか
頑なにバグまみれの古いバージョンを使い続けるのは罰ゲームなのか苦行なのか
2023/12/07(木) 07:26:22.44ID:xZsnzk+n0
1はエラーダイアログが出てもソースにジャンプできないのが駄目すぎる
せめてフルパスと行番号が表示されてればAHKでジャンプする機能実装できるんだけど
なぜか正確なパスがわからないようになってるという
なんで最後まで放置したのか意味不明すぎる
せめてフルパスと行番号が表示されてればAHKでジャンプする機能実装できるんだけど
なぜか正確なパスがわからないようになってるという
なんで最後まで放置したのか意味不明すぎる
774名無しさん@お腹いっぱい。
2023/12/07(木) 07:56:47.39ID:4oXjRSz70 プログラミングに慣れてる人は v2
プログラミング初心者は v1
を使うのがよいかもしれない
v2 の方が圧倒的に書きやすいけれど、
初心者にとったらどちらもチンプンカンプンだろうし、ネットに情報の多い v1 の方がむしろ書きやすいかもしれない
プログラミング初心者は v1
を使うのがよいかもしれない
v2 の方が圧倒的に書きやすいけれど、
初心者にとったらどちらもチンプンカンプンだろうし、ネットに情報の多い v1 の方がむしろ書きやすいかもしれない
775名無しさん@お腹いっぱい。
2023/12/07(木) 09:39:32.95ID:4X2vwe/Q02023/12/07(木) 10:27:45.00ID:ecweuucs0
未知のものはあるかもしれんな
777名無しさん@お腹いっぱい。
2023/12/07(木) 10:54:49.82ID:4oXjRSz70 >>775
v1 に回避不能な不具合があるのかどうかは気にしないの?
v1 に回避不能な不具合があるのかどうかは気にしないの?
2023/12/07(木) 11:37:43.11ID:VWr4EXTG0
2023/12/07(木) 11:51:12.24ID:ecweuucs0
コード的には別物だけど、中身は同じ
できなくなることはないし、新しくできるようになることも無い
じゃあ古くていいのかというと、何でこんなに次から次へと新しい言語ができるかという話で
いけてない言語で書くのは苦痛なんだよな
ネットで拾って流用するだけの人はv1の方がいいだろうけど、
自分で書く人はv2一択
できなくなることはないし、新しくできるようになることも無い
じゃあ古くていいのかというと、何でこんなに次から次へと新しい言語ができるかという話で
いけてない言語で書くのは苦痛なんだよな
ネットで拾って流用するだけの人はv1の方がいいだろうけど、
自分で書く人はv2一択
780名無しさん@お腹いっぱい。
2023/12/07(木) 11:56:43.42ID:4X2vwe/Q0 別物とは?
何的な意味で?
構文はどうでもいい
何的な意味で?
構文はどうでもいい
781名無しさん@お腹いっぱい。
2023/12/07(木) 11:58:06.43ID:4X2vwe/Q02023/12/07(木) 12:01:14.23ID:flxu8Gt70
>>780
いい加減自分で文書読めよ。
いい加減自分で文書読めよ。
783名無しさん@お腹いっぱい。
2023/12/07(木) 12:06:23.63ID:4X2vwe/Q0 そもそも、なんでv2を作ったのか?
性能、機能アップ?
v1の構文が古くさいから?
性能、機能アップ?
v1の構文が古くさいから?
2023/12/07(木) 13:43:20.43ID:VWr4EXTG0
もう過ぎ去った話を周回遅れで繰り返しておもろいか
2023/12/07(木) 14:10:35.73ID:zp9wGmxo0
786名無しさん@お腹いっぱい。
2023/12/07(木) 16:28:20.07ID:4oXjRSz702023/12/08(金) 11:55:38.47ID:1pX0izMW0
2023/12/09(土) 07:52:08.43ID:TVyjuGng0
>>779
v2推しの人っていちいち性格悪いね
v2推しの人っていちいち性格悪いね
2023/12/09(土) 12:37:47.79ID:7duhdXWM0
根拠乏しすぎて草
2023/12/10(日) 19:12:18.47ID:AHgvJVdF0
性格悪いっていうより生産性が低い
2023/12/10(日) 19:23:26.42ID:8ZOc5+zo0
生産性が低いっていうより体臭がきつい
2023/12/10(日) 22:48:02.70ID:xfgnMYZ20
体臭キツくても別に開発には困らんしな?
2023/12/11(月) 00:25:17.48ID:1DllKDyi0
スクリプトの起動時間を知る組み込み変数はありますか?
2023/12/11(月) 00:40:04.92ID:5t61Ow810
直接のやつはないけど、そのものズバリのサンプルが組み込み変数の項目に出てるでしょ
まずドキュメントを読んでから質問しよう
まずドキュメントを読んでから質問しよう
2023/12/11(月) 01:27:02.82ID:1DllKDyi0
わかりました
2023/12/13(水) 10:55:33.03ID:56JF4SPR0
2.0になって gosub ~ return が非対応になったときいて、オッチャンちょっとショック。
こんな化石のような命令を使うなって事なんだろうけど。
こんな化石のような命令を使うなって事なんだろうけど。
2023/12/13(水) 11:03:15.38ID:07I6X+Oi0
関数で書けばいいだけじゃない
そっちの方が汎用性もあるし安全だし
スコープだけちょっと気を使う必要があるけど
そっちの方が汎用性もあるし安全だし
スコープだけちょっと気を使う必要があるけど
2023/12/13(水) 11:23:11.85ID:56JF4SPR0
ホンマその通りなんだけど、大昔の悪癖が抜けなくて。
関数化は後にして、とりあえずラベル付けてルーチン内の尻に置いておこうとやっちゃうんだよな。
関数化は後にして、とりあえずラベル付けてルーチン内の尻に置いておこうとやっちゃうんだよな。
2023/12/13(水) 12:46:16.21ID:SgVPAYyz0
2023/12/13(水) 12:55:23.57ID:Je2XmAHf0
関数の中でタイマー呼んで、そのタイマールーチンで関数内の変数使いたい時
関数内ラベルなら問題ないけど、これを関数化しろと言われてもどうやればいいかわからない
関数内ラベルなら問題ないけど、これを関数化しろと言われてもどうやればいいかわからない
2023/12/13(水) 13:30:43.96ID:pIpQWCSE0
ただのタイマーがそんなもん使うのがそもそもおかしい
特殊機能付きタイマーなら、そういうインターフェースに設計すれば自然と変数が渡る
特殊機能付きタイマーなら、そういうインターフェースに設計すれば自然と変数が渡る
2023/12/13(水) 13:32:03.30ID:pw/YUwfp0
v2だけど関数をそのまま書けるよ
Test() {
a := "test"
Timer() {
ToolTip a
}
SetTimer Timer, -1
Sleep 3000
ToolTip
}
Test()
Test() {
a := "test"
Timer() {
ToolTip a
}
SetTimer Timer, -1
Sleep 3000
ToolTip
}
Test()
2023/12/13(水) 15:53:02.85ID:7D73zVIY0
CPU負荷かかるとミス起きるなぁ
高レベル側での処理だから仕方ないか
高レベル側での処理だから仕方ないか
804名無しさん@お腹いっぱい。
2023/12/13(水) 17:02:27.72ID:1Si6H8v70 >>802
ちなみにこれはTimer()がクロージャーなので循環参照には気を付けてね
ちなみにこれはTimer()がクロージャーなので循環参照には気を付けてね
805名無しさん@お腹いっぱい。
2023/12/14(木) 09:51:07.21ID:2brz0lxO0 で、
結局、v2に移行してええの?
問題ない?
結局、v2に移行してええの?
問題ない?
2023/12/14(木) 09:58:05.13ID:/DAs7gWY0
自分で書く人なら自分で判断できるし、自分で書かない人は移行不要
807名無しさん@お腹いっぱい。
2023/12/14(木) 13:23:59.78ID:RUDdyo9z0808名無しさん@お腹いっぱい。
2023/12/14(木) 14:12:44.31ID:2brz0lxO0809名無しさん@お腹いっぱい。
2023/12/14(木) 14:13:43.24ID:2brz0lxO02023/12/14(木) 15:29:39.49ID:Rp7ue7zA0
C++より難しいものあるかよ
英語サイトしかみないならReddit見てこいや
英語サイトしかみないならReddit見てこいや
2023/12/14(木) 17:45:28.76ID:3JCbgbBy0
C++とPython同列にする辺り分かってないような気がするが
812名無しさん@お腹いっぱい。
2023/12/14(木) 17:49:56.32ID:2brz0lxO0 ↑
と、バカがゴミレス
と、バカがゴミレス
2023/12/14(木) 17:56:14.00ID:JV6NPWjT0
こいつ質問のふりしておちょくる手口の常連荒らしじゃん
814名無しさん@お腹いっぱい。
2023/12/14(木) 18:01:23.62ID:2brz0lxO0 ↑
またゴミレスバカかよ…
またゴミレスバカかよ…
2023/12/14(木) 18:22:02.25ID:HgptBGdi0
そのようだ
816名無しさん@お腹いっぱい。
2023/12/14(木) 18:30:25.79ID:RUDdyo9z02023/12/14(木) 19:47:36.79ID:LKl14BGd0
一連のレスしておいてどうしたら自分が「ゴミレスバカ」でないと思えるの?
すごいね
すごいね
818名無しさん@お腹いっぱい。
2023/12/14(木) 20:42:19.34ID:2brz0lxO0819名無しさん@お腹いっぱい。
2023/12/14(木) 20:42:43.11ID:2brz0lxO0820名無しさん@お腹いっぱい。
2023/12/14(木) 20:43:23.30ID:2brz0lxO02023/12/20(水) 00:53:26.32ID:sRIcY9v50
キーボードをマイナーチェンジ版に替えたら(Logicool K380→K380s)
それまでの修飾キー押しっぱなし病対策が、却って問題を引き起こすようになった
以前はホットキーを押し続けていると、たまにホットキーじゃないキーが入力される現象があったが
新しいキーボードではそういうことはなくなった
シビアなタイミングに左右されるところがあるから
製品差、個体差で現象が出たり出なかったりするんだな
それまでの修飾キー押しっぱなし病対策が、却って問題を引き起こすようになった
以前はホットキーを押し続けていると、たまにホットキーじゃないキーが入力される現象があったが
新しいキーボードではそういうことはなくなった
シビアなタイミングに左右されるところがあるから
製品差、個体差で現象が出たり出なかったりするんだな
2023/12/20(水) 12:41:18.15ID:LzkTx5Q/0
Keymillのようなスキャンコード表示アプリを使ったりAHKのコード内でA_PriorHotkeyの値を随時チェックすると、
キーボードの挙動って機種や接続形態で結構違うんだなってちょっと驚いたわ。
キーボードの挙動って機種や接続形態で結構違うんだなってちょっと驚いたわ。
2023/12/20(水) 13:05:29.86ID:rgoAFFc/0
基本的にUSBキーボードって最終発行に至るまでに、その仕組み上、
内部で必ずソフトウェア的な変換が介在するからね
特に修飾キー周りは変なディレイがあったり、upを二回送信してたり
癖が強いやつがたまにある
内部で必ずソフトウェア的な変換が介在するからね
特に修飾キー周りは変なディレイがあったり、upを二回送信してたり
癖が強いやつがたまにある
824名無しさん@お腹いっぱい。
2023/12/20(水) 18:01:07.86ID:aMQJw63N0 IMEがONでもOFFでも半角で日付を入れる方法 今日なら2023_1220_
って入れたいんだけど調べたやつ改変しても出来ない…。
^;::InsertDate("yyyy_MM_dd_")
InsertText(Content) {
cb_bk = %ClipboardAll%
Clipboard = %Content%
Send, ^v
Sleep, 100
Clipboard = %cb_bk%
}
InsertDate(format) {
FormatTime,TimeString,,%format% ;引数formatに入れた文字列に基づいてフォーマットする
InsertText(TimeString)
}
何も反応しないんだけど、どうすればいいんでしょうか
とにかく半角で日付を入れたいです
って入れたいんだけど調べたやつ改変しても出来ない…。
^;::InsertDate("yyyy_MM_dd_")
InsertText(Content) {
cb_bk = %ClipboardAll%
Clipboard = %Content%
Send, ^v
Sleep, 100
Clipboard = %cb_bk%
}
InsertDate(format) {
FormatTime,TimeString,,%format% ;引数formatに入れた文字列に基づいてフォーマットする
InsertText(TimeString)
}
何も反応しないんだけど、どうすればいいんでしょうか
とにかく半角で日付を入れたいです
2023/12/20(水) 18:09:19.46ID:zBm7U9Jj0
>>824
それでCtrl+;押したら2023_12_20_ってちゃんと出たけど
それでCtrl+;押したら2023_12_20_ってちゃんと出たけど
2023/12/20(水) 18:28:50.09ID:LzkTx5Q/0
うちの環境でも正しく実行されている。
テキストエディタや表集計上で 2023_12_20_ と出力できたし、
InsertText関数内でクリップボード情報を一次退避させるAHKの定番処理も問題ない。
もしかして、ルーチン内のバグ以前にCtrl+セミコロン のホットキーが正しく定義できていないとかかな。
テキストエディタや表集計上で 2023_12_20_ と出力できたし、
InsertText関数内でクリップボード情報を一次退避させるAHKの定番処理も問題ない。
もしかして、ルーチン内のバグ以前にCtrl+セミコロン のホットキーが正しく定義できていないとかかな。
2023/12/20(水) 18:54:46.17ID:LzkTx5Q/0
もしかしたら、AHK1.x系を前提に作られたWeb上のサンプルプログラムをAHK2.0で実行しちゃったとかかな。
ただ今回のものはかなり簡潔なものなので、2.0上で不具合が起こるかまでは分からないけれど。
ただ今回のものはかなり簡潔なものなので、2.0上で不具合が起こるかまでは分からないけれど。
2023/12/20(水) 18:56:09.40ID:1MxSSrdS0
まさか 2023_1220_ ←こうしたいけど、2023_12_20_ ←こう出てくるから"出来ない"って言ってるんじゃないよなあ
2023/12/20(水) 18:58:49.59ID:1MxSSrdS0
2023/12/20(水) 19:16:15.25ID:rgoAFFc/0
>>827
=で代入しているから、v2だとエラー出まくりで起動どころの騒ぎじゃないと思うぞ
=で代入しているから、v2だとエラー出まくりで起動どころの騒ぎじゃないと思うぞ
2023/12/20(水) 20:40:35.04ID:LzkTx5Q/0
そうか、2.0は従来のアバウトな仕様を基本から整理整頓したのか。
変数名でも% %で括れば配列代わりに使えるっていう便利なあれも2.0では廃止だったら辛いなぁ。
変数名でも% %で括れば配列代わりに使えるっていう便利なあれも2.0では廃止だったら辛いなぁ。
2023/12/20(水) 21:26:38.13ID:IpXbZ8do0
2023/12/20(水) 21:35:03.67ID:k0JIe0fX0
Send, ^v
個人的な経験だけどこれ反応しないソフトも結構あるから面倒だけどキー個別に送った方がいいと思う
個人的な経験だけどこれ反応しないソフトも結構あるから面倒だけどキー個別に送った方がいいと思う
2023/12/20(水) 21:49:00.95ID:mjEdk/3S0
ラッパー関数作ってif winactiveで分岐して
最適な送り方すればいい
最適な送り方すればいい
2023/12/20(水) 23:04:30.04ID:GHCQq/k50
mayuの時は簡単に書けてすんなり動いたのに、なんかahkだと苦労が増えるんだよな
何でもやれるようにした代わりに不安定になってる気がする
例えば、ahkだと何か押しながら別の何かを押すとかは全てのキーで特に定義も無しに書ける
mayuはモディファイアとして使うキーはモディファイアとして宣言しないと使えない
でもそうそう変なこともしないので、それで特に困らない
何でもやれるようにした代わりに不安定になってる気がする
例えば、ahkだと何か押しながら別の何かを押すとかは全てのキーで特に定義も無しに書ける
mayuはモディファイアとして使うキーはモディファイアとして宣言しないと使えない
でもそうそう変なこともしないので、それで特に困らない
2023/12/23(土) 10:52:38.12ID:ukhjPbWa0
Release v2.0.11 · AutoHotkey/AutoHotkey · GitHub
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.11
> Added a workaround for the first shown menu not accepting keyboard input on Windows 10.
> Fixed the Add method (Gui) to support the ShortDate option for DateTime controls.
> Fixed a reference counting error with multi-level function nesting.
> Fixed #include <x> causing a load-time crash if used inside a function.
> Fixed ListView.Opt("NoSort").
> Fixed a memory leak occurring when an object with no own properties is cloned.
> Fixed #include and FileInstall (non-compiled) to compare file names ordinally, not linguistically.
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.11
> Added a workaround for the first shown menu not accepting keyboard input on Windows 10.
> Fixed the Add method (Gui) to support the ShortDate option for DateTime controls.
> Fixed a reference counting error with multi-level function nesting.
> Fixed #include <x> causing a load-time crash if used inside a function.
> Fixed ListView.Opt("NoSort").
> Fixed a memory leak occurring when an object with no own properties is cloned.
> Fixed #include and FileInstall (non-compiled) to compare file names ordinally, not linguistically.
2023/12/24(日) 16:08:14.40ID:CYybi49m0
converter使いながら毎日チクチクv2変換修正してるけど、関数内で”をエスケープできるのありがたい
あといつの間にか有志がv2doc日本語化してくれてるまじ感謝
https://ahkscript.github.io/ja/docs/v2/ChangeLog.htm
あといつの間にか有志がv2doc日本語化してくれてるまじ感謝
https://ahkscript.github.io/ja/docs/v2/ChangeLog.htm
2023/12/24(日) 16:42:29.32ID:liaXYb2l0
それ半年くらい前から誰かがやってるみたいだね
ただ機械翻訳のコピペのようで意味不明な訳になってたり
明らかな語訳も結構あるので、注意が必要
まあやらないよりかは全然いいんだけどね
ただ機械翻訳のコピペのようで意味不明な訳になってたり
明らかな語訳も結構あるので、注意が必要
まあやらないよりかは全然いいんだけどね
2023/12/24(日) 16:46:07.98ID:yd+AjvhU0
珍しいよな
フリーソフトの多言語対応用ファイルがいろんな言語でずらーっと並んでるのに、
日本語は無いから仕方なく英語のまま、とかよくあるのに
フリーソフトの多言語対応用ファイルがいろんな言語でずらーっと並んでるのに、
日本語は無いから仕方なく英語のまま、とかよくあるのに
2023/12/24(日) 17:04:21.43ID:liaXYb2l0
最初は不格好でも、やる意思が重要だ
高い完成度目指してぜひ頑張ってほしい
高い完成度目指してぜひ頑張ってほしい
841名無しさん@お腹いっぱい。
2023/12/24(日) 17:08:18.77ID:tBKPvyR/0 k-ayakiて人だな
https://github.com/autohotkey-docs-translation
で作業したものをRagnar-Fてードイツ人ぽい人がサイトの方に突っ込んでるよーだ
https://github.com/autohotkey-docs-translation
で作業したものをRagnar-Fてードイツ人ぽい人がサイトの方に突っ込んでるよーだ
2023/12/24(日) 17:22:03.28ID:CYybi49m0
機械翻訳mutlilangで開発して気になるなら有志が直して、がソフト開発業界に広まってくれるといいなー
843名無しさん@お腹いっぱい。
2023/12/24(日) 20:14:33.91ID:3ig89AOO02023/12/24(日) 20:15:54.80ID:yd+AjvhU0
ぐぐると大抵そっちが引っかかるんだよな
2023/12/24(日) 21:39:53.46ID:QNbWAPF+0
>>838
語訳?
語訳?
2023/12/26(火) 16:25:18.54ID:yAzePLy20
AHKって今何のキー押されているインタラクティブに知る方法ないの?
Key history and script infoっていちいちF5押さないといけないし使いづらい
Key history and script infoっていちいちF5押さないといけないし使いづらい
2023/12/26(火) 16:29:40.55ID:HbfUqRnh0
>>846
ahkでリアルタイム表示のスクリプト組めばいい
ahkでリアルタイム表示のスクリプト組めばいい
2023/12/26(火) 16:38:48.60ID:LswhKh580
いちいち押すからこそインタラクティブなのでは?
リアルタイムの意味?
リアルタイムの意味?
2023/12/27(水) 18:48:17.83ID:wmnOVXol0
AHK民はストアアプリ何使ってる?うちは関数電卓だけ
Windowsストアアプリをコマンドラインで起動する簡単な方法!【レビュー】 - 窓の杜
https://forest.watch.impress.co.jp/docs/review/1557923.html
Windowsストアアプリをコマンドラインで起動する簡単な方法!【レビュー】 - 窓の杜
https://forest.watch.impress.co.jp/docs/review/1557923.html
2023/12/27(水) 19:10:48.55ID:0AF+9vTy0
別に興味無いんで他所でやってくださる?
せめてAHKに絡めて?
せめてAHKに絡めて?
2023/12/31(日) 22:47:08.12ID:mR8pLXSu0
win7の電卓を11で使ってる
2024/01/01(月) 00:55:36.57ID:xS334IXm0
もうwin7がwin10にできないと思うとなんかやりたくなる
2024/01/02(火) 10:46:37.95ID:We1gUiNd0
AHKv1.1 から AHKv2 になってオブジェクトの扱いがイマイチわからん
こういうオブジェクトのキーと値のパースはどうやったらできるの?
#Requires Autohotkey v2.0
obj := {a: "Value A", b: "Value B", c: "Value C"}
for key, value in obj
MsgBox "Key: " key ", Value: " value
こういうオブジェクトのキーと値のパースはどうやったらできるの?
#Requires Autohotkey v2.0
obj := {a: "Value A", b: "Value B", c: "Value C"}
for key, value in obj
MsgBox "Key: " key ", Value: " value
2024/01/02(火) 11:06:40.65ID:qgTJ2V360
2024/01/02(火) 11:41:15.72ID:We1gUiNd0
>>854
ありがとうできました!
このページみたつもりだったけど素通りでした
ChatGPT も Phind も GitHub Copilot も AHKv2 についてはほとんど教えてくれんし
助かりました!
ありがとうできました!
このページみたつもりだったけど素通りでした
ChatGPT も Phind も GitHub Copilot も AHKv2 についてはほとんど教えてくれんし
助かりました!
2024/01/04(木) 15:39:17.71ID:wlm7xR370
ImageSearchで指定した画像の中心を得るにはどうすれば
2024/01/04(木) 20:26:40.01ID:iaRTsSHt0
物理キーが増えるってよ
Windows 11 PCに「Copilotキー」を搭載 30年ぶり新キーはAI PC用(Impress Watch) - Yahoo!ニュース
https://news.yahoo.co.jp/articles/8b6ed5d41f718dba033b117ef07621cf0b5bd7c9
https://asset.watch.impress.co.jp/img/ipw/docs/1558/830/ms3_o.jpg
Windows 11 PCに「Copilotキー」を搭載 30年ぶり新キーはAI PC用(Impress Watch) - Yahoo!ニュース
https://news.yahoo.co.jp/articles/8b6ed5d41f718dba033b117ef07621cf0b5bd7c9
https://asset.watch.impress.co.jp/img/ipw/docs/1558/830/ms3_o.jpg
2024/01/04(木) 21:05:05.57ID:qr6MmXUe0
右クリメニューのボタンなくなるんか
2024/01/04(木) 21:18:03.20ID:MaRIYuhC0
それメディア用に作られた仮画像でしょ
記事中になくなるとか代替になるとかは書かれていない
記事中になくなるとか代替になるとかは書かれていない
2024/01/04(木) 21:36:17.43ID:wlm7xR370
会社のノートPCもコンテキストキーが無くて、
何故か代わりにPrintScreenがあるので、レジストリ書き換えたった
windowsはツール不要でキー変更できるようにできてる
何故か代わりにPrintScreenがあるので、レジストリ書き換えたった
windowsはツール不要でキー変更できるようにできてる
861名無しさん@お腹いっぱい。
2024/01/04(木) 23:53:38.71ID:69MufodC0 >>860
thinkpadキーボード唯一の欠点やな
thinkpadキーボード唯一の欠点やな
862名無しさん@お腹いっぱい。
2024/01/04(木) 23:58:45.87ID:69MufodC02024/01/05(金) 00:07:02.07ID:n6i2rxHK0
ノートPCにテンキー無理やり入れるのやめればいいのにな
2024/01/05(金) 01:42:13.07ID:239I3UN/0
ほいらのPCは、その場の状況に合わせて無変換キー押すだけで作業終わるわ
無変換キー神
無変換キー神
2024/01/05(金) 01:48:14.02ID:zOrztzBK0
無変換キーは良いよね
程よく大きくて位置も押しやすいし
修飾キーに最適
程よく大きくて位置も押しやすいし
修飾キーに最適
2024/01/05(金) 04:39:01.62ID:4Mb46lcu0
ほいら?(ほいら?だけだと「保守は荒らし」って出て書けなかった、意味わからん)
2024/01/05(金) 09:13:08.64ID:n6i2rxHK0
松茸の昔から、スペースの左はIME offだったので、
今更それ以外の用途には使えない
と思ってたけど、モディファイアにも使うようにしてむっさ幅が増えた
今更それ以外の用途には使えない
と思ってたけど、モディファイアにも使うようにしてむっさ幅が増えた
2024/01/05(金) 14:20:20.12ID:oBLqBero0
F1キーのヘルプをCopilotキーに置き換えればいいのに
windowsヘルプに助けられた記憶がないw
windowsヘルプに助けられた記憶がないw
2024/01/05(金) 18:47:04.27ID:hUC6O/KJ0
このせいで使い慣れたキーの位置が変わったら嫌だなぁと思ったが
アプリケーションキーの代わりに入るだけっぽいのでヨシ
アプリケーションキーの代わりに入るだけっぽいのでヨシ
2024/01/08(月) 23:37:56.73ID:oVBQ4gzE0
今どきのキーボードってボリュームや画面輝度などマルチメディア系の制御の為に
FnキーがRWinかAppsキーに取って代わってる状態なのに、その位置にさらに増えるのか。
ノートや省スペースキーボードのようにスペースバーの右側が混雑しているキーボードだと更に苦しくなりそう。
FnキーがRWinかAppsキーに取って代わってる状態なのに、その位置にさらに増えるのか。
ノートや省スペースキーボードのようにスペースバーの右側が混雑しているキーボードだと更に苦しくなりそう。
2024/01/08(月) 23:41:39.13ID:nW5KUHR+0
Fnキーって大抵邪魔だよな
大事なキーをFn必須にするくらいなら、要らんキー削除して大事なキーをFn無しで押せるようにしとけ
大事なキーをFn必須にするくらいなら、要らんキー削除して大事なキーをFn無しで押せるようにしとけ
2024/01/08(月) 23:57:12.75ID:oVBQ4gzE0
テンキーやF1~F12キーまで省いた60%省スペースキーボードなどではFnキーが必須なのは分かるけれど、
スキャンコードを取得できない特殊キーが最前列のいい場所に居座るのはちょっと困るんだよなぁw
スキャンコードを取得できない特殊キーが最前列のいい場所に居座るのはちょっと困るんだよなぁw
2024/01/09(火) 00:15:19.71ID:kl5xY70K0
そこで QMK/VIA でっせ
2024/01/09(火) 00:40:04.17ID:JlTporQ+0
>>865
私は「スペースキー」と「無変換キー」を修飾キーとして使っていて、
「スペースキー」の方が押しやすいと感じています。
なので「スペースキー」を使ったショートカットキーを一軍、
「無変換キー」使ったショートカットキーを二軍に設定していますが、
少数派でしょうか?
私は「スペースキー」と「無変換キー」を修飾キーとして使っていて、
「スペースキー」の方が押しやすいと感じています。
なので「スペースキー」を使ったショートカットキーを一軍、
「無変換キー」使ったショートカットキーを二軍に設定していますが、
少数派でしょうか?
2024/01/09(火) 00:56:05.32ID:GUpuQCbB0
スペースが押しやすいのは当たり前かと
一番押しやすい位置に配置されてるんだから
まあ普通は修飾キーには使わんだろうね
物書きとかコーダーは特に
一番押しやすい位置に配置されてるんだから
まあ普通は修飾キーには使わんだろうね
物書きとかコーダーは特に
2024/01/09(火) 01:07:08.95ID:kl5xY70K0
SandS を試しに使ってみたことが有るが、
スペースを押して瞬時に次のキーを押さねばならず、
次のキーを押さないでいるとスペースキーのキーリピートが始まるし、
キーリピートを無効にするとキーリピートできないし、
いろいろと微妙だった
スペースを押して瞬時に次のキーを押さねばならず、
次のキーを押さないでいるとスペースキーのキーリピートが始まるし、
キーリピートを無効にするとキーリピートできないし、
いろいろと微妙だった
2024/01/09(火) 08:03:22.49ID:zijc3vSF0
キーリピートなんかカーソルキーでしか使わないから、
無効になってもそんなに困らないけどな
無効になってもそんなに困らないけどな
878名無しさん@お腹いっぱい。
2024/01/09(火) 11:33:24.52ID:yJ+C687H0 シフト+capslockをcapslockキーだけで行いたいです。
VKF0::+capslock
こうするとcapslockだけで大文字に出来たんですが、
その後capslockランプ点灯中はキーコードが0x0000になって一切反応しなくなります。
シフト+capslockを押すと元に戻りました。
ランプ点灯中にcapslockだけでシフト+capslockの効果を持たせるにはどうしたらいいですか。
VKF0::+capslock
こうするとcapslockだけで大文字に出来たんですが、
その後capslockランプ点灯中はキーコードが0x0000になって一切反応しなくなります。
シフト+capslockを押すと元に戻りました。
ランプ点灯中にcapslockだけでシフト+capslockの効果を持たせるにはどうしたらいいですか。
2024/01/09(火) 11:50:09.40ID:G5LWb0H30
send,{blind}+{capslock}
880名無しさん@お腹いっぱい。
2024/01/09(火) 12:05:28.42ID:yJ+C687H0 出来ました、ありがとうございます
881名無しさん@お腹いっぱい。
2024/01/09(火) 12:15:59.77ID:yJ+C687H0 すいません、メモ帳で使ってみたんですが
capslockを押すと「 �嫩apslock縺�縺代〒capslock縺ォ縺吶k」こんな入力が行われるようになりました
capslockランプは点灯消灯するので大文字小文字は意図通りに出来るのですが
なぜか半角全角の機能と何かの文字列まで一緒に入力されてしまうようです
capslockを押すと「 �嫩apslock縺�縺代〒capslock縺ォ縺吶k」こんな入力が行われるようになりました
capslockランプは点灯消灯するので大文字小文字は意図通りに出来るのですが
なぜか半角全角の機能と何かの文字列まで一緒に入力されてしまうようです
882名無しさん@お腹いっぱい。
2024/01/09(火) 12:20:12.57ID:yJ+C687H0 すいません
後ろに付けたコメントが原因でした
消したら直りました
ありがとうございました
後ろに付けたコメントが原因でした
消したら直りました
ありがとうございました
883名無しさん@お腹いっぱい。
2024/01/10(水) 17:27:08.52ID:Xo4BsL/O0 デュアルディスプレイでマウスカーソルをディスプレイ1と2を瞬時移動させるようなことって可能?
2024/01/10(水) 17:54:40.48ID:4De++NWq0
GetMousePos,if,MouseMoveあたりでサクッとできるだろ
ガチでやるならSysGet, Monitorナンタラでモニタ情報列挙して順番に中央に移動みたいなコードも書ける
ガチでやるならSysGet, Monitorナンタラでモニタ情報列挙して順番に中央に移動みたいなコードも書ける
885名無しさん@お腹いっぱい。
2024/01/10(水) 21:03:33.45ID:Xo4BsL/O0 ありがとうやってみます
2024/01/10(水) 22:13:15.25ID:LtPGYi2t0
オマ環かもしれないけど、MouseMoveでマルチディスプレイのモニタ境目はxy+-7以上指定しないと越えられない
2024/01/14(日) 17:02:34.55ID:M8rTrnbq0
いらねぇ
せめてスペースの真下にしろよ
ここなら4つつけてもいい
Microsoft 曰く、Copilotキーの配置はメーカー次第だがスペースバー右側が一般的 | スラド ハードウェア
https://hardware.srad.jp/story/24/01/14/0415209/
せめてスペースの真下にしろよ
ここなら4つつけてもいい
Microsoft 曰く、Copilotキーの配置はメーカー次第だがスペースバー右側が一般的 | スラド ハードウェア
https://hardware.srad.jp/story/24/01/14/0415209/
2024/01/14(日) 17:10:57.26ID:LEdmYFrQ0
スレ違い
2024/01/17(水) 07:09:30.03ID:5oNWAEVj0
キーボードの世界にもリストラの波 #CES2024 | ギズモード・ジャパン
https://www.gizmodo.jp/2024/01/copilot-key-1.html
https://www.gizmodo.jp/2024/01/copilot-key-1.html
2024/01/17(水) 08:06:19.18ID:QH/GhxVr0
これでcopilotキーの使い方が決まったわ
右ctrlにリマップする
右ctrlにリマップする
2024/01/17(水) 11:19:56.39ID:2XOJFfAY0
そのうち右shiftも無くなりそうだな
2024/01/17(水) 11:27:44.47ID:iCk8fVuh0
shiftは英文打つのに普通に使うから
それはないわ
それはないわ
2024/01/17(水) 11:38:18.26ID:2XOJFfAY0
フルキーの数字を使えない人が多いんだよな
第1回、みたいに書く時の1をわざわざテンキーで押す
テンキーは大量の数字を入力する時に使うもので、
今どき紙の伝票なんか使ってないんだからとっくに不要になってるのに
第1回、みたいに書く時の1をわざわざテンキーで押す
テンキーは大量の数字を入力する時に使うもので、
今どき紙の伝票なんか使ってないんだからとっくに不要になってるのに
2024/01/17(水) 12:55:43.05ID:OtXEesgm0
手癖ってのがあってだな?
2024/01/17(水) 13:12:35.13ID:4OH0ZQKG0
フルキーは未確定、テンキーは確定入力で便利に使い分けてるが
2024/01/17(水) 15:22:27.93ID:WS7ZF5bM0
テンキーは左に置いて、マウスボタン・スクロールに置換してる
2024/01/17(水) 16:46:21.76ID:t+5lukc+0
>>896
どうやって?
どうやって?
2024/01/17(水) 17:31:16.51ID:OtXEesgm0
>>897
BTのテンキーのみキーボードとかある
BTのテンキーのみキーボードとかある
2024/01/17(水) 17:37:40.90ID:2XOJFfAY0
プログラマブルの奴ね
画像や動画の編集とかDTMは機能が多いので、
専用キーに割り付けると効率が上がる
画像や動画の編集とかDTMは機能が多いので、
専用キーに割り付けると効率が上がる
2024/01/17(水) 17:54:53.55ID:t+5lukc+0
2024/01/17(水) 17:58:29.35ID:2XOJFfAY0
プログラマブルを売りにしてる製品が多いけど、
我々としてはキーコードさえ出してくれればあとはこっちでやるからなんだよな
我々としてはキーコードさえ出してくれればあとはこっちでやるからなんだよな
2024/01/17(水) 18:01:05.48ID:OtXEesgm0
2024/01/17(水) 20:19:42.96ID:WS7ZF5bM0
>>897
いずれマクロパッドにしたいけど、取り敢えず外付テンキーパッドで
NumPadAdd::
Click,Left,D
KeyWait,NumPadAdd
Click,Left,U
Return
いずれマクロパッドにしたいけど、取り敢えず外付テンキーパッドで
NumPadAdd::
Click,Left,D
KeyWait,NumPadAdd
Click,Left,U
Return
2024/01/17(水) 21:16:46.28ID:t+5lukc+0
2024/01/17(水) 22:05:34.23ID:3Y0SCQKz0
>>889
ノートなんてただでさえキー領域が小さいのに十字キーに隙間作るとか信じられない
ノートなんてただでさえキー領域が小さいのに十字キーに隙間作るとか信じられない
2024/01/17(水) 22:24:58.67ID:WS7ZF5bM0
2024/01/17(水) 22:30:31.30ID:t+5lukc+0
2024/01/17(水) 22:47:33.39ID:2XOJFfAY0
ドラッグしないなあ
マウス使うのはブラウザのリンクをクリックする時くらい
ドラッグはD&Dの前半か、範囲選択くらいだろうけど、
D&D自体まずやらないし、範囲選択は普通にキーボードだし
マウス使うのはブラウザのリンクをクリックする時くらい
ドラッグはD&Dの前半か、範囲選択くらいだろうけど、
D&D自体まずやらないし、範囲選択は普通にキーボードだし
2024/01/18(木) 00:12:50.26ID:tPfh4sCb0
無変換キーをモディファイアにしてるんだけど(例:無変換+jでDownキー)
リモートデスクトップ越しだと無変換キーのまま渡されてしまう
リモートデスクトップに渡るキーは全部AHK処理後のキーにしたいんだけどどうすればいいの?
リモートデスクトップ越しだと無変換キーのまま渡されてしまう
リモートデスクトップに渡るキーは全部AHK処理後のキーにしたいんだけどどうすればいいの?
2024/01/18(木) 00:27:05.78ID:+u3AQ5bv0
2024/01/18(木) 00:34:23.17ID:HCvU5IHR0
ウィンドウズですー
ウィンドウを自由に動かして重ね合わせて作業できますー
が最大の触れ込みなんだけど、定位置に置いとくか最大化して使うかだけなんよな
ウィンドウ同士重なってたら普通に使いにくいので、画面を分割して固定で置く
元からの思想が崩壊している
ウィンドウを自由に動かして重ね合わせて作業できますー
が最大の触れ込みなんだけど、定位置に置いとくか最大化して使うかだけなんよな
ウィンドウ同士重なってたら普通に使いにくいので、画面を分割して固定で置く
元からの思想が崩壊している
2024/01/18(木) 07:38:51.94ID:7xrc2JFO0
>>910
Alt+space→m→マウス移動、確定時クリックでいいからドラッグ要素0では
Alt+space→m→マウス移動、確定時クリックでいいからドラッグ要素0では
913名無しさん@お腹いっぱい。
2024/01/19(金) 08:30:24.25ID:xNriiRAw0 >>911
貴様の頭が固いだけじゃねーか
貴様の頭が固いだけじゃねーか
2024/01/19(金) 17:31:57.13ID:DXxYhRar0
>>911
机上で資料を重ねて置く発想なさそう
机上で資料を重ねて置く発想なさそう
2024/01/19(金) 17:50:40.87ID:wb2z4OFS0
そんなことした奴おらんだろ
仮に狭い机でやったとしても、
ストレス溜まりすぎてもっと広い机が必要と感じるだろ
本を重ねて読んだら快適、になる奴はおらん
仮に狭い机でやったとしても、
ストレス溜まりすぎてもっと広い机が必要と感じるだろ
本を重ねて読んだら快適、になる奴はおらん
2024/01/19(金) 18:36:50.95ID:O6kpDFU+0
レジュメもらったらバラして机に全部広げるwww
2024/01/19(金) 18:41:39.58ID:JOqfZrkj0
机の広さは大事よな
仮想二画面機能とかバカジャネーノって感じするわ
仮想二画面機能とかバカジャネーノって感じするわ
2024/01/20(土) 02:34:13.78ID:HqXMKLTS0
> 複数のデスクトップの使用は、関連性のない進行中の複数のプロジェクトを整理する場合や、ミーティングの前にデスクトップをすばやく切り替える場合などに最適です。
らしいから広さとは別じゃね
らしいから広さとは別じゃね
2024/01/20(土) 06:08:56.37ID:iCWRg9qD0
仮想デスクトップは使う側も頭の切り替えが要るんだよな
リモートデスクトップの画面まるごと仮想デスクトップにする、とかが判り易い
単に並行してやってる仕事は仮想側で、とかやっても、
どうしてもメイン側と頻繁に行き来したり、何故か違う側で起動したり、
勝手にデスクトップ移動してたりと、逆に不便にしかならない
切り分けすらなく、単純にデスクトップを広くしたい、という要求は全く満たさない
リモートデスクトップの画面まるごと仮想デスクトップにする、とかが判り易い
単に並行してやってる仕事は仮想側で、とかやっても、
どうしてもメイン側と頻繁に行き来したり、何故か違う側で起動したり、
勝手にデスクトップ移動してたりと、逆に不便にしかならない
切り分けすらなく、単純にデスクトップを広くしたい、という要求は全く満たさない
2024/01/20(土) 08:03:53.43ID:8pi/Rrzd0
>>911
下のウインドウを見ながら作業したいときは、raptureで下画面を切り取って最前面に出すと捗る
→ 操作手順や参考資料を見ながら作業するとき
下のウインドウを小さくして、ウインドウごを最前面にするのもあり
→ Zoomや動画を見ながら作業するとき
下のウインドウを見ながら作業したいときは、raptureで下画面を切り取って最前面に出すと捗る
→ 操作手順や参考資料を見ながら作業するとき
下のウインドウを小さくして、ウインドウごを最前面にするのもあり
→ Zoomや動画を見ながら作業するとき
2024/01/20(土) 08:24:57.60ID:iCWRg9qD0
やるなあ
必要な部分をキャプチャーして、snipping toolのウィンドウを適当なとこに置いて参照
重なってると見えない問題を半透明で解決しようとする人もいる
便利だと言うけどそうは思えない
必要な部分をキャプチャーして、snipping toolのウィンドウを適当なとこに置いて参照
重なってると見えない問題を半透明で解決しようとする人もいる
便利だと言うけどそうは思えない
922名無しさん@お腹いっぱい。
2024/01/20(土) 17:37:50.91ID:W1G+sVP50 AHKから外れすぎだろ貴様等
2024/01/20(土) 18:07:33.00ID:8pi/Rrzd0
raptureをAHKでキー割当てマジでおススメ
2024/01/20(土) 18:15:35.10ID:458iYndG0
Crop And Lock?
PowerToysでよくない?
PowerToysでよくない?
2024/01/20(土) 18:22:14.79ID:iCWRg9qD0
shift-win-sでよくない?
2024/01/20(土) 18:26:37.43ID:458iYndG0
動かないなら良いんじゃない?
2024/01/20(土) 19:55:11.36ID:8pi/Rrzd0
2024/01/20(土) 20:30:38.75ID:iCWRg9qD0
動画の一部だけ見えて役に立つの?
2024/01/20(土) 21:41:06.86ID:8pi/Rrzd0
>>928
「ながら作業」に使えそうじゃない? Web会議しながら内職みたいな
「ながら作業」に使えそうじゃない? Web会議しながら内職みたいな
2024/01/20(土) 22:12:12.18ID:iCWRg9qD0
動画の一部しか見えないこととながら作業に使えることの関連が判らない
2024/01/20(土) 23:06:27.74ID:8pi/Rrzd0
2024/01/20(土) 23:15:13.31ID:iCWRg9qD0
つまり、要る部分は全部表示されてないとやっぱり困る訳で
もともとのウインドウの重ね合わせの話は、
重なってたって困らないという主張に対する反論から始まっている
もともとのウインドウの重ね合わせの話は、
重なってたって困らないという主張に対する反論から始まっている
933名無しさん@お腹いっぱい。
2024/01/21(日) 04:56:46.76ID:3HCltgFj0 つまりID:iCWRg9qD0には話が通じない
2024/01/21(日) 08:50:47.84ID:bwNwDQCL0
重なってたって困らないんじゃなく、
重なってても困らない場合がある
これを理解できないのがID:iCWRg9qD0
重なってても困らない場合がある
これを理解できないのがID:iCWRg9qD0
2024/01/21(日) 12:45:25.54ID:7DJqWtUs0
困らない場合は、枠とかの不要部分が重なってる時限定の訳で
そんな些細な例外を根拠に意見を曲げない神経がよく判らん
そんな些細な例外を根拠に意見を曲げない神経がよく判らん
2024/01/21(日) 12:54:58.83ID:JekznpvH0
指摘やアドバイスを攻撃と捉える奴、思い込みが最優先で一切の妥協をしない奴ってのは結構な数居るもんだね
職場や家庭でうまくやっていけてるのか心配になる
職場や家庭でうまくやっていけてるのか心配になる
2024/01/21(日) 13:00:46.15ID:7DJqWtUs0
そんなことがいちいち心配になる人は、戦争や災害のニュース見たら自殺しちゃうな
2024/01/21(日) 13:09:18.40ID:JekznpvH0
心配で心配で夜しか眠れないし、飯も三杯しかおかわりできなくなったよ
2024/01/21(日) 14:16:03.26ID:crj2FL8H0
困るかどうかはウインドウの切替え回数でしょ
A. 何回も行き来しないといけない → 困る
B. 1回見ればOK → 困らない
C. 1回も見なくてOK → 困らない
で、Aの場合はPowerToys等のツールで最前面に固定表示できれば困らない
A. 何回も行き来しないといけない → 困る
B. 1回見ればOK → 困らない
C. 1回も見なくてOK → 困らない
で、Aの場合はPowerToys等のツールで最前面に固定表示できれば困らない
2024/01/21(日) 14:21:09.02ID:7DJqWtUs0
固定表示できる場所があるなら、見たいウインドウをそこに置けばいいだけなのでは
枠の分だけ無駄になるのがそんなに嫌?
枠の分だけ無駄になるのがそんなに嫌?
2024/01/21(日) 14:28:02.95ID:6OP2QHr/0
>>935
些細かどうかはそれぞれだって分からないのかな
新聞や本の一部分ずつを並べるには全体は不要だし、
そういう調査をする人にとってはメインタスクであり些細なことではない
だから選択肢が用意されてるわけで、何をどうするかはユーザーが判断
自分が使わないから不要ってのはただの傲慢なレイシストだよ
些細かどうかはそれぞれだって分からないのかな
新聞や本の一部分ずつを並べるには全体は不要だし、
そういう調査をする人にとってはメインタスクであり些細なことではない
だから選択肢が用意されてるわけで、何をどうするかはユーザーが判断
自分が使わないから不要ってのはただの傲慢なレイシストだよ
2024/01/21(日) 15:03:35.21ID:crj2FL8H0
>>940
嫌
嫌
2024/01/21(日) 15:11:32.10ID:45CPdpEh0
こういう流れはだいたい自演
2024/01/21(日) 16:31:41.68ID:XfaL0V400
自分がそうするからって誰でもそうだとは思うな
2024/01/21(日) 17:49:40.27ID:nkzHGIaI0
せせこましい議論は止めて今すぐ2万用意しろ
マルチモニタは捗るぞ
マルチモニタは捗るぞ
2024/01/21(日) 18:23:58.99ID:7DJqWtUs0
もっとディスプレイが縦に伸びて欲しいんだけどな
これ以上大きいのは置けないというくらいでかくしても、
縦1440しか無くて普通に足りない
これ以上大きいのは置けないというくらいでかくしても、
縦1440しか無くて普通に足りない
2024/01/21(日) 18:53:55.02ID:3NJckQmg0
ノーパソの小さいモニタで全てが完結するようにしてる
自分を適応させるのに手間がかかるが、いったんできればポータブルに仕事ができる
自分を適応させるのに手間がかかるが、いったんできればポータブルに仕事ができる
2024/01/21(日) 18:59:20.65ID:crj2FL8H0
マウスはどうしてる?
2024/01/21(日) 19:00:09.85ID:7DJqWtUs0
ウィンドウは切り替える必要はあっても同時に見えてる必要はないことが多い
切り替えの手間さえなければ普通に同時に使える
普段メインに使うツールいくつかに専用のタスクスイッチキーをアサインして、
切り替えて使うようにすると、そのうち無意識で行き来できるようになってくる
切り替えの手間さえなければ普通に同時に使える
普段メインに使うツールいくつかに専用のタスクスイッチキーをアサインして、
切り替えて使うようにすると、そのうち無意識で行き来できるようになってくる
2024/01/21(日) 19:02:48.01ID:pax+YmTQ0
できるだけ大きいサイズと解像度でマルチモニタにしたらいいんよ
ウィンドウ並べ放題になるよ
ウィンドウ並べ放題になるよ
2024/01/21(日) 19:14:24.46ID:7DJqWtUs0
多くのウィンドウを同時に見る必要がある作業だったらそれはもうマルチモニタ一択
効率が上がるとかではなく、そうしないと仕事にならない
実際には、ウィンドウなんて2-3個出てれば十分なので、
マルチモニターが活かせる人は少ない
効率が上がるとかではなく、そうしないと仕事にならない
実際には、ウィンドウなんて2-3個出てれば十分なので、
マルチモニターが活かせる人は少ない
2024/01/21(日) 19:30:52.63ID:Bmy11SrJ0
>>946
24インチFHD2台を±90度ピボットさせて、2160x1920
24インチFHD2台を±90度ピボットさせて、2160x1920
2024/01/21(日) 19:46:10.39ID:7DJqWtUs0
そんな感じで、正方形のディスプレイが理想なんだよな
縦に短いと折角フットプリントを都合しても、全然活かせない
ディスプレイの中の各ウインドウも正方形が理想
うちのブラウザとかエディタとかファイラーとかexcelとかはみんな正方形
縦に短いと折角フットプリントを都合しても、全然活かせない
ディスプレイの中の各ウインドウも正方形が理想
うちのブラウザとかエディタとかファイラーとかexcelとかはみんな正方形
2024/01/21(日) 20:34:48.40ID:LMayoe6B0
縦に長いと首が疲れないか?
2024/01/21(日) 20:42:12.32ID:Bmy11SrJ0
縦1920無いと、スマホ用ページしか作ってない糞サイトが見辛い
2024/01/21(日) 20:49:33.68ID:7DJqWtUs0
VDT作業的には、見上げる姿勢は良くないんだよな
まっすぐ前を見てディスプレイの上端が見える配置がいい
縦の長さは下へ延ばす
つってもキーボードより下は不自然なので、高さ60cmくらいに限界がある
縦横60cmの33.4インチディスプレイ
まっすぐ前を見てディスプレイの上端が見える配置がいい
縦の長さは下へ延ばす
つってもキーボードより下は不自然なので、高さ60cmくらいに限界がある
縦横60cmの33.4インチディスプレイ
2024/01/21(日) 23:50:41.88ID:NKXVHeIo0
AHK v2です。
#HotIf WinActive()の動作が想像と違ったので助けて欲しいです。
Deleteキー押下時、以下のようにしたいです。
・GroupAに属するアプリ操作時は、MyFunc()を実行。
・GroupBに属するアプリ操作時は、Enterキーを送信。
(1)の例では、GroupA操作時もGroupB操作時も、MyFunc()が実行されてしまいました。
【(1)】
#HotIf WinActive("ahk_group" GroupA)
{
Delete::MyFunc()
}
#HotIf
#HotIf WinActive("ahk_group" GroupB)
{
Delete::Send("{Enter}")
}
#HotIf
#HotIf WinActive()の動作が想像と違ったので助けて欲しいです。
Deleteキー押下時、以下のようにしたいです。
・GroupAに属するアプリ操作時は、MyFunc()を実行。
・GroupBに属するアプリ操作時は、Enterキーを送信。
(1)の例では、GroupA操作時もGroupB操作時も、MyFunc()が実行されてしまいました。
【(1)】
#HotIf WinActive("ahk_group" GroupA)
{
Delete::MyFunc()
}
#HotIf
#HotIf WinActive("ahk_group" GroupB)
{
Delete::Send("{Enter}")
}
#HotIf
2024/01/21(日) 23:50:52.97ID:NKXVHeIo0
(2)の例では、GroupA操作時もGroupB操作時も、Delete::Send("{Enter}")が実行されてしまいました。
【(2)】
#HotIf WinActive("ahk_group" GroupB)
{
Delete::Send("{Enter}")
}
#HotIf
#HotIf WinActive("ahk_group" GroupA)
{
Delete::MyFunc()
}
#HotIf
(3)の例では、GroupA操作時もGroupB操作時も、MyFunc()が実行されてしまいました。
【(3)】
Delete::
{
if WinActive("ahk_group" GroupA)
{
MyFunc()
}
else if WinActive("ahk_group" GroupB)
{
Send("{Enter}")
}
}
【(2)】
#HotIf WinActive("ahk_group" GroupB)
{
Delete::Send("{Enter}")
}
#HotIf
#HotIf WinActive("ahk_group" GroupA)
{
Delete::MyFunc()
}
#HotIf
(3)の例では、GroupA操作時もGroupB操作時も、MyFunc()が実行されてしまいました。
【(3)】
Delete::
{
if WinActive("ahk_group" GroupA)
{
MyFunc()
}
else if WinActive("ahk_group" GroupB)
{
Send("{Enter}")
}
}
2024/01/22(月) 00:12:55.26ID:wwZIOroE0
ahk_group って使わないけど、そういう使い方できるの?
2024/01/22(月) 00:28:48.39ID:tIDZAczD0
v2使ってないから検証できないけど、v2のリファレンスで「#HotIf」の項目見てみたら
#HotIf WinActive("ahk_group MyGroup")
↑こうなってるから後ろの「"」の場所違うような・・・
#HotIf WinActive("ahk_group MyGroup")
↑こうなってるから後ろの「"」の場所違うような・・・
2024/01/22(月) 00:34:13.21ID:tIDZAczD0
>>960
あ、すまん
GroupAが変数ならv1だと↓すればいいんだけどもv2も同じならこれでいけるはず(ahk_groupの後ろの半角空白入れるのを忘れずに)
#HotIf WinActive("ahk_group " . MyGroup)
あ、すまん
GroupAが変数ならv1だと↓すればいいんだけどもv2も同じならこれでいけるはず(ahk_groupの後ろの半角空白入れるのを忘れずに)
#HotIf WinActive("ahk_group " . MyGroup)
2024/01/22(月) 00:36:25.55ID:bKQFDm5J0
それは変数の連結。
MyGroupっていう文字列を指定したいなら "" 内で良いけど別途MyGroup変数に文字列を入れてると思われる。
自分もahk_group使ったこと無いのでよくわからんが、
#HotIfは中括弧のスコープ無効だよね。ホットキーとして正しく認識してないんじゃないか?
あとはMyFunc()の定義をどこにどういうふうに書いてるのかね?
MyGroupっていう文字列を指定したいなら "" 内で良いけど別途MyGroup変数に文字列を入れてると思われる。
自分もahk_group使ったこと無いのでよくわからんが、
#HotIfは中括弧のスコープ無効だよね。ホットキーとして正しく認識してないんじゃないか?
あとはMyFunc()の定義をどこにどういうふうに書いてるのかね?
2024/01/22(月) 01:06:39.70ID:3aIX8ca00
皆さん、ありがとうございます。
>>960
>>961さんのご指摘通り、"ahk_group"の部分が文字列、 GroupAやGroupBが変数で中身にアプリ名を表す文字列を入れています。
>>961
ドット連結の書き方も試してみましたが、結果は同じでした。WinActive部分がWinExistのような挙動をしていて、必ず一番上の条件で真になってその中身が実行されるような挙動です。
>>962
#HotIf WinActive("ahk_group" GroupX)の後の{}を外してみましたが、結果は同じでした。同じくWinActive部分がWinExistのような挙動をします。エディタの自動インデント対策のためデバッグ途中で付けてしまいましたが、確かに本来の書き方では{}は不要かもしれません。
MyFuncは、上の方でClassを定義していて、そこの関数を呼び出しています。複雑な処理のためここには書ききれませんが、GroupAもGroupBもMyFunc()の呼び出し自体には問題なく成功します。
>>960
>>961さんのご指摘通り、"ahk_group"の部分が文字列、 GroupAやGroupBが変数で中身にアプリ名を表す文字列を入れています。
>>961
ドット連結の書き方も試してみましたが、結果は同じでした。WinActive部分がWinExistのような挙動をしていて、必ず一番上の条件で真になってその中身が実行されるような挙動です。
>>962
#HotIf WinActive("ahk_group" GroupX)の後の{}を外してみましたが、結果は同じでした。同じくWinActive部分がWinExistのような挙動をします。エディタの自動インデント対策のためデバッグ途中で付けてしまいましたが、確かに本来の書き方では{}は不要かもしれません。
MyFuncは、上の方でClassを定義していて、そこの関数を呼び出しています。複雑な処理のためここには書ききれませんが、GroupAもGroupBもMyFunc()の呼び出し自体には問題なく成功します。
2024/01/22(月) 01:12:50.05ID:3aIX8ca00
ごめんなさい。
WinActive部分が本当にWinExistのような挙動をしているのか確実には分からないのですが、必ず一番上の条件で真になってその中身しか実行されないようです。
WinActive部分が本当にWinExistのような挙動をしているのか確実には分からないのですが、必ず一番上の条件で真になってその中身しか実行されないようです。
2024/01/22(月) 01:16:25.22ID:bKQFDm5J0
GroupAとGroupB、中身が指すものが重複してたりして
2024/01/22(月) 01:21:11.24ID:wrpkRwS00
https://ahkscript.github.io/ja/docs/v2/lib/GroupAdd.htm
グループ作成はこれ使ってる?
グループ作成はこれ使ってる?
2024/01/22(月) 01:26:22.88ID:tIDZAczD0
今さらだが>>961分かりにくかったので訂正
間違い → #HotIf WinActive("ahk_group " . MyGroup)
こういうこと言いたかった↓
GroupAに"MyGroup"と言う文字列が入ってるとする
#HotIf WinActive("ahk_group " . GroupA)
間違い → #HotIf WinActive("ahk_group " . MyGroup)
こういうこと言いたかった↓
GroupAに"MyGroup"と言う文字列が入ってるとする
#HotIf WinActive("ahk_group " . GroupA)
2024/01/22(月) 01:39:34.88ID:tIDZAczD0
>>963
しつこくてスマンが
>#HotIf WinActive("ahk_group" GroupX)
↓これでもダメ?
何回も言うようだけど、ahk_groupの後ろ( " の直前)の半角空白入れるのを忘れずに
#HotIf WinActive("ahk_group " . GroupX)
もう寝ます
しつこくてスマンが
>#HotIf WinActive("ahk_group" GroupX)
↓これでもダメ?
何回も言うようだけど、ahk_groupの後ろ( " の直前)の半角空白入れるのを忘れずに
#HotIf WinActive("ahk_group " . GroupX)
もう寝ます
2024/01/22(月) 01:54:34.18ID:wrpkRwS00
>>968
https://ahkscript.github.io/ja/docs/v2/misc/WinTitle.htm#ahk_group
のahk_ Criteriaにあるけど、空白は0個以上なんで無くてもいいらしいよ
https://ahkscript.github.io/ja/docs/v2/misc/WinTitle.htm#ahk_group
のahk_ Criteriaにあるけど、空白は0個以上なんで無くてもいいらしいよ
2024/01/22(月) 02:11:54.55ID:3aIX8ca00
>>965
ありがとうございます。
どうやらこれが原因でした。
(誤)
GroupA := "_"
GroupAdd(GroupA, "app1.exe")
GroupB := "_"
GroupAdd(GroupB, "app2.exe")
(改)
GroupA := "GroupA"
GroupAdd(GroupA, "app1.exe")
GroupB := "GroupB"
GroupAdd(GroupB, "app2.exe")
くだらない理由になってしまい申し訳ないのですが、変数が未初期化の状態だと表示されるエディタの警告が煩わしかったため、どちらのGroupも適当に"_"で初期化して中身が同じになってしまったことが原因のようでした。
ありがとうございます。
どうやらこれが原因でした。
(誤)
GroupA := "_"
GroupAdd(GroupA, "app1.exe")
GroupB := "_"
GroupAdd(GroupB, "app2.exe")
(改)
GroupA := "GroupA"
GroupAdd(GroupA, "app1.exe")
GroupB := "GroupB"
GroupAdd(GroupB, "app2.exe")
くだらない理由になってしまい申し訳ないのですが、変数が未初期化の状態だと表示されるエディタの警告が煩わしかったため、どちらのGroupも適当に"_"で初期化して中身が同じになってしまったことが原因のようでした。
2024/01/22(月) 02:34:34.58ID:3aIX8ca00
もう一つ期待した結果が得られないパターンが出てきました。
#HotIf WinActive()の記述順序によって結果が変わってしまいます。
【(4)】
GroupA := "GroupA"
GroupAdd(GroupA, "app1.exe")
#HotIf WinActive("ahk_group" . GroupA)
Delete::Send("a")
#HotIf
#HotIf WinActive("ahk_exe app2.exe")
Delete::Send("b")
#HotIf
上記の記述順序では下記の結果が得られますが、期待した結果ではありませんでした。
"ahk_exe app2.exe"はどのGroupにも属していません。
・GroupA
Delete -> Send("a")
・"ahk_exe app2.exe"
Delete -> Send("a")(※Send("b")を実行して欲しい!)
#HotIf WinActive()の記述順序によって結果が変わってしまいます。
【(4)】
GroupA := "GroupA"
GroupAdd(GroupA, "app1.exe")
#HotIf WinActive("ahk_group" . GroupA)
Delete::Send("a")
#HotIf
#HotIf WinActive("ahk_exe app2.exe")
Delete::Send("b")
#HotIf
上記の記述順序では下記の結果が得られますが、期待した結果ではありませんでした。
"ahk_exe app2.exe"はどのGroupにも属していません。
・GroupA
Delete -> Send("a")
・"ahk_exe app2.exe"
Delete -> Send("a")(※Send("b")を実行して欲しい!)
2024/01/22(月) 02:34:47.17ID:3aIX8ca00
【(5)】
GroupA := "GroupA"
GroupAdd(GroupA, "app1.exe")
#HotIf WinActive("ahk_exe app2.exe")
Delete::Send("b")
#HotIf
#HotIf WinActive("ahk_group" . GroupA)
Delete::Send("a")
#HotIf
上記の記述順序では下記の結果が得られ、期待した結果を得られました。
・GroupA
Delete -> Send("a")
・"ahk_exe app2.exe"
Delete -> Send("b")
GroupA := "GroupA"
GroupAdd(GroupA, "app1.exe")
#HotIf WinActive("ahk_exe app2.exe")
Delete::Send("b")
#HotIf
#HotIf WinActive("ahk_group" . GroupA)
Delete::Send("a")
#HotIf
上記の記述順序では下記の結果が得られ、期待した結果を得られました。
・GroupA
Delete -> Send("a")
・"ahk_exe app2.exe"
Delete -> Send("b")
2024/01/22(月) 02:55:02.22ID:bKQFDm5J0
GroupAdd(GroupA, "app1.exe")
↓
GroupAdd(GroupA, "ahk_exe app1.exe")
だったり?
↓
GroupAdd(GroupA, "ahk_exe app1.exe")
だったり?
2024/01/22(月) 08:49:08.17ID:85FxdUTx0
>>973
回答ありがとうございます。
GroupAdd(GroupA, "app1.exe")
としましたが、私の実際のコードではアプリの実行ファイル名ではなくアプリの実行ファイルのウィンドウタイトルを指定していました。
ウィンドウタイトルの場合は"ahk_exe"の記載は不要と認識していて、下記とするのがおそらく適切でした。
(誤)
GroupAdd(GroupA, "app1.exe")
(正)
GroupAdd(GroupA, "app1.exeのウィンドウタイトル")
つまり下記の①はウィンドウタイトルでの判定、②は実行ファイル名での判定になります。
①#HotIf WinActive("ahk_group" . GroupA)
②#HotIf WinActive("ahk_exe app2.exe")
②の"ahk_exe app2.exe"の部分ですが、こちらはウィンドウタイトルが可変する仕様のため、アプリの実行ファイル名を指定しています。
可変した際に多くのケースでGroupAのウィンドウタイトルが包含されたものになることに気付きました。
#HotIf WinActive()が何をもって真とするのか理解が不十分なのですが、もしウィンドウタイトルの部分一致でも真とする仕様なら②の中身の実行を想定していても①が実行されてしまうケースに納得できます。
今日時間がある時に#HotIf WinActiveの仕様について詳しく調べてみようと思います。ありがとうございます。
回答ありがとうございます。
GroupAdd(GroupA, "app1.exe")
としましたが、私の実際のコードではアプリの実行ファイル名ではなくアプリの実行ファイルのウィンドウタイトルを指定していました。
ウィンドウタイトルの場合は"ahk_exe"の記載は不要と認識していて、下記とするのがおそらく適切でした。
(誤)
GroupAdd(GroupA, "app1.exe")
(正)
GroupAdd(GroupA, "app1.exeのウィンドウタイトル")
つまり下記の①はウィンドウタイトルでの判定、②は実行ファイル名での判定になります。
①#HotIf WinActive("ahk_group" . GroupA)
②#HotIf WinActive("ahk_exe app2.exe")
②の"ahk_exe app2.exe"の部分ですが、こちらはウィンドウタイトルが可変する仕様のため、アプリの実行ファイル名を指定しています。
可変した際に多くのケースでGroupAのウィンドウタイトルが包含されたものになることに気付きました。
#HotIf WinActive()が何をもって真とするのか理解が不十分なのですが、もしウィンドウタイトルの部分一致でも真とする仕様なら②の中身の実行を想定していても①が実行されてしまうケースに納得できます。
今日時間がある時に#HotIf WinActiveの仕様について詳しく調べてみようと思います。ありがとうございます。
2024/01/22(月) 11:19:23.39ID:ZHKh8NqU0
2024/01/22(月) 11:25:37.97ID:wwZIOroE0
#HotIfの#でない版が欲しいんだけどな
なんでここはプリプロセッサのままなんだろう
なんでここはプリプロセッサのままなんだろう
2024/01/22(月) 11:43:55.16ID:d29CGPd00
>私の実際のコードではアプリの実行ファイル名ではなくアプリの実行ファイルのウィンドウタイトルを指定していました。
クズが
クズが
2024/01/22(月) 11:54:55.51ID:bKQFDm5J0
長いとコード全部貼れないので関係無いと思ってるとろを簡略化して貼るのは仕方のないことだと思うが、
関係無いと思ってた部分に原因があると第三者からは解らないんで簡略化したそのものを書き換えず実際に実行
してみたほうがいいね。切り分け方法の1つだと思う。
関係無いと思ってた部分に原因があると第三者からは解らないんで簡略化したそのものを書き換えず実際に実行
してみたほうがいいね。切り分け方法の1つだと思う。
2024/01/22(月) 11:58:32.86ID:wwZIOroE0
貼る時に簡略化するんじゃなくて、自分で原因究明する時にどんどん削っていく
ここまで要素化してもまだおかしいので見て見て見て、になる
ここまで要素化してもまだおかしいので見て見て見て、になる
2024/01/22(月) 12:59:50.02ID:wrpkRwS00
挙動がおかしいと思う時の質問・報告は
誰でも再現できる手順を添えるのが面倒でも一番いいってテンプレに足す?
誰でも再現できる手順を添えるのが面倒でも一番いいってテンプレに足す?
2024/01/22(月) 14:48:53.39ID:RJyJ9Z7a0
ハッタショは無理して回答側に回らなくていいぞ
迷惑だから
迷惑だから
2024/01/23(火) 11:46:35.67ID:pty1rkzy0
うめ
2024/01/23(火) 11:46:50.16ID:pty1rkzy0
うめ
2024/01/23(火) 11:47:06.52ID:pty1rkzy0
うめ
2024/01/23(火) 11:47:22.91ID:TsDB/+Jr0
うめ
2024/01/23(火) 11:47:35.35ID:TsDB/+Jr0
うめ
2024/01/23(火) 11:47:47.92ID:TsDB/+Jr0
うめ
2024/01/23(火) 11:48:01.02ID:wbNZg8y80
うめ
2024/01/23(火) 11:48:13.27ID:wbNZg8y80
うめ
2024/01/23(火) 11:48:26.13ID:wbNZg8y80
うめ
2024/01/23(火) 11:48:40.01ID:Rc83/6Vf0
うめ
2024/01/23(火) 11:48:52.58ID:Rc83/6Vf0
うめ
2024/01/23(火) 11:49:05.55ID:Rc83/6Vf0
うめ
2024/01/23(火) 11:49:18.63ID:KP2haNFj0
うめ
2024/01/23(火) 11:49:30.85ID:KP2haNFj0
うめ
2024/01/23(火) 11:49:43.24ID:KP2haNFj0
うめ
2024/01/23(火) 11:50:46.07ID:2mOaV5qN0
うめ
2024/01/23(火) 11:50:58.42ID:2mOaV5qN0
うめ
2024/01/23(火) 11:51:11.48ID:2mOaV5qN0
うめ
1000名無しさん@お腹いっぱい。
2024/01/23(火) 11:51:47.96ID:Sg6quwFH0 ラスト
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 713日 17時間 13分 29秒
新しいスレッドを立ててください。
life time: 713日 17時間 13分 29秒
10021002
Over 1000Thread 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【米国】「就任初日に戦争止める」と訴えていたトランプ氏「面白半分で言っていただけだ [あしだまな★]
- 「米価このまま維持されてしかるべきだ」佐賀県知事、稲作農家の経営踏まえ言及 ★2 [蚤の市★]
- 【教育】なぜ「体育嫌い」は増える? 背景にホモソーシャル、性的少数者無視 [ぐれ★]
- 日本、アジア最大の統合型リゾート(IR)施設がついに着工、経済効果1.1兆円/年、雇用創出9.3万人、1060億円/年 大阪に収入 [お断り★]
- 【野球】セ・リーグ T 6-2 G [4/26] 阪神6連勝!8回大山勝ち越し打、坂本2塁打など4得点 巨人連敗・田中瑛人リリーフ失敗 [鉄チーズ烏★]
- 【教育】なぜ「体育嫌い」は増える? 背景にホモソーシャル、性的少数者無視 ★2 [ぐれ★]
- 【悲報】娘の運転🔰をパパが助手席から撮影👉なぜか炎上してしまう [394133584]
- 万博コスプレで炎上した女がガチギレ「二次創作がグレーなら白黒はっきりさせるべき」 [834922174]
- 統合失調症なんだけど国に殺処分して貰いたい
- 【無能】トップ当選の維新議員が離党「不信感を覚えた」 [245325974]
- 【悲報】東京終了まであと20分wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww [904880432]
- ▶土曜お昼の宝鐘マリンすこすこスレ ★2