AutoHotkey スレッド part35

レス数が900を超えています。1000を超えると表示できなくなるよ。
2025/10/17(金) 19:02:27.31ID:bVXYUNmz0
>>858
画像検索はおすすめしません

URLをAlt+Dでクリップボード経由で判定する方法以外では
Descolada氏のUIAライブラリ UIA.ahk
ttps://www.autohotkey.com/boards/viewtopic.php?f=83&t=113065
に付属している UIA_Browser.ahk
ttps://github.com/Descolada/UIA-v2/blob/main/Lib/UIA_Browser.ahk
を利用する方法が簡単です

EdgeとGeminiで試す場合のほぼ最小コードだとこれで可能です
#Requires AutoHotkey v2.0.18+
#Include UIA.ahk
#Include UIA_Browser.ahk

Edge := UIA_Browser("ahk_exe msedge.exe")

#HotIf WinActive("ahk_exe msedge.exe") && InStr(Edge.GetCurrentURL(), "gemini.google.com")
Enter:: Send("+{Enter}")
+Enter:: Send("{Enter}")
2025/10/17(金) 19:53:51.91ID:bVXYUNmz0
>>869
すいません間違えました
これだとEdgeを起動してない時や再起動した場合エラーになります

アクティブなEdgeのHWNDが変更された場合、オブジェクトを更新する仕組みがいるので
こういった処理が必要になります
IsAIChatInEdge(){
static prev_hwnd := 0, Edge
if !hwnd := WinActive("ahk_exe msedge.exe")
return false
if prev_hwnd != hwnd {
Edge := UIA_Browser("ahk_exe msedge.exe")
prev_hwnd := hwnd
}
return InStr(Edge.GetCurrentURL(), "gemini.google.com")
}

#HotIf IsAIChatInEdge()
Enter:: Send("+{Enter}")

もしくは余り好ましくないかもしれませんが、このように毎回オブジェクトを取得すればいいかもしれません
#HotIf WinActive("ahk_exe msedge.exe") && InStr(UIA_Browser("ahk_exe msedge.exe").GetCurrentURL(), "gemini.google.com")
871857
垢版 |
2025/10/18(土) 10:47:36.28ID:ae4em9ph0
>>870
ありがとうございます。
UIA そんなライブラリがあるのですね。よくみたらスレッドでも出ていましたね。すみません。HWNDについては詳しくないので調べてみます。助かりました。
2025/10/21(火) 01:18:53.20ID:5VThRTSP0
かざぐるマウスの機能でスクロールバーの上にカーソルを置いてホイールを回すと
ページスクロールさせたりするのがあってAHKで同じ事をしたいんですが
検索したところ
ControlGetFocus, control, A
SendMessage, 0x115, 3, 0, %control%, A
とやってページスクロールを送信するところまでは出来たんですが
マウスの下にスクロールバーがある時だけというのが出来なくて困ってます
どうすればスクロールバーがあるかどうかを判定できるでしょうか?
2025/10/21(火) 01:46:49.39ID:+u/TonrO0
スクロールバーなんかにこだわらず
対象のウィンドウのサイズとマウスカーソルの位置を調べて
窓枠付近5%のところでホイールスクロールしたら特別な操作させりゃいいよ

上端:タブスクロール
下端:水平スクロール
左端:特になし(何か割り当てると意図しない誤動作しまくり)
右端:垂直高速スクロール
2025/10/21(火) 02:00:41.48ID:5VThRTSP0
>>873
なるほど、そんな方法が…目から鱗ですね
ちょっと考えてみます
2025/10/21(火) 08:23:53.17ID:YBeVQhx60
>>872
>>873 さんが書いてくれているような方向性の方が実装が楽やと思う。

AHK でマウスポインタが各ウィンドウのどの要素の上にあるかというのを調べるのは
出来なくはくはないはずけど、汎用的なものはめっちゃ面倒になるはず。

ワシも「タブバー上でマウスホイールでタブ移動」を実装しようとして、
結局ウィンドウ上部から何Pixel で判定するようにしたw
それでも一応各アプリを判定して Pixel値は変えるようにしてあるけど。
876名無しさん@お腹いっぱい。
垢版 |
2025/10/21(火) 09:10:30.88ID:CasY4tyx0
>>873
めっちゃいいですね
めっちゃほしい
srcplz(地面デコ擦り土下座)
2025/10/21(火) 18:36:08.73ID:KWVL6D0k0
エクスプローラー(フォルダ)がアクティブの時だけF3の無効化ってどうやれば良い?
2025/10/21(火) 18:38:21.62ID:KWVL6D0k0
F3::Return
で良いんだろうけどエクスプローラーだけの指定方法が分からない

v1です
2025/10/21(火) 19:33:41.33ID:IJyeth4Q0
CabinetWClass
2025/10/21(火) 20:26:07.23ID:Q7bBaTGi0
>>869

これ便利?
使ってみようかな…
2025/10/22(水) 00:24:34.71ID:1Jc1Be5c0
v2を使おう
v2はv1より書きやすくなってる
後で書き換えたくなったときに後悔するだろう
2025/10/22(水) 07:44:25.39ID:EOsR0OJf0
少しはマシというだけで、根底から腐ってるのは変わらないんだけどな
2025/10/22(水) 10:28:25.29ID:oIEkDsVJ0
v1て明示してるレスにいちいち噛みつく奴は時間の無駄すぎる
2025/10/22(水) 15:56:51.83ID:dLN1TNFH0
>>879
返事遅くなった

無事にエクスプローラー上だけで動作するようになった
ありがとう

ファイル名変えるのに押し間違えて検索バーがアクティブになって、キーボード操作だけで戻るのにも苦労するからイライラしてたのこれで無くなる
2025/10/22(水) 22:37:01.76ID:d/QqMJk80
間違って[F3]押しても[ESC]→[F2]で行けるやん
2025/10/22(水) 22:38:44.53ID:PCBVLBCq0
F3::F2
にしたらいいのでは
2025/10/23(木) 13:50:03.32ID:gD0NHKmm0
エクスプローラの「フォルダを新しいウィンドウで開く」を左手でやりたくて
^{Enter}をSendしてもただのEnterに化けてしまうんだけどおま環?
2025/10/23(木) 21:43:15.97ID:/zUIWwPE0
>>885
エクスプローラー(フォルダ)の右上の検索ボックスにフォーカス行っててesc押しても何にもならないけど
2025/10/23(木) 23:44:17.61ID:kJA1PQCN0
Send "{Ctrl down}"
Sleep 100
Send "{Enter}"
Sleep 100
Send "{Ctrl up}"
これで動いた
2025/10/24(金) 08:14:54.05ID:dJdo69lo0
Enterを押したあとCtrlを放すまでの時間を多めにとる必要があるみたいね
Ctrlを押してからEnterを押すまでの時間はもっと短くしてもOKだった
2025/10/24(金) 08:42:01.14ID:sTLq8DgI0
ctrl+enterの時点で新しいウインドウが開くわけじゃなく、
explorer.exeの呼び出し時にctrlが押されてる必要あるからね
ctrl押す長さはPCの処理能力に依存する部分だよ
2025/10/24(金) 19:22:07.33ID:9mEFal/40
sleepがあれば時間は最短でいい
2025/10/25(土) 11:13:39.39ID:VQ/HhSPt0
AHKでSleep挟んで試行錯誤してる時間が一番惨めな気持ちになる
2025/10/25(土) 13:09:48.38ID:R6izkYx90
その内動作しなくなって増やしては減らしてみたいなことになる
2025/10/25(土) 13:29:48.21ID:dk3CRPpM0
要はフックの奪い合いをしていて、完全に奪うと相手がおかしくなるので、
適度に相手にもいじらせないといけない
渡しすぎると今度は自分の処理がおかしくなる
完全な実装には、競合相手の処理内容の理解が必要

そんな面倒なことは最初からしないのが正解
2025/10/25(土) 14:51:29.63ID:acDcKwfT0
結局 DllCall で Windows を叩いて色々チェックしてからやる羽目になって「AHK とは?」になるw
2025/10/25(土) 15:17:16.56ID:dk3CRPpM0
のどかみたいにデバイスドライバでやれば競合は起きない
yamyはAHKと同様にLLフックでやってるのに、何故か素直に動く
AHKのv3をもっとイケてる文法にしてデバイスドライバ版に変更するといい
2025/10/25(土) 18:20:07.90ID:kZz3spXo0
AHKっていうかMouseGestureLの話なんだけどスレ違い?
たまにジェスチャー発動時にカーソルの動きが引っ掛かることがあって
それが起きると他のウィンドウをクリックしてもアクティブにできなくなって
Alt+Ctrl+Deleteで動作を中断させるしかなくなるんだけど何が原因なんだろ
2025/10/25(土) 18:48:46.42ID:AS7G2zsk0
ジェスチャはOpenMausujiで受けてキーボードショートカットを発生させて
それをAHKで受けて処理
というアホなやり方が意外と普通にできててもう10年以上ずっとこのままだな
2025/10/26(日) 15:41:24.47ID:5Yde84eR0
>>898
修飾キーのどれかが押しっぱなしになってるのでは?
kako.5ch.net/test/read.cgi/software/1243005818/182
を入れてみると分かるかも
2025/10/26(日) 16:49:36.52ID:F0D3GODk0
Win + J:: を記述したら、
ときどき、Win + Jの実行と同時に、スタートメニューが誤爆表示されるわ
902名無しさん@お腹いっぱい。
垢版 |
2025/10/27(月) 11:32:09.55ID:ZsAEAa0Z0
管理者権限で動いているahkだと、AHK経由のソフト起動も管理者権限で動いてしまう。
これをnot管理者権限で開くようにする方法ありますか?
2025/10/27(月) 18:25:32.96ID:TaRuFJmB0
RunAs
2025/11/07(金) 14:31:36.15ID:Xxo3RejR0
うまくいかなくて困っているのでどなたか助けてください

#a:: Send(“^{a}”)

^a:: Send "{Home}"
を、記述しているのですが
#a:: Send(“^{a}”)が^a:: Send "{Home}”で上書きされてしまって同時に有効にすることができません
ちなみに^a:: Send "{Home}”をコメントアウトすると#a:: Send(“^{a}”)は有効になります
2025/11/07(金) 14:48:20.05ID:Xxo3RejR0
>>904ですが自己解決しましたので一応報告しておきます
いやぁAIって本当にすごいですね今までこうやって5chで質問して運が良ければ数日後に回答があるかもしれないというものすごく低い可能性にすがるしかなかったのに
今やAIに質問すれば秒で正確かつ詳細な答えが返ってくるんですから本当にAI最強ですね
これは本当にもう5chはソフトウェア板を含めて専門板が完全に必要なくなっちゃいましたね
雑談かリアルタイム性の高いスポーツ系の板以外はまったく存在価値がないですね
2025/11/07(金) 18:57:22.60ID:KVwAEuer0
>>905
価値無いと思う場所に書く価値は見いだしてるんだね
907名無しさん@お腹いっぱい。
垢版 |
2025/11/08(土) 02:19:34.35ID:mlgCiEVh0
AIさんは間違ってても己を信じて愚直に突き進む
2025/11/08(土) 02:37:54.48ID:2ISgKh3M0
MouseGestureLもAIでv2に移行できる?
2025/11/08(土) 07:48:42.58ID:KCIWCE1g0
答える側もググレカスって思ってる
前は検索して検索結果をコピペしてるだけ
今はAIに聞いて結果をコピペしてるだけ
だったら質問する側が自分で検索とAI質問をしたらいい
2025/11/08(土) 08:33:28.65ID:j29qIXzT0
ぐぐれば判るようなことは、今はもうぐぐらなくてもAIがやってくれる
2025/11/08(土) 15:43:11.52ID:h1/SFRUl0
ソフトウェアに関しては既にググるとか話にならないレベルでAIが有能なんだがw
仮に使うやつに問題点を言語化できる知能がないバカだっとしてもまったく問題ない
動作しないコードを貼り付けて期待する内容をセットで質問すれば動作するコードを複数候補用意してくれる
そしてそれをコピペして実際に期待した動作だった場合はその結果を伝えればなぜ動作したのかその理屈の要点をまとめて教えてくれる
実際開発現場では既にレビュアー、メンター、ペアプログラミングという工数がかなりかかってプロジェクトの人月を圧迫する工程が必要なくなったからな
まぁコードがかけない無能のお荷物にアサインされていた仕事がなくなって社内で失業者を産んでしまっているわけなのが皮肉すぎるがそれは日本の糞すぎるIT業界の闇だからAIの責任じゃないからな
2025/11/08(土) 15:48:26.92ID:UEvZH9380
消えろ
2025/11/08(土) 15:57:03.39ID:j29qIXzT0
元々大したことしとらんし
ちゃんとした要件定義さえあれば、素直に設計して、素直にコード書けばいいだけ
問題はちゃんとした要件定義が作れないこと
2025/11/08(土) 16:18:25.22ID:h1/SFRUl0
ほんそれw
日本は一部上場企業の案件ほど要件定義や仕様書が本当に毎日変わるからな
客の頭が悪すぎるんだがそれを許して実際に開発してる多重請負の末端に丸投げしてるもっと頭の悪い元請け・一次請けが一番の癌
まぁ今や元請けはほぼ間違いなく顧客の子会社でグループで金回してるだけの無能どもが要件定義と仕様書作ってるからな
そりゃIBMですらお手上げが何度も契約破棄してプロジェクト放棄して逃げ出すってわけ
2025/11/08(土) 16:22:39.92ID:hLdTjmeR0
なんかえらいしゃべるな
2025/11/08(土) 16:28:15.90ID:j29qIXzT0
海外だと自分とこで使うシステムは自分で作るんだよな
日本は何故か他社に丸投げしてしまう
そのせいで伝言ゲームで違うものができるし金も時間も無駄にかかる
誰が見ても判る不便なUIやバグがいつまでも直らない
2025/11/08(土) 16:40:01.82ID:h1/SFRUl0
だって日本の場合はゼネコンのビジネスモデルをそっくりそのまま模倣した完全に終わってる業界だからな
日本の開発最大手が親方日の丸の富士通とNECなのもゼネコンとまったく同じ
結局は利害関係者の間で金を動かしてるだけで納期が伸びれば伸びるほど儲かるってわけ
日本のソフトウェアのUI/UXやデザインが未だに20〜30年前と変わらず酷くて中国に20年遅れてるって言われる理由って誰もそんなの気にしてないから
もっというと出来が悪くて使い難いほど機能追加や保守でより予算が増えて利益がでるからな
未だに人海戦術なのも本当に人月を増やすただそれだけのためだからな
単価の高い有能なPGほど邪魔でしかなくて安い無能を多く欲しがる理由ってそういうこと
これでまともなクオリティの成果物になるわけないってわけ
2025/11/08(土) 16:45:43.37ID:j29qIXzT0
巨大なシステムまで自分で作れとは言わんけど、
webのデザインまで他人任せだからな
あんなもん一人で作れる

昔はPC得意な人が本業とは別にやってた
やっても評価されないのでやらなくなった
2025/11/08(土) 20:40:43.60ID:T50+VgE30
いまだにゲームパッド入力を出力することもできないのは
技術的に難しいの?
2025/11/08(土) 20:43:55.21ID:j29qIXzT0
確かにやって欲しいな
android用のbluetoothのコントローラをwindowsに繋ぐと、デフォルトでは何も入力されない
関係ないコードが発生して無視されてる
それを何かのキーにマッピングするだけなのに、取得してくれる奴がいない
2025/11/08(土) 22:50:39.35ID:MHy4PrWq0
>>919
ゲームパッド?
というと?
2025/11/08(土) 23:08:05.31ID:qfU3Z3g10
Joy1を発生させたり入れ替えたり
2025/11/09(日) 00:05:41.42ID:sPGQ/r9/0
>>922

やってるけど?
2025/11/09(日) 09:06:01.52ID:ASql/tzc0
なに言ってんだこのクエスチョンが必殺技だと思ってるバカ
2025/11/09(日) 09:09:48.41ID:r36OP+z90
構ってもらえたらなんでもいいんだよ
特に知識は無い
2025/11/09(日) 12:58:44.80ID:kNsV11o20
ゲームはチートが問題になってるから
チート対策でAHKが出力できないよう技術的に難しくしてるんでは
技術的に難しいができなくもないんでは
2025/11/09(日) 15:04:52.69ID:+rK0sDiu0
技術的に難しいというか、Windowsにはソフトウェア的にパッドボタンを押下するという仕組みがありません
通常は各アプリが独自に、xinput1_◯.dll(XInput)やdinput_x〇.dll(DirectInput)などのライブラリを利用して
パッドの情報を随時読み取って処理しますが、これらのライブラリはパッドに対して基本的に読み取り専用であり
入力系の動作はフィードバック機能が搭載されているバイブの作動しかできません

AHKでもこれらライブラリを利用することで、物理的な入力を阻止することはできませんが、読み取り値を元に分岐するスクリプトを動作させることは可能です
ちなみに、DirectInputの方は標準対応してますが、XInputは対応していないので、値の読み取りスクリプトを自作するか、別途XInput.ahkなどを利用する必要があります

擬似的なパッドボタンの押下には
改変したdllを使用して、アプリがパッドの状態を取得する際にインターセプトする方法(x360ceVer3)か
ソフトウェアレベルからの操作が可能な、仮想コントローラードライバ(vJoy、ViGEmなど)が必要になります
前者の方法でAHKを介入させることは、可能ですが現実的ではありません
後者はAHK-vJoy-Libraryなどの古いライブラリが存在し、いくつか紹介しているサイトもありますが
一般的なAHKスクリプトからすると難易度は割と高めになりますし、ドライバ関連は環境にもよるので
そこまでしてAHKでやる必要があるのか?という話になります
2025/11/10(月) 21:32:41.84ID:BqoaTABp0
あまり深く考えずにX360CE(Ver4、仮想コントローラ型)など使っていたが、確かにそういう事になるねえ…
まあAHKはジョイスティックまわりはほとんど変わらずXInputはXInput.ahk使うことになってる感じなのは
そもそもあまり重要視してないような気もするけど
2025/11/10(月) 21:45:15.72ID:JBCDjO7v0
>>928
windows11で、
Aボタンでwindows決定とかを無効にできないのかね?
2025/11/11(火) 12:54:41.54ID:IRe9ejMm0
外部input全部対応してるツールは過去ログにUCR.exeと書いてあったな
githubにあるよ
2025/11/11(火) 21:33:51.69ID:d75LSEnV0
この形式にしてAI丸投げするのありやな

https://i.imgur.com/6GziWq5.png
https://i.imgur.com/JNzBWZP.png
2025/11/12(水) 21:39:11.64ID:azG0U9Vb0
>>929
XInputコントローラ入力が、スタートメニューや設定などでの操作になってしまうという機能の事だとすると、
無効にするのはむずかしいように思う(これは一般のアプリでは働かないので、自分は気にしないことにした)
2025/11/12(水) 21:42:55.56ID:lBWlIRSJ0
>>932
そうそう
設定ウィンドウで、コントローラーのボタンを押すと、勝手に決定とかになっちゃう

自分で独自の操作をしたいのに
レスを投稿する

レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。