■公式サイト
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
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
2024/11/11(月) 10:17:08.22ID:QhnMGqXZ0
.ahkからメニューの.ahkを起動した時に、
フォーカスが当たってくれないのでahk_class #32768を探してクリックする、
みたいなことをしていた
そのせいで、素早くキー入力するとエラーを起こしていた
今試すと、そんな処理は一切なくてもちゃんとフォーカスが当たるので
シャキシャキ動くようになった
多分、win11はExplorerPatcherとセットで使うのが正解
フォーカスが当たってくれないのでahk_class #32768を探してクリックする、
みたいなことをしていた
そのせいで、素早くキー入力するとエラーを起こしていた
今試すと、そんな処理は一切なくてもちゃんとフォーカスが当たるので
シャキシャキ動くようになった
多分、win11はExplorerPatcherとセットで使うのが正解
2024/11/11(月) 15:39:01.57ID:99STE7/B0
Ver.2で作成したGUIのみ、AHKでメニューを操作できる
嵌まった罠
嵌まった罠
2024/11/11(月) 21:21:17.01ID:k9QE4KWP0
pythonベースのリマップライブラリはあったけどまったく流行らなかった
安定性は高かったけど修飾キーの取り扱いが面倒だったのは覚えてる
安定性は高かったけど修飾キーの取り扱いが面倒だったのは覚えてる
2024/11/11(月) 21:26:59.39ID:QhnMGqXZ0
安定性はどっちにしろLLフックだから変わらない
デバイスドライバを使う方式ならメリットはある
デバイスドライバを使う方式ならメリットはある
2024/11/13(水) 09:07:44.32ID:QgVuGe8N0
2024/11/13(水) 18:24:15.97ID:N5EeeiZd0
#HotIf WinActive("ahk_exe msedge.exe") or WinActive("ahk_exe vivaldi.exe") or WinActive("ahk_exe firefox.EXE")
こんなん書いてあるけど別に不安定ではないなあ
こんなん書いてあるけど別に不安定ではないなあ
2024/11/13(水) 19:04:17.69ID:WTlR9y+X0
RPAやりたいとなったらpythonだろう
RPAまでは行かないけど、ちょっと便利にしたい程度でも当然使える
ahkのキー置き換え機能以外は全部外出しできて、その方が保守性が高い
RPAまでは行かないけど、ちょっと便利にしたい程度でも当然使える
ahkのキー置き換え機能以外は全部外出しできて、その方が保守性が高い
2024/11/18(月) 15:57:31.08ID:Y6PEV2t60
海外のエンジニアと話してて偶然発見したんだけど
wsl -> pwsh -> ahk な起動できるんだな
いままでずっとwss待機ahkにntfy.shにcurlで投げて2秒くらい掛かるから不満だったけど400msecくらいまで短縮できた
>> 566
参考になるかも
wsl -> pwsh -> ahk な起動できるんだな
いままでずっとwss待機ahkにntfy.shにcurlで投げて2秒くらい掛かるから不満だったけど400msecくらいまで短縮できた
>> 566
参考になるかも
2024/11/21(木) 17:07:30.20ID:qKQjWyyW0
UpをF13にレジストリで設定して
F13を空打ちまたは長押しはUp
F13と他のキー同時押しは任意のホットキー
として動作させるにはどうしたらいいですか?
F13を空打ちまたは長押しはUp
F13と他のキー同時押しは任意のホットキー
として動作させるにはどうしたらいいですか?
2024/11/21(木) 17:12:16.74ID:gXTmAhJp0
レジストリで設定したもんはもう同じキーだから、
ahkとは関係ない
ahkとは関係ない
2024/11/21(木) 19:33:15.92ID:V7QqsfvG0
よくあるやつだから訊くよりググって参考になりそうなの探した方が早そう
2024/11/22(金) 00:04:08.50ID:bWwlPXi60
F13::Send("Up")
F13長押し::?
F13&a::Send("Down")
F13長押し::?
F13&a::Send("Down")
2024/11/22(金) 00:14:15.81ID:eLxZWE600
なんか予定の仕様を見ているだけで
誤爆臭がプンプンなんだが
誤爆臭がプンプンなんだが
2024/11/27(水) 23:42:15.63ID:7bd49iTm0
以下の機能を実装したいと思っています。
「とあるホットキーを押下すると、InputBoxが表示される」
「ただし既にInputBoxが作成済みで、他ウィンドウの背面に存在する場合は、前面に表示させる」
実現する為、以下のように記述しましたが上手くいきません。
-------------------------------
!Q::
IfWinExist,入力ボックス
{
WinActivate,入力ボックス
}
Else
{
InputBox,var,入力ボックス,,,150,110,-320,-300
}
Return
-------------------------------
恐らく、入力ボックスが存在する時はまだこのスレッドが終了していない訳なので、Alt+Qを押下しても何も起きないからだと思われます。
何か良い解決策はございませんでしょうか。
「存在するなら前面に出す」でなく「存在しようがすまいが一度スレッドを閉じて頭からやり直し」でも構いません。
回答がお分かりの方がいらっしゃいましたら、何卒ご教示の程を賜りますようお願い申し上げます。
「とあるホットキーを押下すると、InputBoxが表示される」
「ただし既にInputBoxが作成済みで、他ウィンドウの背面に存在する場合は、前面に表示させる」
実現する為、以下のように記述しましたが上手くいきません。
-------------------------------
!Q::
IfWinExist,入力ボックス
{
WinActivate,入力ボックス
}
Else
{
InputBox,var,入力ボックス,,,150,110,-320,-300
}
Return
-------------------------------
恐らく、入力ボックスが存在する時はまだこのスレッドが終了していない訳なので、Alt+Qを押下しても何も起きないからだと思われます。
何か良い解決策はございませんでしょうか。
「存在するなら前面に出す」でなく「存在しようがすまいが一度スレッドを閉じて頭からやり直し」でも構いません。
回答がお分かりの方がいらっしゃいましたら、何卒ご教示の程を賜りますようお願い申し上げます。
2024/11/27(水) 23:47:28.15ID:sJxUfBiT0
エクスプローラーで右クリック+ホイールで一番上と下に移動するようにさせたいです。
動作自体は↓でできるのですが、動作後に右クリックメニューが出ないようにできないでしょうか?
~RButton::をはずすと出なくなるのですが、逆に通常の右クリックができなくなってしまいます。
何か良い方法があれば教えてください。よろしくお願いします。
~RButton::
RButton & WheelUp::Send {Home}
RButton & WheelDown::Send {End}
動作自体は↓でできるのですが、動作後に右クリックメニューが出ないようにできないでしょうか?
~RButton::をはずすと出なくなるのですが、逆に通常の右クリックができなくなってしまいます。
何か良い方法があれば教えてください。よろしくお願いします。
~RButton::
RButton & WheelUp::Send {Home}
RButton & WheelDown::Send {End}
2024/11/27(水) 23:49:14.25ID:tArQvrkx0
AHKの中からNode.jsを呼ぶ処理があったのですが
Node.jsをインストールし直したら、Nodeがないと言われるようになりました
Nodeはコマンドプロンプトからは問題なく実行できます
調べているうち、システム環境変数PATHの変更(C:\Program Files\nodejs\の追加)が
AHKに伝わっていないことに気づきました
コマンドプロンプトなどは新しく起動したら最新状態の環境変数を持たされますが、
AHKは一度Exitさせて再び実行しても、なぜか環境変数の値は古い状態のままです
PCを再起動したらおそらく反映されると思いますが、
なぜAHKはこのような挙動をするのでしょうか?
Node.jsをインストールし直したら、Nodeがないと言われるようになりました
Nodeはコマンドプロンプトからは問題なく実行できます
調べているうち、システム環境変数PATHの変更(C:\Program Files\nodejs\の追加)が
AHKに伝わっていないことに気づきました
コマンドプロンプトなどは新しく起動したら最新状態の環境変数を持たされますが、
AHKは一度Exitさせて再び実行しても、なぜか環境変数の値は古い状態のままです
PCを再起動したらおそらく反映されると思いますが、
なぜAHKはこのような挙動をするのでしょうか?
2024/11/27(水) 23:50:58.68ID:Dl7nvvky0
PC版のラインアプリを起動時に最小化するスクリプトが公開されていたのですが、ラインが更新されてから上手く動作しなくなりました。
どこに手を加えれば良いか、分かる方がいらっしゃいましたら教えてください。
ListLines, Off
#NoTrayIcon
SetBatchLines, -1
SetTitleMatchMode, 3
Run, %USERPROFILE%\AppData\Local\LINE\bin\LineLauncher.exe
Loop, 25600{
Sleep, 15
IfWinExist, LINE ahk_class Qt5QWindowIcon
{
WinClose, LINE ahk_class Qt5QWindowIcon
Break
}
}
どこに手を加えれば良いか、分かる方がいらっしゃいましたら教えてください。
ListLines, Off
#NoTrayIcon
SetBatchLines, -1
SetTitleMatchMode, 3
Run, %USERPROFILE%\AppData\Local\LINE\bin\LineLauncher.exe
Loop, 25600{
Sleep, 15
IfWinExist, LINE ahk_class Qt5QWindowIcon
{
WinClose, LINE ahk_class Qt5QWindowIcon
Break
}
}
2024/11/27(水) 23:56:00.70ID:+CuwNKuO0
2024/11/28(木) 00:33:26.82ID:I+M5rELh0
www.youtube.com/watch?v=5F5GoW-_6DM
と同じ動機じゃね?
と同じ動機じゃね?
2024/11/28(木) 10:15:18.14ID:3oWlVnLn0
全部過去ログからのコピペ
2024/11/28(木) 16:54:47.34ID:fKL+wsWZ0
AutoHotkey スレッド part28
https://egg.5ch.net/test/read.cgi/software/1585906506/790
https://egg.5ch.net/test/read.cgi/software/1585906506/790
2024/11/30(土) 00:36:57.41ID:qLChT1TC0
>>595
ありがとうございます
ntfy.shいいですね。自ホストできるのも気に入りました
最終的にこのライブラリにたどり着きました
https://github.com/leplexion/Lep_Ahk2.py
AHK_Hのdllを呼んでるだけですがahkコードまんま書けるのも楽で、目的のsendmessage送信をpythonから50msec以下で送れたので概ね満足です
>>566
ありがとうございます
ntfy.shいいですね。自ホストできるのも気に入りました
最終的にこのライブラリにたどり着きました
https://github.com/leplexion/Lep_Ahk2.py
AHK_Hのdllを呼んでるだけですがahkコードまんま書けるのも楽で、目的のsendmessage送信をpythonから50msec以下で送れたので概ね満足です
>>566
2024/11/30(土) 00:44:08.10ID:sal3v5wh0
それだけいろいろ手段があるのにahkに頼るメリットがあるの?
2024/12/01(日) 13:56:42.29ID:o/VZUOPk0
ただの連携でしょ
SendMessageだけだし
SendMessageだけだし
2024/12/01(日) 14:31:38.41ID:2nq5l3480
連携してahkにしてもらう仕事なんか無いやん
何でも自力ができる
何でも自力ができる
2024/12/01(日) 14:56:36.82ID:L6kRfSUn0
あんたが使うわけじゃないでしょ?
「本人が使い勝手が良いソースを利用する」ことが最大のメリットなんだから他人が無意味っていうのは野暮では?
「本人が使い勝手が良いソースを利用する」ことが最大のメリットなんだから他人が無意味っていうのは野暮では?
2024/12/01(日) 15:06:26.18ID:2nq5l3480
無意味なんて酷いこと言ってるのは君だけや
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【モンゴル草原火災】モンゴル当局が賠償請求検討 KDDI「法令違反ない」 [煮卵★]
- 【サッカー】鈴木彩艶が好セーブ連発でマンC撃破 アストン・ビラが首位の連勝を7でストップ…攻撃面でも存在感 [ゴアマガラ★]
- 【クマ】秦野市でツキノワグマが再出没…捕獲・放獣されたクマと同一個体と確認 [少考さん★]
- 【芸能】堀江貴文氏 結婚・子ども・家・車は「生涯にわたるバカ高いサブスク」 世間体に払う2億円の無駄 [冬月記者★]
- 【大阪IR】カジノディーラー3千人確保へ養成スクール 海外プロ年収1千万円超も国内は… [煮卵★]
- 【野球】日本シリーズ第1戦 DB 1-3 H [10/24] 延長11回ホークス庄子が勝ち越しタイムリー2塁打、柳町犠飛 DeNAチャンス活かせず [鉄チーズ烏★]
- 〓たかせん〓 日シリ初戦勝利
- とらせん ★6
- 【リトルなでしこ】FIFA U-17女子ワールドカップ2026モロッコ★3【DAZN】
- はません
- やくせん
- 【フジテレビ】2026 FORMULA 1【NEXT】Lap112
- 【悲報】高市早苗、被爆者が話してるのにも関わらずめちゃくちゃ態度が悪くて炎上wwwwww [334972637]
- VIPでウマ娘
- 5ちゃんねる、専ブラで書き込めなくなってる模様。いよいよ閉鎖かwww [743999204]
- 【画像】女性記者さん、飲酒運転をして無事轢く
- 【ジャップ悲報】モンゴル🇲🇳大規模火災、損害賠償請求を検討する方針変わらず………。 非常にまずい状況に🥺 [683137174]
- 【疑問】なぜ大谷は"松井秀喜"ほど愛されないのか? [632596506]