■公式サイト
https://www.autohotkey.com/
■解説等
・v1.1
AutoHotkey Wiki
http://ahkwiki.net/Top
・v2
クイックリファレンス|AutoHotkey v2
https://ahkscript.github.io/ja/docs/v2/
v1.1からの変更|AutoHotkey v2
https://ahkscript.github.io/ja/docs/v2/v2-changes.htm
■前スレ
AutoHotkey スレッド part33
https://egg.5ch.net/test/read.cgi/software/1705995058/
AutoHotkey スレッド part34
■ このスレッドは過去ログ倉庫に格納されています
2024/06/30(日) 02:12:16.24ID:JUH7aQw10
488名無しさん@お腹いっぱい。
2024/10/13(日) 16:38:44.70ID:PDT1mwa30 MPRESSがもうダウンロードできなくなってるけど誰かくれんかね?
489名無しさん@お腹いっぱい。
2024/10/14(月) 03:02:35.98ID:KcUraxAC0 USキーボードのCAPSLOCKキーをIME切り替えにしたいのですが、
CAPSLOCKをF14にした上で
;;;IME切り替え
F14::
send,!{vkC0}
return
で今まで切り替えていたのですが、IME切り替えがよくバグってALTキーが押しっぱなしにされてしまいます。
!{vkC0}を使わずにIME切り替えする方法ないでしょうか?
CAPSLOCKをF14にした上で
;;;IME切り替え
F14::
send,!{vkC0}
return
で今まで切り替えていたのですが、IME切り替えがよくバグってALTキーが押しっぱなしにされてしまいます。
!{vkC0}を使わずにIME切り替えする方法ないでしょうか?
2024/10/14(月) 09:14:44.58ID:nKp0lMeM0
>>489
ちょっと記憶が定かではないけれど、その手の AHK での修飾キー押しっぱ問題は
AHK側だけでは確実な対処は無理ちゃうかったかな?
(たいてい CapsLock/LCtrl 入れ替えでハマるw)
他のツール類(Change Keyとか)で、通常のキーボードにはないキー(F13~F24)を
CapsLock に割り当てておいて、AHK 側ではそのキーに対する処理にするのが常道とか。
↓あたりでググってみれば、色々参考になるはず。
ahk key押しっぱなし - Google 検索
https://www.google.com/search?q=ahk+key%E6%8A%BC%E3%81%97%E3%81%A3%E3%81%B1%E3%81%AA%E3%81%97
ちょっと記憶が定かではないけれど、その手の AHK での修飾キー押しっぱ問題は
AHK側だけでは確実な対処は無理ちゃうかったかな?
(たいてい CapsLock/LCtrl 入れ替えでハマるw)
他のツール類(Change Keyとか)で、通常のキーボードにはないキー(F13~F24)を
CapsLock に割り当てておいて、AHK 側ではそのキーに対する処理にするのが常道とか。
↓あたりでググってみれば、色々参考になるはず。
ahk key押しっぱなし - Google 検索
https://www.google.com/search?q=ahk+key%E6%8A%BC%E3%81%97%E3%81%A3%E3%81%B1%E3%81%AA%E3%81%97
2024/10/14(月) 10:00:54.67ID:/NO+1EDo0
ime.ahk
2024/10/14(月) 18:55:17.01ID:EkA47qEQ0
494名無しさん@お腹いっぱい。
2024/10/14(月) 19:00:08.71ID:gcJe/yFu0 >>493
mpressリンクありがとん🥺
mpressリンクありがとん🥺
2024/10/15(火) 16:22:01.12ID:ORDFOdoA0
パッケージマネージャー出来てた
https://github.com/Descolada/Aris
https://github.com/Descolada/Aris
2024/10/15(火) 16:37:29.80ID:RhyIvNKJ0
2024/10/15(火) 17:10:13.39ID:1PWT48kg0
それはレスアンカーといって、そのレスがどの書き込みに対する返信なのかを明示するための書式です
2024/10/15(火) 18:45:30.71ID:G8EFpNqS0
質問をみるといつも思うのだが他者の労働力を搾取しようとするなとだけ
自分で調べて発表せよ
それが社会貢献
自分で調べて発表せよ
それが社会貢献
2024/10/15(火) 18:53:18.50ID:0VL5Czli0
>>496
なんの変哲もないgithubのページだから開いて翻訳して読んどき
なんの変哲もないgithubのページだから開いて翻訳して読んどき
2024/10/18(金) 22:59:14.66ID:ROfzVtWS0
質問させてください。
Enterを押した後にSpaceを押す機能を右ボタンに割り当てたいのですが、どうすればよろしいでしょうか?
Right::
Send, {Enter}
Send, {Space}
return
Right::
Send, {sc01C}
Send, {sc039}
return
どちらもメモ帳では動作するのですが、アプリケーション上では反応しません。
Enterを押した後にSpaceを押す機能を右ボタンに割り当てたいのですが、どうすればよろしいでしょうか?
Right::
Send, {Enter}
Send, {Space}
return
Right::
Send, {sc01C}
Send, {sc039}
return
どちらもメモ帳では動作するのですが、アプリケーション上では反応しません。
2024/10/19(土) 09:43:45.73ID:gTKdgegr0
メモ帳もアプリケーションなんですがね
それはともかく入力の受付はアプリごとに制御されているので
例えばinputしか受け付けないとか、高速入力できないように制限してあるとか
様々なケースがあるので試行錯誤するしかない
うまく動作しない謎アプリを晒さない限りそれ以上のことは何とも
それはともかく入力の受付はアプリごとに制御されているので
例えばinputしか受け付けないとか、高速入力できないように制限してあるとか
様々なケースがあるので試行錯誤するしかない
うまく動作しない謎アプリを晒さない限りそれ以上のことは何とも
2024/10/19(土) 14:41:27.03ID:lTux8SgV0
初心者だよね?
v2から学ぶべき
v1は忘れていい
v2から学ぶべき
v1は忘れていい
503名無しさん@お腹いっぱい。
2024/10/19(土) 19:23:02.29ID:zWBtD9Ow0 中身がAHKらしいクリップボード拡張ソフトを使っています。
定型文を入力するために独自のメニューを呼びし、
アクセスキーを使って入力しています。
例 「 挨拶文 (&A) | おはようございます | KeyStroke 」
呼び出したメニューには「挨拶文(A)」と表示され、
「A」を押すと「おはようございます」が出力されます。
動作自体は思い描いた通りなのですが、
アクセスキーである「(A)」もメニューに表示されるのを邪魔に感じています。
この「(&A)」の部分を「アクセスキーとして機能するがメニューでは非表示にする」
という方法があれば御教示いただけないでしょうか。
御存じの方がいらっしゃればお願いします。
定型文を入力するために独自のメニューを呼びし、
アクセスキーを使って入力しています。
例 「 挨拶文 (&A) | おはようございます | KeyStroke 」
呼び出したメニューには「挨拶文(A)」と表示され、
「A」を押すと「おはようございます」が出力されます。
動作自体は思い描いた通りなのですが、
アクセスキーである「(A)」もメニューに表示されるのを邪魔に感じています。
この「(&A)」の部分を「アクセスキーとして機能するがメニューでは非表示にする」
という方法があれば御教示いただけないでしょうか。
御存じの方がいらっしゃればお願いします。
2024/10/19(土) 20:06:36.72ID:rU9ISZOb0
英語なら&AisatubunでAに下線がつくだけで困らない
2024/10/20(日) 15:30:16.04ID:6yZvlGCd0
>>503
ClipboardHistoryのメニューはWin32 APIのTrackPopupMenuを直接DllCallで呼び出して作成されていますが
AHKの標準メニューも内部的にはTrackPopupMenuExを利用して作成されており
アクセスキーの指定やアクセスキーが下線が付いた文字として項目に表示されるのはAPIの仕様となります
アクセスキーは別データとして保持されているような物ではなく、項目名から動的に割り当てられるため
項目名から該当文字(&Aなど)を消すとアクセスキーとしては機能しなくなります
したがって、「アクセスキーとして機能するがメニューでは非表示にする」と言うのは仕様上両立できません
メニューの指定項目を選択できるようなホットキーを作成するか、別途メニューっぽいGUIを自作するなどすれば可能ではありますが
ClipboardHistoryの範疇から外れプログラミングの話になる上、どちらも簡単に出来ることではないですし労力に見合うとも思えません
ClipboardHistoryのメニューはWin32 APIのTrackPopupMenuを直接DllCallで呼び出して作成されていますが
AHKの標準メニューも内部的にはTrackPopupMenuExを利用して作成されており
アクセスキーの指定やアクセスキーが下線が付いた文字として項目に表示されるのはAPIの仕様となります
アクセスキーは別データとして保持されているような物ではなく、項目名から動的に割り当てられるため
項目名から該当文字(&Aなど)を消すとアクセスキーとしては機能しなくなります
したがって、「アクセスキーとして機能するがメニューでは非表示にする」と言うのは仕様上両立できません
メニューの指定項目を選択できるようなホットキーを作成するか、別途メニューっぽいGUIを自作するなどすれば可能ではありますが
ClipboardHistoryの範疇から外れプログラミングの話になる上、どちらも簡単に出来ることではないですし労力に見合うとも思えません
506名無しさん@お腹いっぱい。
2024/10/20(日) 18:38:03.74ID:pWjFMDrG0 >>505
詳しくありがとうございます。
目的の内容は実現できないことが分かったので諦めます。
奇妙な要望だと思われたかもしれませんが、
実は定型文のメニューを整形して(余分な空きを作って)、
格子配列の自作キーボードの物理配置と
定型文のメニューを視覚的に統一する方法を試しているのです。
これだと「アクセスキーは必須だが表示されると邪魔」になります。
動作的には全く問題ないので、
アクセスキーを小文字にするなどして気にしないようにします。
しかしソフト名の指摘もズバリでしたね。
クリップボード拡張ソフトは(PC歴約25年の間に)殆ど試しましたが、
ClipboardHistoryより優れたものは見当たりません。
作者さんに感謝しながら末永く愛用して行きます。
詳しくありがとうございます。
目的の内容は実現できないことが分かったので諦めます。
奇妙な要望だと思われたかもしれませんが、
実は定型文のメニューを整形して(余分な空きを作って)、
格子配列の自作キーボードの物理配置と
定型文のメニューを視覚的に統一する方法を試しているのです。
これだと「アクセスキーは必須だが表示されると邪魔」になります。
動作的には全く問題ないので、
アクセスキーを小文字にするなどして気にしないようにします。
しかしソフト名の指摘もズバリでしたね。
クリップボード拡張ソフトは(PC歴約25年の間に)殆ど試しましたが、
ClipboardHistoryより優れたものは見当たりません。
作者さんに感謝しながら末永く愛用して行きます。
2024/10/20(日) 20:12:03.65ID:NnL5zIl20
autohotkeyの方が作者は存命だっけ? どっちだっけか
2024/10/20(日) 21:39:58.59ID:OVpuB1UH0
「ズバリでしたね」って回答者に対して逆に失礼だわ
たまたま知識と勘が鋭いから当たっただけで
本来は質問者がはっきりと、これこれこういうアプリでと名称を記載すべきなんだよ
クイズやってるんじゃないんだからさ
たまたま知識と勘が鋭いから当たっただけで
本来は質問者がはっきりと、これこれこういうアプリでと名称を記載すべきなんだよ
クイズやってるんじゃないんだからさ
2024/10/21(月) 16:14:22.17ID:itWjFkQN0
> www.autohotkey.com/foundation/
> オートホットキー財団
> 2014 年 4 月 24日に米国インディアナ州で設立
> 財団のマネージャーは、Charlie Simmons (tank)、Steve Gray (Lexikos)、Joachim de Fourestier (joedf) で、Chris Mallett (ソフトウェアAutoHotkeyの作成者) が指導しています
> github.com/AutoHotkey/AutoHotkey/commits/
> Jun 23, 2024 Lexikos
最新のコミット6月
> github.com/AutoHotkey/AutoHotkey/graphs/contributors
コミット数1位 Lexikos 3,906 commits
2位 fincs 100 commits
3位 JackieKu 85 commits
> オートホットキー財団
> 2014 年 4 月 24日に米国インディアナ州で設立
> 財団のマネージャーは、Charlie Simmons (tank)、Steve Gray (Lexikos)、Joachim de Fourestier (joedf) で、Chris Mallett (ソフトウェアAutoHotkeyの作成者) が指導しています
> github.com/AutoHotkey/AutoHotkey/commits/
> Jun 23, 2024 Lexikos
最新のコミット6月
> github.com/AutoHotkey/AutoHotkey/graphs/contributors
コミット数1位 Lexikos 3,906 commits
2位 fincs 100 commits
3位 JackieKu 85 commits
510名無しさん@お腹いっぱい。
2024/10/21(月) 18:04:15.39ID:ahR5PPfN0 >>508
下手にソフト名を書き込むと「宣伝」とか言われて
作者様に迷惑を掛けるかもしれないと思って自重しました。
二回目の書き込みは回答者様が確信を持って書かれていたので、
もうソフト名を隠す意味も無いと思いました。
クイズのようにスレッドの皆様を軽んじる意図は全くありませんので、
不快に感じたなら配慮が足りず申し訳ない。
下手にソフト名を書き込むと「宣伝」とか言われて
作者様に迷惑を掛けるかもしれないと思って自重しました。
二回目の書き込みは回答者様が確信を持って書かれていたので、
もうソフト名を隠す意味も無いと思いました。
クイズのようにスレッドの皆様を軽んじる意図は全くありませんので、
不快に感じたなら配慮が足りず申し訳ない。
2024/10/21(月) 18:29:08.01ID:aSze+Blp0
死んだらいやだな
2024/10/22(火) 11:24:57.05ID:ZS6EXbji0
2024/10/22(火) 11:54:57.12ID:gM/80aqV0
>>35
順番入れ替えてもおなじですか?
順番入れ替えてもおなじですか?
2024/10/24(木) 02:07:08.83ID:fvQei37C0
Clipboard Historyの話題が出たので、Runコマンドの外部プログラムとの連携について備忘録
pythonで文字列操作する場合
|| Run | python.exe ".pyのpath" | I O
pythonは、argparseを使わず、sys.stdin.readline().strip()で標準入力読み込みになる。
pyに入力が渡らずけっこうハマった。
Clipboard HistoryとAHKとの連携は、基本AHK側で処理してやりとりはファイル入出力した方が確実だった。
pythonで文字列操作する場合
|| Run | python.exe ".pyのpath" | I O
pythonは、argparseを使わず、sys.stdin.readline().strip()で標準入力読み込みになる。
pyに入力が渡らずけっこうハマった。
Clipboard HistoryとAHKとの連携は、基本AHK側で処理してやりとりはファイル入出力した方が確実だった。
2024/10/24(木) 22:10:23.38ID:UIMUUpQt0
同じホットストリングをIME状態で分岐したいのですが、IME ONだけうまくいきます。
OFF時はどうやって書けばよいですか?
#if !IME_GET(1)
:*?:/11::""{Enter}{left 1}
#if
#if IME_GET(0)
:*?:/11::""{left 1}
#if
OFF時はどうやって書けばよいですか?
#if !IME_GET(1)
:*?:/11::""{Enter}{left 1}
#if
#if IME_GET(0)
:*?:/11::""{left 1}
#if
2024/10/24(木) 22:10:48.54ID:VLsa+vNJ0
autoclick:
if !(WinActive("ahk_id" . actWin) && (A_TimeIdlePhysical < 50 && !mouseMoved))
{
ControlSend, , 3, ahk_id %actWin%
; Send directly to Digit3 to the window.
cx := xp%currentClick%
cy := yp%currentClick%
ControlClick, x%cx% y%cy%, ahk_id %actWin%,,,, NA
currentClick := % Mod(currentClick + 1, totalClicks)
}
return
↑ これで後半5行目の ControlClick はちゃんと機能する、
ゲームのウインドウが 裏側になっても ひっそりと左クリック連射してくれる。
しかし、手前の1行目の ControlSend は機能してくれない。
ゲーム Windowが背面に行ったら、その時点で 3 キーがちゃんと送られなくなる。
どこが間違っているのかわからん!なんでや!
if !(WinActive("ahk_id" . actWin) && (A_TimeIdlePhysical < 50 && !mouseMoved))
{
ControlSend, , 3, ahk_id %actWin%
; Send directly to Digit3 to the window.
cx := xp%currentClick%
cy := yp%currentClick%
ControlClick, x%cx% y%cy%, ahk_id %actWin%,,,, NA
currentClick := % Mod(currentClick + 1, totalClicks)
}
return
↑ これで後半5行目の ControlClick はちゃんと機能する、
ゲームのウインドウが 裏側になっても ひっそりと左クリック連射してくれる。
しかし、手前の1行目の ControlSend は機能してくれない。
ゲーム Windowが背面に行ったら、その時点で 3 キーがちゃんと送られなくなる。
どこが間違っているのかわからん!なんでや!
2024/10/24(木) 22:11:40.50ID:ElSGbcVY0
alt+xで無変換が出来なくなってしまいました
;;;altとXで無変換
SetKeyDelay, 0
!x::
SendPlay,{vk1Dsc07B}
return
何か足りないのでしょうか?
よろしくお願いします。
;;;altとXで無変換
SetKeyDelay, 0
!x::
SendPlay,{vk1Dsc07B}
return
何か足りないのでしょうか?
よろしくお願いします。
2024/10/24(木) 22:13:46.74ID:ogkMQ6UV0
HID Macros と Autohotkey を連携させようとしていて、
テンキーの+と-を、CtrlとAltoに割り当てようと考えています。
If ( tkey1down ) { ; Numpad1キーが押されているなら
If tkey16down ; Numpadsubキーが押されていれば
tkey1down := HoldDownKey2(tkey1down, "ctrl")
Else If tkey17down ; Numpadaddキーが押されているなら
tkey1down := HoldDownKey2(tkey1down, "alt")
Else ; どちらも押されてなければ
tkey1down := HoldDownKey2(tkey1down, "")}
と記入したところ、
「Error: Too few parameters passed to function.」
と出て、これだと3行目に→があります。
「HID Macros と Autohotkey を連携させる」のサイトを参考にしました。
Else If が、このようには使えないのでしょうか?
すいませんが、教えてください。
テンキーの+と-を、CtrlとAltoに割り当てようと考えています。
If ( tkey1down ) { ; Numpad1キーが押されているなら
If tkey16down ; Numpadsubキーが押されていれば
tkey1down := HoldDownKey2(tkey1down, "ctrl")
Else If tkey17down ; Numpadaddキーが押されているなら
tkey1down := HoldDownKey2(tkey1down, "alt")
Else ; どちらも押されてなければ
tkey1down := HoldDownKey2(tkey1down, "")}
と記入したところ、
「Error: Too few parameters passed to function.」
と出て、これだと3行目に→があります。
「HID Macros と Autohotkey を連携させる」のサイトを参考にしました。
Else If が、このようには使えないのでしょうか?
すいませんが、教えてください。
2024/10/24(木) 23:38:25.83ID:7NTt7BQj0
2024/10/25(金) 12:54:55.55ID:YNvUvHS90
#IfWinActiveで
Chrome YouTube
Firefox YouTube
こんな風にYouTubeで別の操作をしたい場合(例え話)
複数の条件を指定する方法を教えて欲しいです
調べた感じ論理演算子などは使えないみたいなんですが
Chrome YouTube
Firefox YouTube
こんな風にYouTubeで別の操作をしたい場合(例え話)
複数の条件を指定する方法を教えて欲しいです
調べた感じ論理演算子などは使えないみたいなんですが
2024/10/25(金) 13:12:23.99ID:iV6NPiWJ0
説明不足で意味がよくわからんけど
二つのブラウザで分岐させたいの?
二つのブラウザで分岐させたいの?
2024/10/25(金) 14:18:53.43ID:fJbwAcE00
v2でIfWinActiveは削除された
#HotIfのクイックリファレンスにorが出てきたのはどう?
://ahkscript.github.io/ja/docs/v2/lib/_HotIf.htm
v1は手元にない
#HotIfのクイックリファレンスにorが出てきたのはどう?
://ahkscript.github.io/ja/docs/v2/lib/_HotIf.htm
v1は手元にない
2024/10/25(金) 14:28:15.21ID:fJbwAcE00
言ってなかったけどクイックリファレンスで検索したらたいてい解決するw
2024/10/26(土) 17:14:17.46ID:0sWrnwL20
質問です。
ホットキー指定で~をつけると、イベントを乗っ取らずそのままシステムに通しますが
その後の処理で、システムに通さないよう分岐する方法はありますか?
イメージは以下のような感じです
~RButton Up::
MouseGetPos, mx, my, hwnd, ClassNN
if ( ClassNN <> "ListView321" )
return ; そのままシステムに通してなにもしない
; 以下コンテキストメニューを表示してシステムに通さない
ホットキー指定で~をつけると、イベントを乗っ取らずそのままシステムに通しますが
その後の処理で、システムに通さないよう分岐する方法はありますか?
イメージは以下のような感じです
~RButton Up::
MouseGetPos, mx, my, hwnd, ClassNN
if ( ClassNN <> "ListView321" )
return ; そのままシステムに通してなにもしない
; 以下コンテキストメニューを表示してシステムに通さない
2024/10/26(土) 17:48:36.53ID:f/FyL4ZB0
普通に ~ を外して if と else で分岐させればいいだけでは?
条件一致で RButton Up を送信する
条件一致で RButton Up を送信する
2024/10/26(土) 21:42:35.85ID:VsCTIMnu0
範囲選択してスクリーンショットするアプリを使用しています。
左クリックのドラッグで範囲選択をします。
実現したいことは、「トリガー押下→範囲選択モードに移行(アプリ側でPrscに当てています)
→隣のモニタにカーソルを移動→範囲選択が終わり次第、トリガー押下時の座標にカーソルを戻す」
です
今回の質問は、下記スクリプト内の「条件式」のアイデアについてです。
試したことは、
・KeyWaitでLButtonのDownとUpを検出→LButtonの判定がKeyWaitに吸収されて範囲選択できない
・WhileとGetKeyStateの入れ子をうまいこと組み合わせる→よくわからないけど失敗
範囲選択モードになったことを示すものはないとして、マウスの挙動、つまり「ドラッグ選択が終わった」ことを認識できるような
条件式のアイデアを頂ければと存じます。
Send, {PrintScreen}
;初期座標記録&隣のモニタにカーソル移動
MouseGetPos, oldMouseX, oldMouseY
MouseMove, (oldMouseX < 0 ? A_ScreenWidth : -A_ScreenWidth), 0, 0, R
;範囲選択が終わるまで待機
While (1) {
;条件式
break
}
;元の座標に戻る
MouseMove, oldMouseX, oldMouseY, 0
左クリックのドラッグで範囲選択をします。
実現したいことは、「トリガー押下→範囲選択モードに移行(アプリ側でPrscに当てています)
→隣のモニタにカーソルを移動→範囲選択が終わり次第、トリガー押下時の座標にカーソルを戻す」
です
今回の質問は、下記スクリプト内の「条件式」のアイデアについてです。
試したことは、
・KeyWaitでLButtonのDownとUpを検出→LButtonの判定がKeyWaitに吸収されて範囲選択できない
・WhileとGetKeyStateの入れ子をうまいこと組み合わせる→よくわからないけど失敗
範囲選択モードになったことを示すものはないとして、マウスの挙動、つまり「ドラッグ選択が終わった」ことを認識できるような
条件式のアイデアを頂ければと存じます。
Send, {PrintScreen}
;初期座標記録&隣のモニタにカーソル移動
MouseGetPos, oldMouseX, oldMouseY
MouseMove, (oldMouseX < 0 ? A_ScreenWidth : -A_ScreenWidth), 0, 0, R
;範囲選択が終わるまで待機
While (1) {
;条件式
break
}
;元の座標に戻る
MouseMove, oldMouseX, oldMouseY, 0
2024/10/26(土) 22:43:09.51ID:TWNlTM+70
while GetKeyState("LButton", "P")
continue
continue
2024/10/28(月) 21:04:27.22ID:oZWBqLfk0
エクスプローラーで選択中のファイルが、特定の拡張子だったときだけサクラエディタで開きたいのですが、うまく動いてくれません。
どうすればよろしいでしょうか、、、
#ifWinActive ahk_exe explorer.exe
;ctrl+Eでサクラエディタで起動
^e::
Send, ^c
Sleep,100
if ( %Clipboard% = "*.拡張子" ){
Run, C:\Program Files\sakura\sakura.exe %Clipboard%
}
else{
Send, ^{e}
}
return
#ifWinActive
どうすればよろしいでしょうか、、、
#ifWinActive ahk_exe explorer.exe
;ctrl+Eでサクラエディタで起動
^e::
Send, ^c
Sleep,100
if ( %Clipboard% = "*.拡張子" ){
Run, C:\Program Files\sakura\sakura.exe %Clipboard%
}
else{
Send, ^{e}
}
return
#ifWinActive
2024/10/28(月) 22:44:52.71ID:kFEw7C+t0
初心者だよね?
v1はプログラミングに向いてないからv2を使ったほうがいい
v1はプログラミングに向いてないからv2を使ったほうがいい
2024/10/29(火) 00:42:08.82ID:4RMka5+D0
>>526
keywaitとgetkeystateを組み合わせる
;範囲選択が終わるまで待機
While (1) {
;条件式
keywait, lbutton, t1
if errorlevel and !getkeystate("lbutton")
break
}
keywaitとgetkeystateを組み合わせる
;範囲選択が終わるまで待機
While (1) {
;条件式
keywait, lbutton, t1
if errorlevel and !getkeystate("lbutton")
break
}
531名無しさん@お腹いっぱい。
2024/10/29(火) 18:35:33.51ID:sPxkJTnl0 V2でControlGet系がうまく動かないのですが、V1からコントロール指定の方法が変わったのでしょうか。
ControlGetHwnd("Edit1")
なら動きますが、
ControlGetHwnd("Edit1", "ahk_exe notepad.exe")
のようにウィンドウ指定を追加すると動きません。
WinGetID("ahk_exe notepad.exe")はちゃんと動いているようです。
お知恵をお借りしたく…
ControlGetHwnd("Edit1")
なら動きますが、
ControlGetHwnd("Edit1", "ahk_exe notepad.exe")
のようにウィンドウ指定を追加すると動きません。
WinGetID("ahk_exe notepad.exe")はちゃんと動いているようです。
お知恵をお借りしたく…
2024/10/29(火) 18:41:19.85ID:hnPx1uMc0
V1で挫折した〝2ストロークキー〟の再現、V2でチャレンジもワイには実現無理そうだ
2024/10/29(火) 19:06:03.91ID:Kw+83trt0
>>531
どっちも動く
どっちも動く
2024/10/29(火) 19:11:41.70ID:YI7RT2/i0
>>531
Changes from v1.1 to v2.0 | AutoHotkey v2
https://www.autohotkey.com/docs/v2/v2-changes.htm
ControlGet - Syntax & Usage | AutoHotkey v1
https://www.autohotkey.com/docs/v1/lib/ControlGet.htm#Hwnd
ControlGetHwnd - Syntax & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/ControlGetHwnd.htm
> Examples
> Retrieves the unique ID number of the Notepad's Edit control.
> editHwnd := ControlGetHwnd("Edit1", "ahk_class Notepad")
Changes from v1.1 to v2.0 | AutoHotkey v2
https://www.autohotkey.com/docs/v2/v2-changes.htm
ControlGet - Syntax & Usage | AutoHotkey v1
https://www.autohotkey.com/docs/v1/lib/ControlGet.htm#Hwnd
ControlGetHwnd - Syntax & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/ControlGetHwnd.htm
> Examples
> Retrieves the unique ID number of the Notepad's Edit control.
> editHwnd := ControlGetHwnd("Edit1", "ahk_class Notepad")
535名無しさん@お腹いっぱい。
2024/10/29(火) 19:16:49.70ID:sPxkJTnl0536名無しさん@お腹いっぱい。
2024/10/29(火) 19:27:49.29ID:sPxkJTnl0 >>534
Hwnd用の変数に代入していますが、try catchでエラー側になるので関数の実行自体に失敗しているようです。
Hwnd用の変数に代入していますが、try catchでエラー側になるので関数の実行自体に失敗しているようです。
2024/10/30(水) 04:01:24.86ID:9hEpcvqU0
>>536
どこで何のエラーが起きているかは調べたんでしょうか
どこで何のエラーが起きているかは調べたんでしょうか
2024/10/30(水) 22:57:19.40ID:4Rqbhdzu0
v1
実行中のスクリプトを終了させるけど常駐は抜けない方法はないんですか?
一時停止したところから再開するPauseではダメです
実行中のスクリプトを終了させるけど常駐は抜けない方法はないんですか?
一時停止したところから再開するPauseではダメです
2024/10/30(水) 23:55:03.62ID:pVOkQIaJ0
日本語でおk
2024/10/31(木) 06:34:01.22ID:z6U5GiBJ0
実行をしないけど実行するスクリプトを書きたいんだよ
2024/10/31(木) 11:30:10.59ID:tsE7QpNU0
常駐抜けたら困る事書いてその対処法聞いた方が早く無い?
2024/10/31(木) 12:49:19.11ID:dgQgfJQr0
つうか、どういうスクリプトを書いてるんだ?
通常ならそのスクリプトは常駐して、ホットキーなりで該当部分を実行・終了やろ?
通常ならそのスクリプトは常駐して、ホットキーなりで該当部分を実行・終了やろ?
2024/10/31(木) 12:52:41.51ID:50/hLkTs0
#Persistent
Exit
Exit
544538
2024/10/31(木) 13:25:53.92ID:WM3lv07H0 ちょっと書き直しますね
AHKスクリプトを起動して
現在走らせている“マクロ”を
AHK自体が終了してしまうExitAppでもなく
一時停止であって続きから再開してしまうPauseでもなく
ホットキーで“停止”させるコマンドはないんですか?
AHKスクリプトを起動して
現在走らせている“マクロ”を
AHK自体が終了してしまうExitAppでもなく
一時停止であって続きから再開してしまうPauseでもなく
ホットキーで“停止”させるコマンドはないんですか?
2024/10/31(木) 13:46:04.86ID:HMo3f5sZ0
^a: 無限ループ
^b: {
StopHotkeyMacro "^a"
}
このようなスクリプト見たことない
^aに
if(Stopが押されたか) exit
を入れたらいい
^b: {
StopHotkeyMacro "^a"
}
このようなスクリプト見たことない
^aに
if(Stopが押されたか) exit
を入れたらいい
546538
2024/10/31(木) 13:46:33.17ID:WM3lv07H0 訊いておいて何ですけど、いちおう
Reloadでおおよそ目的は達成できました
厳密にはちょっと違うのだけど
要するに、AHK自体は常駐させておいて
マクロを何度も途中で止めては“最初から”走らせたりしたい、ということです
Reloadでおおよそ目的は達成できました
厳密にはちょっと違うのだけど
要するに、AHK自体は常駐させておいて
マクロを何度も途中で止めては“最初から”走らせたりしたい、ということです
2024/10/31(木) 13:56:35.45ID:HMo3f5sZ0
ガチで日本語でおkな人だなあ
2024/10/31(木) 14:00:21.68ID:RLLG2ial0
Pauseから再開する時変数を初期化するとか
2024/10/31(木) 14:35:02.21ID:aPuhL2SK0
2024/10/31(木) 19:06:29.45ID:sY3xh/HA0
AltキーやCtrlキーが押しっぱなしになったままで再起動するしか解除できない問題が解決しない
2024/10/31(木) 22:12:04.31ID:eTpG3HPg0
>>550
いろいろ対策したが自分の環境では完全に再現しない方法がなかったので
修飾キーを離すまで送信しないが以下のように変えたら全く再現しない
v2の例
;HotkeyでSend()するもの(それ以外のHotkeyでは元々押しっぱなしにならない)は修飾キーの解放を待ってからSend()する
;Ctrl+RAltの場合
^RAlt::KeyWait("Ctrl"), KeyWait("RAlt"), Send("^{F4}")
いろいろ対策したが自分の環境では完全に再現しない方法がなかったので
修飾キーを離すまで送信しないが以下のように変えたら全く再現しない
v2の例
;HotkeyでSend()するもの(それ以外のHotkeyでは元々押しっぱなしにならない)は修飾キーの解放を待ってからSend()する
;Ctrl+RAltの場合
^RAlt::KeyWait("Ctrl"), KeyWait("RAlt"), Send("^{F4}")
2024/11/02(土) 10:02:48.47ID:VO0SaYC40
https://qiita.com/kenichiro_ayaki/items/d55005df2787da725c6f
のIME_GET()を使ってみたけど、常に0を返す
google日本語入力
修正版がある?
のIME_GET()を使ってみたけど、常に0を返す
google日本語入力
修正版がある?
2024/11/02(土) 13:25:52.25ID:oCPKXR8t0
qittaやgithub issueでコメントしたらうざって感じだが5chだからコメントできるのか
おまかんじゃないの
おまかんじゃないの
2024/11/02(土) 17:01:18.37ID:ksuoUum40
なんかパソコン使ってると、フォーカスが一瞬他所に移る現象が発生してて
原因が分からなかったんだけど
これのスクリプトを一度でも起動したあとに(終了させても)上記の現象が発生するようになる気がする
そういうのない?
別にあやしいプロセス残ってるようでもないんだが
なんか裏でやってる?
原因が分からなかったんだけど
これのスクリプトを一度でも起動したあとに(終了させても)上記の現象が発生するようになる気がする
そういうのない?
別にあやしいプロセス残ってるようでもないんだが
なんか裏でやってる?
2024/11/02(土) 17:43:41.14ID:8+i+pgjp0
普通はないけど、OSのほとんどの機能を制御できるので
全ソースを見ないことには、はっきりしたことは言えない
全ソースを見ないことには、はっきりしたことは言えない
2024/11/03(日) 12:22:34.51ID:WH2YjwrV0
2024/11/03(日) 13:06:37.37ID:M3d5vb9j0
何を言いたいのかよくわからんがインスタンスが立ち上がっていれば
スクリプトがロードされているわけで
スクリプトがロードされているわけで
2024/11/04(月) 00:38:32.71ID:IzVmTuGG0
#HotIf WinActive("ahk_exe aaa.exe") or WinActive("ahk_exe bbb.exe")
みたいな書き方すると、むちゃくちゃ不安定になるな
みたいな書き方すると、むちゃくちゃ不安定になるな
2024/11/04(月) 01:41:53.19ID:eJac1JqB0
ahk_groupならどう?
2024/11/04(月) 07:58:09.36ID:KFmL+5kO0
何だっけなぁ、ちょっと記憶があやふやだけど v2 が出た直後ぐらいに >>558 な感じで
スクリプトを書いたら全く期待度取りの動作をしなくて、別構造で書き直した記憶があるな。
スクリプトを書いたら全く期待度取りの動作をしなくて、別構造で書き直した記憶があるな。
2024/11/04(月) 08:13:53.78ID:0+TNl6bu0
どんな風に書いたの?
2024/11/04(月) 09:02:33.57ID:0YuXa8aO0
#HotIf WinActive("ahk_exe aaa.exe")
func()
#HotIf WinActive("ahk_exe bbb.exe")
func()
みたいにすると安定する
func()
#HotIf WinActive("ahk_exe bbb.exe")
func()
みたいにすると安定する
2024/11/04(月) 09:02:39.41ID:KFmL+5kO0
>>561
これ、ワシ宛て?
なら、ソースを見て記憶を漁ってみる…… 元がどうやったか忘れたがw 現行動作しているものは
以下の通りやな(つまり >>559 の指摘のパターンでおk になってる)。
==========
; Target window classes
GroupAdd "TargetApp", "ahk_class Chrome_WidgetWin_1" ; Google Chrome and MS Edge, etc...
GroupAdd "TargetApp", "ahk_class MozillaWindowClass" ; Mozilla Firefox and Thunderbird, etc...
#HotIf WinActive("ahk_group TargetApp")
:
#HotIf ; ***** End of WinActive("ahk_group TargetApp") block *****
これ、ワシ宛て?
なら、ソースを見て記憶を漁ってみる…… 元がどうやったか忘れたがw 現行動作しているものは
以下の通りやな(つまり >>559 の指摘のパターンでおk になってる)。
==========
; Target window classes
GroupAdd "TargetApp", "ahk_class Chrome_WidgetWin_1" ; Google Chrome and MS Edge, etc...
GroupAdd "TargetApp", "ahk_class MozillaWindowClass" ; Mozilla Firefox and Thunderbird, etc...
#HotIf WinActive("ahk_group TargetApp")
:
#HotIf ; ***** End of WinActive("ahk_group TargetApp") block *****
2024/11/04(月) 09:18:59.39ID:0+TNl6bu0
2024/11/04(月) 11:42:04.68ID:oZhUvQAj0
>>554
どのプロセスがフォーカスを取ったのか、というのが問題であるならAHKスクリプトで調べられそうではあるが
どのプロセスがフォーカスを取ったのか、というのが問題であるならAHKスクリプトで調べられそうではあるが
2024/11/09(土) 20:56:33.76ID:u7GULAlO0
もしpython使いがいらっしゃれば教えて下さい
onmessageで待機中のahkにsendmessageするpython関数をさがしてます
https://ahkscript.github.io/ja/docs/v2/lib/OnMessage.htm#ExSendString
win32apiで送っても全然届きません
# 文字列をエンコード
encoded_value = value.encode('utf-16le')
# COPYDATASTRUCT構造体を作成
class COPYDATASTRUCT(ctypes.Structure):
_fields_ = [
("dwData", ctypes.c_ulonglong),
("cbData", ctypes.c_ulonglong),
("lpData", ctypes.c_char_p)
]
cds = COPYDATASTRUCT()
cds.dwData = 0
cds.cbData = len(encoded_value) + 2 # null終端文字を含む
cds.lpData = ctypes.c_char_p(encoded_value)
# メッセージを送信
result = win32api.SendMessage(hwnd, win32con.WM_COPYDATA, 0, ctypes.addressof(cds))
onmessageで待機中のahkにsendmessageするpython関数をさがしてます
https://ahkscript.github.io/ja/docs/v2/lib/OnMessage.htm#ExSendString
win32apiで送っても全然届きません
# 文字列をエンコード
encoded_value = value.encode('utf-16le')
# COPYDATASTRUCT構造体を作成
class COPYDATASTRUCT(ctypes.Structure):
_fields_ = [
("dwData", ctypes.c_ulonglong),
("cbData", ctypes.c_ulonglong),
("lpData", ctypes.c_char_p)
]
cds = COPYDATASTRUCT()
cds.dwData = 0
cds.cbData = len(encoded_value) + 2 # null終端文字を含む
cds.lpData = ctypes.c_char_p(encoded_value)
# メッセージを送信
result = win32api.SendMessage(hwnd, win32con.WM_COPYDATA, 0, ctypes.addressof(cds))
2024/11/09(土) 21:15:28.41ID:MAenpT4V0
pythonで完結した方がいいのでは
2024/11/10(日) 04:40:23.28ID:GeSxHuHj0
2024/11/10(日) 11:43:02.46ID:EXFM7x830
>>568
ahkのOnMessageがあるからスレ違いでない
ahkのOnMessageがあるからスレ違いでない
2024/11/10(日) 11:58:00.27ID:Dm1FzFIs0
>>566,569
ahk側の話じゃないのにahkにこじつけただけだろw
ahk側の話じゃないのにahkにこじつけただけだろw
2024/11/10(日) 12:02:23.30ID:Ct4CxUbM0
ahkはキーの置き換えだけにして、
凝ったことはPyAutoGUIとかでやった方が幸せになれる
凝ったことはPyAutoGUIとかでやった方が幸せになれる
2024/11/10(日) 12:29:20.03ID:EXFM7x830
>>570
afkとそれ以外とのインタフェースもスレで扱われるべき
afkとそれ以外とのインタフェースもスレで扱われるべき
2024/11/10(日) 12:38:56.60ID:fkGzM6dg0
>>572
それならwin32apiスレで訊けってw
それならwin32apiスレで訊けってw
2024/11/10(日) 12:41:51.16ID:EXFM7x830
アホすぎて話にならんなw
2024/11/10(日) 12:43:50.52ID:fkGzM6dg0
>>574
すまんな、ヒント位は用意してたがやめにする
すまんな、ヒント位は用意してたがやめにする
2024/11/10(日) 12:44:48.66ID:fkGzM6dg0
どうせム板をつまはじきにされたんだろw
2024/11/10(日) 12:53:29.53ID:Ct4CxUbM0
俺なんか完全解答まで用意してたけど削除した
2024/11/10(日) 12:59:30.81ID:EXFM7x830
2024/11/10(日) 13:15:28.60ID:r+zx2CAO0
2024/11/10(日) 13:33:06.16ID:Ct4CxUbM0
pythonからahkを制御するメリットが何も思いつかないんだよな
2024/11/10(日) 17:18:43.93ID:J4tKGOxg0
発想の貧困さを自慢しなくてもw
2024/11/10(日) 17:20:25.98ID:Ct4CxUbM0
じゃあ1分やるからお前が3つくらい挙げてみれ
2024/11/10(日) 18:48:35.44ID:A6FIZEN40
Claudeで聞いてみた
PythonからAutoHotkey (AHK)を制御するメリットを3つ挙げさせていただきます:
1. 豊富なライブラリの活用
- PythonのNumPy、Pandas、OpenCVなどの強力なライブラリと、AHKの画面制御機能を組み合わせることができます
- データ分析やAI機能をAHKのマクロ処理に組み込むことが可能になります
- 複雑な計算や処理をPythonで行い、その結果をAHKで画面操作に反映できます
2. 保守性とデバッグの向上
- Pythonの整理された文法とモジュール構造により、大規模な自動化スクリプトも管理しやすくなります
- Pythonのデバッグツールやログ機能を使用して、エラーの特定と修正が容易になります
- ユニットテストなどのテスト手法を導入しやすくなります
3. クロスプラットフォーム対応の強化
- Pythonのマルチプラットフォーム対応により、Windows以外の環境でも一部の機能を実行可能です
- WebAPIやデータベースとの連携が容易になり、より広範な自動化が実現できます
- 異なるOSで動作するシステム間の連携も実装しやすくなります
これらの利点を活かすことで、より柔軟で拡張性の高い自動化システムを構築することができます。
PythonからAutoHotkey (AHK)を制御するメリットを3つ挙げさせていただきます:
1. 豊富なライブラリの活用
- PythonのNumPy、Pandas、OpenCVなどの強力なライブラリと、AHKの画面制御機能を組み合わせることができます
- データ分析やAI機能をAHKのマクロ処理に組み込むことが可能になります
- 複雑な計算や処理をPythonで行い、その結果をAHKで画面操作に反映できます
2. 保守性とデバッグの向上
- Pythonの整理された文法とモジュール構造により、大規模な自動化スクリプトも管理しやすくなります
- Pythonのデバッグツールやログ機能を使用して、エラーの特定と修正が容易になります
- ユニットテストなどのテスト手法を導入しやすくなります
3. クロスプラットフォーム対応の強化
- Pythonのマルチプラットフォーム対応により、Windows以外の環境でも一部の機能を実行可能です
- WebAPIやデータベースとの連携が容易になり、より広範な自動化が実現できます
- 異なるOSで動作するシステム間の連携も実装しやすくなります
これらの利点を活かすことで、より柔軟で拡張性の高い自動化システムを構築することができます。
2024/11/10(日) 18:54:02.71ID:Ct4CxUbM0
なんで画面制御ソフトだと思い込んでるんだ
2024/11/11(月) 01:43:32.27ID:99STE7/B0
メニューバーの項目の中でアクセスキーが割り当てられてない物を選択するにはどうしたらいいものか
お手上げだわ
お手上げだわ
2024/11/11(月) 10:04:57.32ID:WPN24Oia0
直接 menu item を Select できるだろ
Reference を look look
Reference を look look
2024/11/11(月) 10:05:53.66ID:6GxZHQDe0
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★2 [蚤の市★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も [1ゲットロボ★]
- 橋下徹氏「この喧嘩は日本の完敗」 台湾有事答弁めぐる外務省局長訪中で指摘「中国に怒られてご説明に伺った日本と見られる」 [muffin★]
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★2 [1ゲットロボ★]
- 韓国、泥船から爆速で逃げ出す 「高市…さん…でしたっけ?」 [878970802]
- 高市早苗の中国問題、「オーバーツーリズムが解消されてウザい中国人が消えるから日本の勝ち」という風潮になってしまう [562983582]
- JC、「味方がいない」と遺書を書いて11階から飛び降り自殺。俺と同じだ...😢 [856698234]
- 最近日本民主の玉木って影薄くね?
- やす子「ここまで総理大臣が自らズバッと言ったのは初めて。日本の防衛力も大きく変わっていく」 [485187932]
- 【悲報】有名ウヨ論客、「現実的に考えて中国と仲直りするしかなくね?」と言ったら野良ウヨから総叩きにあう [856698234]
