24/09/09 12:40:12.21 7DV4cvxS0.net
classは名前がかぶるとエラーが出る
global変数は名前がかぶってもエラーが出ない
401:名無しさん@お腹いっぱい。
24/09/09 21:25:23.31 hlw0c20n0.net
座標軸をx,yでglobalに格納しているようなやつがたまにあるけど
ああいうの見ると恐ろしくなるね
402:名無しさん@お腹いっぱい。
24/09/14 18:47:12.30 D48CtUpU0.net
初めてclass作ったけど
おじさん達が「classはスカートの丈じゃ。長すぎても短すぎてもいけない」とか言ってる意味がやっとわかったよ
403:名無しさん@お腹いっぱい。
24/09/15 19:50:00.48 fUvoWpAS0.net
環境
Win10Pro64bit
AHKv1
NeverwinterNightsっていう古いゲーム
sc7B & q:: m ;; map
で無変換+q呼び出すと
mが押されてマップが表示されつつ
qも押されて左移動してしまう
こんな挙動するアプリって今まで見たことないんだけど
何か対処法ある?
404:名無しさん@お腹いっぱい。
24/09/15 20:06:05.91 25mPuJUO0.net
v2ならsc7B & q::send "m"を試す価値あり
405:名無しさん@お腹いっぱい。
24/09/21 10:25:50.84 +1Aedhid0.net
qは~qと書いておくべきでは?
406:名無しさん@お腹いっぱい。
24/09/22 12:12:37.82 kO3DiDhw0.net
最近v1からv2に以降しておおむね満足、なんだが…
webブラウザでズームが簡単にできるようにhotifで対象限定しつつMButtonをContorolにリマップしてる状態で
他のアプリでホイールクリックしたときにContorolのキーダウンだけ発行されるときがあってえ?てなった
ホイール押し込みながらホイール回転の二つをそれぞれリマップするように変えて回避はできたがなんかもやっとする
407:名無しさん@お腹いっぱい。
24/09/29 16:50:20.12 zqsiEfqj0.net
sendでControlのDownとUpを書いてその間にホイール操作を書かないと結局不具合出たわ
まあv2にして困ることはないでFAかな
408:名無しさん@お腹いっぱい。
24/09/29 17:37:16.05 FrKuG+9e0.net
v2でsendのデフォルトモードがinputに変わったせいで、移植の際に
思わぬ不具合が出ることがある
元のv1のソースを読み解いて、v2側で適宜正しいモードで指定すれば
きちんと動作するようになるが、気づかないと沼る羽目に
409:名無しさん@お腹いっぱい。
24/09/29 17:43:44.15 NR3WdkDN0.net
>>399
どういうシチュエーションで不具合?
具体的に
410:名無しさん@お腹いっぱい。
24/09/29 17:55:01.87 FrKuG+9e0.net
そうねえ、最近だと連射系のスクリプトかな
eventだとキー1回ごとに処理されるから連射停止に即座に反応するんだけど
inputだと高速連射させるとアプリとCPU負荷の状態によってはによっては入力しっぱなしになる
フォーラムを色々見てみたら、割とあるみたいで連射はeventで書くのが暗黙らしい
411:名無しさん@お腹いっぱい。
24/09/29 22:16:10.34 NR3WdkDN0.net
>>401
そうなんだ
連射とかやらないから遭遇してないわ
今のところ、v2で困ることはないな
412:名無しさん@お腹いっぱい。
24/09/30 03:23:02.42 sWki31Ev0.net
まだv1使ってるの俺だけ?
v2の挙動分からなくてスクリプト用にずーっと使ってる
413:名無しさん@お腹いっぱい。
24/09/30 03:40:26.95 dXZf0Qg/0.net
Windowsの使い方にもよるんじゃない?
以前に作ったスクリプトで事足りてるからv1のまま使ってる
スマホやタブレットを使う比率が高いかもしれんけど
414:名無しさん@お腹いっぱい。
24/09/30 06:03:36.77 LOS0OEEa0.net
AutoHotkeyの使い方5ーウィンドウ・ソフトごとに動作を変えるー | 生焼けプログラマーの雑記帳
URLリンク(namayakegadget.com)
長年使っていながら気付かなかったこの挙動
これでようやく眠れる
415:名無しさん@お腹いっぱい。
24/09/30 10:54:11.72 B6OgheLw0.net
石破が数学とか物理はそもそも問題が理解できず白紙答案と言ってたけど
gendai.media/articles/-/138296
頭が固い文系脳なんじゃねーの?
416:名無しさん@お腹いっぱい。
24/09/30 11:02:04.98 GcmeQ9l90.net
MouseGestureL使ってるからまだv1
417:名無しさん@お腹いっぱい。
24/09/30 15:07:00.91 LtmJV+xI0.net
>>407
お前はオレか!?
418:名無しさん@お腹いっぱい。
24/09/30 15:29:16.61 ripDtC5Y0.net
MGLはフォーラムでユーザーの一人に手伝うからv2に移植してくれと言われて、
今の作者がv2にするつもりはないと断ってたからな
前任者から引き継いだソースがベースで、すべて自分が掌握しているわけではないから、
分からんでもないが、v1がいつ唐突にサポート切られるか分からんし
裏で移植を進めていることを願いたい
419:名無しさん@お腹いっぱい。
24/09/30 19:21:20.59 PF1hAvOv0.net
v1からv2へ移行したけど
手持ちのまあまあの大きさのスクリプトの移植はコンバータを使ってもちょい大変ではあった
420:名無しさん@お腹いっぱい。
24/09/30 19:44:16.46 jvQxSkbk0.net
NGLで手伝い申し出た人いたっけ。まあ、作者がv2対応を考えていないなら同じことか
Clipboard Historyも使ってるし、これらを自力でv2仕様にできるとはとても思えんから、まだ当分v1だなぁ
いつの間にかvectorに復活してたenthumbleくらいのならどうにでもできそうというか、
あれをわざわざ使わなくてももっと自分好みにしてるが…
421:名無しさん@お腹いっぱい。
24/09/30 20:20:03.96 VJjKz+c40.net
>>410
コンバーターって有料のしか見つからないんだけど無料のある?
422:名無しさん@お腹いっぱい。
24/09/30 20:35:58.71 PF1hAvOv0.net
>>412
URLリンク(github.com)
私が使ったのはこれですが
説明にある通りある程度自力での修正が必要とされる
423:名無しさん@お腹いっぱい。
24/09/30 22:04:14.67 bByHvbp/
424:0.net
425:名無しさん@お腹いっぱい。
24/09/30 22:06:00.97 bByHvbp/0.net
>>412
有料って?
Quick AHKv2 Converter?
426:名無しさん@お腹いっぱい。
24/09/30 22:11:51.18 M1bCViDB0.net
>>407
お前はオレか!?
427:名無しさん@お腹いっぱい。
24/09/30 22:27:30.37 3qcKV69w0.net
つーか、自作のスクリプト類を v1 → v2 に完全に置き換えるとかってのでもない限り、
AHK の v1 と v2 の両方をインストールしときゃそれでおk ちゃうか?
428:名無しさん@お腹いっぱい。
24/09/30 23:21:41.37 1fWbsl/T0.net
拙者は自作のスクリプトの規模がまだ小さいうちに移行すべきと判断しました
古参の方は大変ですな
429:名無しさん@お腹いっぱい。
24/10/01 01:44:06.80 HV37rj8W0.net
>>415
それです
>>413は知らなかった
WinGetTitleでタイトルの取りこぼし多数あるんでv2に移行すれば幸せになれるかな?と思ってるんですけど移行面倒臭すぎて
併用試してみます
430:名無しさん@お腹いっぱい。
24/10/01 12:44:42.33 lRpho0BS0.net
取りこぼしって、AHKの潜在的なバグじゃなくて
正規表現の記述の甘さなんかくるフィルタリングの問題じゃなかろうか
431:名無しさん@お腹いっぱい。
24/10/01 13:19:54.22 dwrWdzvE0.net
>>420
ブラウザのタイトル取得してクリップボードに入れてるんですけど5%ぐらいの確率で空になってしまいます
432:名無しさん@お腹いっぱい。
24/10/01 13:25:15.33 5grOXHgQ0.net
>>421
空の場合にもう一度繰り返す処理を入れればいいだけ
433:名無しさん@お腹いっぱい。
24/10/01 13:31:16.12 2QxI47PG0.net
確率とか言ってないで再現性の検証しなよ
434:名無しさん@お腹いっぱい。
24/10/01 13:36:09.34 lRpho0BS0.net
>>421
タイトル取得かクリップボードへの送信のタイミングが早すぎるのでは?
各アクション間に200msくらいウェイト入れて様子見てみるといい
問題なければ100msくらいに下げてまた様子見る
435:名無しさん@お腹いっぱい。
24/10/01 13:43:42.86 lRpho0BS0.net
一応、念のために書いておくけど
ウェイトってsleepのことね
436:名無しさん@お腹いっぱい。
24/10/01 14:40:50.95 FvxXaQDC0.net
ウェイト(sleep)を知らない人いるのかなっていう気もするがいるんだろうな
AHKはあらゆる場所でsleepを入れないと正常に動かない
1行ごとにsleep(1秒)を入れれば安定するが遅くなるジレンマがある
これは仕様
437:名無しさん@お腹いっぱい。
24/10/01 14:45:22.15 FvxXaQDC0.net
> Send "abcdefghijklmnopqrstuvwxyz"
> MsgBox "msg"
> 途中までしか送信が入力されないアプリがある
> おかしい
前に投稿したレスだがSendでさえ正常に動かない
438:名無しさん@お腹いっぱい。
24/10/01 14:52:55.41 HmNXYxxa0.net
>>426
sleepって全体巻き込んで止まるイメージあるから使おうって発想なかったわ
439:名無しさん@お腹いっぱい。
24/10/01 15:08:03.86 dwrWdzvE0.net
>>422
ブラウザから取れない時はURL返すからそれ以外になったらループ抜けてねってやってる
空白処理入れたら無限ループみたいな症状出て昔鬼ごっこしたけど諦めた
仮想マシン上でやってるんだけど全く出ないマシンと出まくるマシンあって意味分からん
>>424
sleep,4000入れてる
440:名無しさん@お腹いっぱい。
24/10/01 15:26:59.62 lRpho0BS0.net
直接の原因でないにしろ、4000って入れすぎでしょ
441:名無しさん@お腹いっぱい。
24/10/01 15:58:35.70 qvg844/u0.net
4秒止まったらストレスになりそう
442:名無しさん@お腹いっぱい。
24/10/01 16:57:41.65 oBJ+4kyU0.net
単にこういうことじゃないの?
v2 だと try catch で WinGetTitle のエラーハンドリングはできるけど。
WinGetTitle - Syntax & Usage | AutoHotkey v1
URLリンク(www.autohotkey.com)
> Remarks
> If there is no matching window, OutputVar is made blank.
443:名無しさん@お腹いっぱい。
24/10/01 17:17:10.42 dwrWdzvE0.net
>>430
元々500で
444:駄目だったからどんどん伸ばしてった >>432 ブラウザ開きっぱなしで新しいタブでページを開くだからブラウザが無いことはありえないんだけど何故か見つからないことになってしまってるのかな 422さんの言うように空の場合またループに戻すことやってみます
445:名無しさん@お腹いっぱい。
24/10/01 17:57:05.29 AxKysytZ0.net
WinGetTitleの前にWinExistとかでチェックはしていないですか
してないならば、WinExistで見てみることで何かわかるかもしれないな
446:名無しさん@お腹いっぱい。
24/10/01 18:07:44.77 C+MHvTF60.net
>>419
WinGetTitleの取得の成否にSleepの有無は関係ないかと思います
必要な情報がないので推測ですが、WinGetTitleの取りこぼしと言うのはウィンドウが見つからないとか取得に失敗しているのではなく
タイトルのない別のウィンドウを取得しているだけだと思います
AHKのウィンドウ指定では条件に当てはまるウィンドウが複数存在する場合、Z-Orderが若い方が優先され対象となります
ブラウザがChromeやEdgeであれば、ポップアップウィンドウのクラス名と実行ファイル名は同じになるので
例として、F1:: MsgBox(WinGetTitle("ahk_class Chrome_WidgetWin_1 ahk_exe chrome.exe"))
のような指定では実行時にコンテキストメニューやマウスオーバーによるツールチップのようなポップアップウィンドウが存在する場合、そちらが優先されるので、結果は空文字になります
これを回避するためには、WinGetListで該当するウィンドウのHwndを全て取得した後、ウィンドウスタイルで絞り込むなどの方法が必要になります
ついでに、ウィンドウ指定について述べておきますが、Chromium系のクラス名は通常「Chrome_WidgetWin_1」であるため、クラス名のみの指定では他のアプリがヒットする可能性があります
また、>>405で紹介されている所のようにahk_exeだけの指定では、DetectHiddenWindowsがオフであっても、アプリによってはサイズが0,0のサブウィンドウが存在したり
マルチプロセスによるウィンドウ内ウィンドウがヒットしたりする可能性もあるため、注意が必要です
具体例として、エクスプローラーの指定が"ahk_exe explorer.exe"では正常に動作しませんが、これはタスクバーとProgram Manager(デスクトップ)もexplorer.exeによるウィンドウであるためです
447:名無しさん@お腹いっぱい。
24/10/01 18:08:30.09 C+MHvTF60.net
>>426
あらゆる場所にSleepがないとまともに動作しないなんて仕様はありませんし、Sleepが必要な場合はほとんどがAHK側の問題ではなく、アプリ側またはシステム上の問題です
また、Sleepが必ずしも動作の安定に繋がるとは限りません
0以上のSleepが実行された場合、CPUのタイムスライスの割当てが次のスライス以降となるため、AHKに限らず他のスレッドによる割り込みが発生しやすくなり
コードの実行結果が一定ではなくなるなどの可能性が出てくるので、動作上でSleepが必要な場合は明確な意図と効果を伴って使用すべきです
>>427
おそらくアプリ側のメッセージ処理か入力処理の問題なので、とりあえず
SetKeyDelay(, 50)
SendEvent("abcdefghijklmnopqrstuvwxyz")
で入力が正常に行われるか試してみてください
448:名無しさん@お腹いっぱい。
24/10/01 18:14:22.46 lRpho0BS0.net
>>433
話を総合すると、仮想環境で動かしているにしてもだよ
500msのsleepで動かなくて、4000msだと95%の確率で動くってことでしょ
どういうコード書いているのか知らんけど、ちょっと挙動がおかしいよ
449:名無しさん@お腹いっぱい。
24/10/01 18:20:25.22 dY8/Ql770.net
クリップボードの中身を監視したら?
450:名無しさん@お腹いっぱい。
24/10/01 18:43:44.20 dwrWdzvE0.net
>>435
詳しい解説ありがとうございます
ブラウザはPale moonと言うfirefoxベースのブラウザです
ツールチップ不具合身�
451:ノ覚えあります WinGetList試してみます
452:名無しさん@お腹いっぱい。
24/10/01 19:42:28.90 osCUHTkq0.net
>>439
もしかして、最近のアップデートで?
AHKじゃなく、Firefoxの問題
453:名無しさん@お腹いっぱい。
24/10/01 20:38:22.05 C+MHvTF60.net
>>439
Pale Moonは使用してないので正しいか分かりませんが
FireFox系ならメインのウィンドウクラスは「MozillaWindowClass」
ポップアップウィンドウのクラスは「MozillaDropShadowWindowClass」なので
WinGetListを使わずともクラス名まで指定すれば区別できると思います
逆にクラス名で指定しているにも関わらず、タイトルが取得できないことがある場合は別の所に原因があります
454:名無しさん@お腹いっぱい。
24/10/01 21:19:00.80 HV37rj8W0.net
>>440
いえ前からです
>>441
WinGetTitle,palemoontitle,ahk_class MozillaWindowClass,
WinActivate,%palemoonTitle%
455:名無しさん@お腹いっぱい。
24/10/01 21:19:20.25 HV37rj8W0.net
ごめんなさい書き直します
456:名無しさん@お腹いっぱい。
24/10/01 21:23:50.57 HV37rj8W0.net
途中で誤爆すみません
>>441
今はブラウザにアドレス送ったあとで4秒待ち、
WinGetTitle,palemoontitle,ahk_class MozillaWindowClass,
WinActivate,%palemoonTitle%
でタイトル取得、
Ctrl^sを送ったあとで4秒待ち、
WinGetTitle,savetitle,ahk_class #32770,
IfInString, saveTitle,Save
でSaveが含まれた保存ダイアログが出てくるのを待ち、Enterキー送ってます
457:名無しさん@お腹いっぱい。
24/10/01 22:11:08.20 C+MHvTF60.net
>>444
palemoonのウィンドウタイトルが取れていないのではなく、ダイアログ待ちで別のダイアログがヒットしているような気がします
とりあえず、開いたウェブページを保存するという挙動で良いのであれば、以下のような方法で良いと思います
F1::
; Run, %URL%
; ここにSleepを入れるか、完全にページの読み込みを待つのであれば、ImageSearchかブラウザ系のライブラリ、またはAccかUIAなどのライブラリを使用する必要があります
ControlSend, ahk_parent, ^s, ahk_class MozillaWindowClass
WinWaitActive, Save ahk_class #32770 ahk_exe palemoon.exe ; 実行ファイルがpalemoon.exeではない場合変更してください
; Send, {Enter}
MsgBox, テスト
Return
458:名無しさん@お腹いっぱい。
24/10/01 23:54:53.14 V0wY9dtV0.net
>>421
ブラウザのタイトルとは、ウェブページのタイトルのこと?
ウェブページのタイトルがセットされるタイミングは固定されていないので、
自分で監視する必要があるよ
JavaScript で動的にタイトルをセットしているウェブページもあるし
459:名無しさん@お腹いっぱい。
24/10/02 04:36:36.17 I/2evcvZ0.net
>>441
>>445
たびたびコードまで書いてアドバイス頂きありがとうございます。
保存先が色々異なるのでそのまま保存だと不都合が出てきてしまいます
WinGetTitleでMozillaWindowsClassで取り、
タイトルが空白で無いこと、Urlで無いこと、前のアドレスと同じでないことをまず確認して
1 Ctrl^s送出
2 4秒後待ってSaveのテキストを含む#32770のダイアログがあることを確認し、Ctrl^cでクリップボードにコピー
3 クリップボードを保存先フォルダ名とクリップボードに結合
4 クリップボードを禁則文字チェック←ここでhogehoge.com/hoge/hoge/などの禁則文字で保存時々嵌まってエラーMsgbox出力
5 禁則文字が無ければCtrl^vとEnterキー送って保存してます
多分2の時にChromeやFirefoxなどのブラウザでタブにマウスを合わせた時にWebpageタイトルが表示される小さなテキストをWindowと勘違いして空白か古いままのクリップボードを返してるだと思います
教えていただいたWinGetListなのですがVer1の場合、WinGetTitleでできませんか?
SpyかけてみたらSaveダイアログはMozillaDropShadowWindowClassではなく#32770と表示されます
こちらがアクティブになってからクリップボード操作やってるつもりなのですが時々コケます
>>446
Webページのタイトルです
でもリダイレクトはありますが途中でタイトルが変わるサイトではありません
リダイレクト対策も兼ねて長めにSleep入れてます
460:名無しさん@お腹いっぱい。
24/10/02 05:32:28.13 Iof94shX0.net
WinGetListで複数のWindowを全部列挙してウィンドウスタイルでマスクするようにしないと特にブラウザなんかは正しい動作しないぞ
461:名無しさん@お腹いっぱい。
24/10/02 07:28:11.75 bDszAASW0.net
Chrome なら、拡張機能 AutoControl が使いやすいんだけどね。
JavaScript で記述できるし、ページの読み込みイベントも拾ってくれる。
AHK で4秒待つとか、実現できてもスッキリしないよね。
462:名無しさん@お腹いっぱい。
24/10/02 13:29:33.86 g4durnG80.net
リマップにしか使ってないけどv2に移行したほうがいいの?
たとえばキー押しっぱなしがなくなるとか安定性が高くなってるなら移行していいかと思ってる
463:名無しさん@お腹いっぱい。
24/10/02 14:36:41.30 Iof94shX0.net
一部V2にしかない機能もあるので、過去の遺産はV1のまま使い
改修が必要なものや新規に作るものはV2にしてる
464:名無しさん@お腹いっぱい。
24/10/02 18:00:55.97 Nya46nx90.net
前スレの225は事実
> v2はメリットしかない
> v1のヘンタイ構文は少しでもプログラミング経験がある人なら発狂して精神に異常をきたす
> v2に移行すれば精神が安定してコードを量産するようになる
リマップにしか使ってないなら移行してもメリットはない
スレでこれだけはやめてっていうのがv2を使えばいいのに使わずv1のヘンタイ構文を質問してくること
v1なんか触ってないっていう
465:名無しさん@お腹いっぱい。
24/10/02 19:08:37.05 Za7Y0ZGq0.net
>>447
ウェブページを保存する際にメインブラウザからURLをpalemoonに渡して(またはその逆)保存しているという使い方をしていると推測します
そうであるなら、まずはWinGetTitleなどのコマンドのウィンドウ指定は全て ahk_class MozillaWindowClass ahk_exe palemoon.exe
のようにクラス名とExe名を併記するように指定してください
以前にも書きましたがFireFox系であればこの件についてはWinGetList + スタイルによる絞り込みは必要ありません
ちなみにv1のWinGetListは WinGet, OutputVar, List, WinTitle という記述になり、OutputVar1のように疑似配列として扱います
そもそもとして、ウィンドウタイトルの取得の目的が保存名に指定するためなのであれば、ウィンドウタイトルを取得する必要はないと思います
保存ダイアログのクラス名が#32770という事はWindowsの標準ダイアログが呼び出されているだけなので、ControlGetText、ControlSetTextなどが使用できます
通常であれば、ウェブページの保存名の初期値は禁則処理された状態のページタイトル + 拡張子がデフォルトなので、変更が必要な場合こちらを取得して改変したほうがスマートです
つまり、WinGetTitleも必要なければ、途中でコピペにウェイトが必要なクリップボードの操作も必要ないので、余計な要因が介入してくるのを減らすコーディングが可能と言う事です
全体の流れとしては下記のように出来るはずです
; Run, [palemoon.exeのフルパス] %URL%
; Sleep, 1000
ControlSend, ahk_parent, ^s, ahk_class MozillaWindowClass ahk_exe palemoon.exe
WinWaitActive, Save ahk_class #32770 ahk_exe palemoon.exe
ControlGetText, save_title, Edit1, ahk_class #32770 ahk_exe palemoon.exe
; 保存先を手動で変更するならここでsave_title内を編集出来るような処理を入れる
; 既存のフォルダがないとダイアログのEdit部分でパス指定できないのでとりあえずMyDocument\ウェブページ\にsave_titleから拡張子を除いたフォルダを作成
FileCreateDir, % save_path := A_MyDocuments "\ウェブページ\" RegExReplace(save_title, "i)\.[^\.]+?$")
ControlSetText, Edit1, % save_path "\" save_title, ahk_class #32770 ahk_exe palemoon.exe
; Send, {Enter}
466:名無しさん@お腹いっぱい。
24/10/02 19:46:58.04 acuRfLjr0.net
>>452
触ってる人が答えれば良いと思うんだけど、なんでそんなに食ってかかってんだ???
467:名無しさん@お腹いっぱい。
24/10/02 20:51:31.41 M9c5GeZ+0.net
>>450
安定性とかは変わらないんじゃないだろうか
現在使っているv1のスクリプトを編集せず使い続けるだけなら、移行は必要ないと思う
編集・新規作成の必要が生じたときに移行すればよいんじゃないだろうか
468:名無しさん@お腹いっぱい。
24/10/03 00:16:46.17 Jt0Di29D0.net
>>451
V2にしかない機能とは?
利用価値のあるもので
469:名無しさん@お腹いっぱい。
24/10/03 00:54:28.74 Tz6rTMiT0.net
UTF8ファイル読み込む時とかBOMの有無とかV1だと制限があった気がする
470:名無しさん@お腹いっぱい。
24/10/03 01:09:21.08 WYl35//N0.net
>>456
URLリンク(ahkscript.github.io)
新機能のご紹介
新しいディレクティブ
471:名無しさん@お腹いっぱい。
24/10/03 02:42:29.78 Jt0Di29D0.net
>>457
そうなんだ
最近v2に移植したわ
BOM付きで
472:名無しさん@お腹いっぱい。
24/10/04 03:38:03.71 NhPmv6xu0.net
>>453
たびたびありがとうございます
palemoon本体には教えていただいたコードできちんと操作できました
ダイアログへControlGetText,SetTextやコンボボックスの選択はできるのですがボタン押したり、キー送出ができないです
これはSendコマンドでやるしかないでしょうか
ControlSend, ahk_class #32770 ahk_exe palemoon.exe,!y,
これだとAlt+!送られないです
473:名無しさん@お腹いっぱい。
24/10/04 18:36:12.70 V34s0CwZ0.net
>>460
パラメータの指定が間違っています
ControlSend [,Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]
!yを送りたいと言う事であれば、たぶん上書き確認のダイアログだと思うのですが
この手の確認ダイアログは、アクティブ最前面で表示されるので単に Send, y でも大丈夫なはずです
ControlSendでボタンを押すのであればControlに 「Button1」 などのClassNNか 「はい(Y)」 などのテキストを指定してください
送るキーは{Enter}や{Space}などでも構いません
ControlSendはWin32 APIによるGUI以外では、親ウィンドウに対してしか効果がないですが
Win32GUIの場合、フォーカスが対象ウィンドウの別のボタン等にある場合、大抵はフォーカスがあるボタンが指定したControlよりも優先されて押されます
YesNoダイアログの場合、初期状態では通常はNoにフォーカスがあるのでControlSendを送る前にYesにフォーカスをセットする必要があります
また、いずれにせよWinWaitで対象ウィンドウの出現を待ったほうが良いです
その際に、前に書いた時は省きましたがWinWait系のコマンドはタイムアウトを指定しておいた方が良いでしょう
まとめると下記のようになります。firefoxの部分は書き換えてください
; ファイルダイアログで保存を押した後に
WinWait, 名前を付けて保存の確認 ahk_class #32770 ahk_exe firefox.exe, , 2
if(ErrorLevel){
MsgBox, タイムアウトしました
Return
}
ControlFocus, Button1, 名前を付けて保存の確認 ahk_class #32770 ahk_exe firefox.exe
ControlSend, Button1, {Enter}, 名前を付けて保存の確認 ahk_class #32770 ahk_exe firefox.exe
474:名無しさん@お腹いっぱい。
24/10/04 19:19:10.83 fR4T6nrD0.net
>>461
また詳しく教えていただきありがとうございます
出先なのであとでチェックします
名前をつけて保存ダイアログにSend,!sを送って保存しようとすると1%ぐらいの確率で保存ボタンにフォーカスが移るだけで押せないことがあるので嵌まってます
教えていただいたWinWaitのhelp見たらWinWaitCloseコマンドあったのでどちらも実装して試してみます
475:名無しさん@お腹いっぱい。
24/10/05 01:29:49.17 ffwymIic0.net
v2使ってみたらもう戻れないくらい便利です
ぐい周りは感動した
476:名無しさん@お腹いっぱい。
24/10/05 11:12:03.05 wFIatvKw0.net
指定のアプリ群をグルーピングして、それらだけまとめてキー操作を統一的に扱いたい
こんな要望を実現できるのはV2だけ
477:名無しさん@お腹いっぱい。
24/10/05 17:46:33.00 EvXhaPGA0.net
v2で文法がマシになったと聞いてドキュメント見たらif文の等価条件が=なのかよ
そこは==だろう
478:名無しさん@お腹いっぱい。
24/10/05 18:08:10.14 ABL2Y4hI0.net
==は既に使われているし、代入が:=なんだから
別に文句付けるようなことじゃないな
代入が=なら==で分かるけど
479:名無しさん@お腹いっぱい。
24/10/05 19:45:14.72 7uPQ3bfS0.net
v1もv2も==も等価条件で=と==の用途の違いは同じ
下手に変えるほうが混乱する
480:名無しさん@お腹いっぱい。
24/10/05 21:04:53.07 BfmCDP890.net
簡単にGUIが作れるからいいね~
そこに情報いれてデバッグ的なことも
481:名無しさん@お腹いっぱい。
24/10/05 21:20:26.81 ZqQVtnYk0.net
自分はデバッグにToolTipを多用してるわ
482:名無しさん@お腹いっぱい。
24/10/05 22:06:03.49 Em/TLP060.net
比較はだいたいCase Sensitiveの==を使っているなあ
それにあわせてNot equalもCase Sensitiveで書くと!==になるが…
483:名無しさん@お腹いっぱい。
24/10/06 12:24:53.26 7QdW2jH00.net
Enter::
WinClose,A
Return
こういう単純な処理の場合にreturnって必要ですか
484:名無しさん@お腹いっぱい。
24/10/06 12:57:01.02 1y8Ea0fn0.net
コパイロットにautohotkeyでディスプレイ切り替えの質問したらアナログな方法しか教えてくれなかったわ…
DisplaySwitch.exeなんて便利なコマンドあるんじゃねーか。
マイクロソフト製なくせにwindowsコマンド優先しないとか…
俺が学習することを優先したとか言いやがってAIはまだまだだな。
485:名無しさん@お腹いっぱい。
24/10/06 13:00:16.93 1y8Ea0fn0.net
>>471
AutoHotkeyのスクリプトで、単純な処理の場合でもReturnは必要です。Returnはスクリプトの終了を明示的に示すため、スクリプトの動作を予期せぬエラーから守る役割があります。
コパイロットより
486:名無しさん@お腹いっぱい。
24/10/07 00:02:46.97 cU7U0bdE0.net
>>471
必要
1行で書くなら return は不要
Enter::WinClose,A
v2 だと以下のように書けてとてもわかりやすい
```
Enter::{
WinClose('A')
}
```
487:473
24/10/07 08:46:31.72 7zfB35Dh0.net
コパイロットも1行では不要です、AutoHotkey v2では、ブロック構文を使うことでReturnを省略できます、だって
コパイロットよ、どっちなんだい
488:名無しさん@お腹いっぱい。
24/10/08 07:11:01.64 PJm4zAM/0.net
>>474
何も知らないなら何も言わないほうが良いぞ
馬鹿がバレるから
489:名無しさん@お腹いっぱい。
24/10/08 07:44:51.38 a+1T31eg0.net
新手の荒らしか?
490:名無しさん@お腹いっぱい。
24/10/08 11:24:24.22 g9vwOZ7j0.net
>>461
その後、色々試したのですが保存ボタンを押せないことが稀にあります
なのでLoopをかけて#32770がまだあったら2秒sleepかけて再度保存ボタンを押すのLoopを5重ぐらいにかけたらほぼノンストップで運用できるようになりました
実コードなど詳しい解説ありがとうございました
491:名無しさん@お腹いっぱい。
24/10/08 11:29:37.32 f7+Mss5f0.net
CPU利用率が高く処理が追いついてないときにWindowsはマウスやキーボードで行ったユーザー命令を無視する説ですべての説明がつく
492:名無しさん@お腹いっぱい。
24/10/09 12:32:31.05 cX4bOXdE0.net
これをAHKv2でどうやって実装すればいいじゃろか
直前に入力した単語を大文字にする
URLリンク(zenn.dev)
493:名無しさん@お腹いっぱい。
24/10/09 12:59:44.57 ljiV3D/d0.net
How to Describe a Person in English: Phrases For Appearance
494:名無しさん@お腹いっぱい。
24/10/09 13:47:02.71 EDPVs9XS0.net
>>480
真面目に実装しようとすると AHK だけじゃ無理(のはず)。
"autohotkey get text cursor position" あたりでググるか(多分 v2 でお手軽に
使えるリソースは見つからないと思う。cursesライブラリィみたいな巨大なもの
ならあったかな?)、
URLリンク(www.scintilla.org) が使�
495:ヲるエディタ環境なら、SciTE を DllCall 経由で使う。 「単語単位を適当でいいや」にするなら、"^{Right}"、"^{Left}" で代用。
496:名無しさん@お腹いっぱい。
24/10/09 14:10:59.27 Ni5X0cgM0.net
>>480
C-lを押すとVim scriptが動くようになってる
AHKv2でSend "^l"とすればいい
ショートカットキーでアプリ側のスクリプトが起動するようにしておく
497:名無しさん@お腹いっぱい。
24/10/09 15:50:52.36 jbkbVU700.net
AHKV1でtest_で始まる関数を列挙するってできる?
ソースコードをスキャンするというのはなしで
#include込みのすべてのソースコードを合体して文字列配列で取得する方法があるならそれでもいいけど
498:名無しさん@お腹いっぱい。
24/10/10 01:57:48.90 gju2+YZb0.net
>>480
んーむずかしいかー
とりあえず、
・IMEで文字列を選択して再変換
・普通に選択して置換 RegExReplace("asdf-fdsa-hauhntkl", "s).+", "$U{0}")
・エディタのマクロ
499:名無しさん@お腹いっぱい。
24/10/10 02:25:42.96 FDERPLBs0.net
>>480
>直前に入力した単語を大文字にする
これは例えばメモ帳使ってる時に実現したい、、、ってこと?
要するに『IMEが日本語入力状態だと思って書き込んだら英小文字が入力されていたので、再入力せずに直前の文字を日本語に直したい ※』
の日本語にするんじゃなく英小文字を英大文字にするってこと?
だとしたらかなり前の過去スレに ※ のv1用コード貼られてるからそれを改造すればいけそう
URLリンク(web.archive.org)スレリンク(software板)
の164-165
ちなみに個人的にこれ改造してv1で今も使ってる(MGLのプラグイン化して)
よく分からずレスしてるんでやりたいことと違ってたらすまん
500:名無しさん@お腹いっぱい。
24/10/10 12:40:28.96 ellHKC8G0.net
>>480
www.autohotkey.com/boards/viewtopic.php?f=83&t=132338
ちょっと前に見かけたこのライブラリを使えば出来るんじゃないかな? と思って、試しにいじってみたらそれっぽいことはできました
細かい検証とかはしていないので使用上の弊害などは分かりません
#Include XHotstring.ahk
XHotstring.ResetKeys := "{Left}{Right}{Up}{Down}{Next}{Prior}{Home}{End}{Space}{Enter}" ; 適用範囲をリセットするキー デフォルトでは{Space}{Enter}がなかったので追加
XHotstring(":*:(.+)@@", "$U1") ; 任意の文字列入力後、@二度押しで適用範囲内文字列を大文字に変換
>>484
AHKのプロセスメモリ内をスキャンすれば可能かもしれませんが、ソースコードの解析が一番簡単だと思います
Includeファイルについては#IncludeがあればInclude先もスキャンすれば良いだけです
v2なら特定クラス内のメソッドとかであれば列挙可能ですが、スクリプト全体から列挙する方法はv1と同様です
501:名無しさん@お腹いっぱい。
24/10/13 16:38:44.70 PDT1mwa30.net
MPRESSがもうダウンロードできなくなってるけど誰かくれんかね?
502:名無しさん@お腹いっぱい。
24/10/14 03:02:35.98 KcUraxAC0.net
USキーボードのCAPSLOCKキーをIME切り替えにしたいのですが、
CAPSLOCKをF14にした上で
;;;IME切り替え
F14::
send,!{vkC0}
return
で今まで切り替えていたのですが、IME切り替えがよくバグってALTキーが押しっぱなしにされてしまいます。
!{vkC0}を使わずにIME切り替えする方法ないでしょうか?
503:名無しさん@お腹いっぱい。
24/10/14 09:14:44.58 nKp0lMeM0.net
>>489
ちょっと記憶が定かではないけれど、その手の AHK での修飾キー押しっぱ問題は
AHK側だけでは確実な対処は無理ちゃうかったかな?
(たいてい CapsLock/LCtrl 入れ替えでハマるw)
他のツール類(Change Keyとか)で、通常のキーボードにはないキー(F13~F24)を
CapsLock に割り当てておいて、AHK 側ではそのキーに対する処理にするのが常道とか。
↓あたりでググってみれば、色々参考になるはず。
ahk key押しっぱなし - Google 検索
URLリンク(www.google.com)
504:名無しさん@お腹いっぱい。
24/10/14 10:00:54.67 /NO+1EDo0.net
ime.ahk
505:480
24/10/14 15:20:19.95 nE+HVhlV0.net
>>487
おーすげー出来た
発火タイミングはどうすればいい?
大文字にしたかった場合は大抵事後だから
506:名無しさん@お腹いっぱい。
24/10/14 18:55:17.01 EkA47qEQ0.net
>>488
www.autohotkey.com/mpress/
↑のmpress.219.zip
>>489
{vkF3}か{vkF4}を送ればいいはずです
>>492
発火タイミングと言うのがコードを実行する位置のことであれば
常駐が前提のスクリプトなので通常のホットキーやホットストリングと同様に、事前登録しておくと言う感じです
ただし、それらと違いclassなのでAutoExecute-Sectionに書くか、ホットキー内に書いて手動でやるかして、前もって1度実行されている必要があるだけです
507:名無しさん@お腹いっぱい。
24/10/14 19:00:08.71 gcJe/yFu0.net
>>493
mpressリンクありがとん🥺
508:名無しさん@お腹いっぱい。
24/10/15 16:22:01.12 ORDFOdoA0.net
パッケージマネージャー出来てた
URLリンク(github.com)
509:名無しさん@お腹いっぱい。
24/10/15 16:37:29.80 RhyIvNKJ0.net
>>495
↑
何これ?
510:名無しさん@お腹いっぱい。
24/10/15 17:10:13.39 1PWT48kg0.net
それはレスアンカーといって、そのレスがどの書き込みに対する返信なのかを明示するための書式です
511:名無しさん@お腹いっぱい。
24/10/15 18:45:30.71 G8EFpNqS0.net
質問をみるといつも思うのだが他者の労働力を搾取しようとするなとだけ
自分で調べて発表せよ
それが社会貢献
512:名無しさん@お腹いっぱい。
24/10/15 18:53:18.50 0VL5Czli0.net
>>496
なんの変哲もないgithubのページだから開いて翻訳して読んどき
513:名無しさん@お腹いっぱい。
24/10/18 22:59:14.66 ROfzVtWS0.net
質問させてください。
Enterを押した後にSpaceを押す機能を右ボタンに割り当てたいのですが、どうすればよろしいでしょうか?
Right::
Send, {Enter}
Send, {Space}
return
Right::
Send, {sc01C}
Send, {sc039}
return
どちらもメモ帳では動作するのですが、アプリケーション上では反応しません。
514:名無しさん@お腹いっぱい。
24/10/19 09:43:45.73 gTKdgegr0.net
メモ帳もアプリケーションなんですがね
それはともかく入力の受付はアプリごとに制御されているので
例えばinputしか受け付けないとか、高速入力できないように制限してあるとか
様々なケースがあるので試行錯誤するしかない
うまく動作しない謎アプリを晒さない限りそれ以上のことは何とも
515:名無しさん@お腹いっぱい。
24/10/19 14:41:27.03 lTux8SgV0.net
初心者だよね?
v2から学ぶべき
v1は忘れていい
516:名無しさん@お腹いっぱい。
24/10/19 19:23:02.29 zWBtD9Ow0.net
中身がAHKらしいクリップボード拡張ソフトを使っています。
定型文を入力するために独自のメニューを呼びし、
アクセスキーを使って入力し�
517:トいます。 例 「 挨拶文 (&A) | おはようございます | KeyStroke 」 呼び出したメニューには「挨拶文(A)」と表示され、 「A」を押すと「おはようございます」が出力されます。 動作自体は思い描いた通りなのですが、 アクセスキーである「(A)」もメニューに表示されるのを邪魔に感じています。 この「(&A)」の部分を「アクセスキーとして機能するがメニューでは非表示にする」 という方法があれば御教示いただけないでしょうか。 御存じの方がいらっしゃればお願いします。
518:名無しさん@お腹いっぱい。
24/10/19 20:06:36.72 rU9ISZOb0.net
英語なら&AisatubunでAに下線がつくだけで困らない
519:名無しさん@お腹いっぱい。
24/10/20 15:30:16.04 6yZvlGCd0.net
>>503
ClipboardHistoryのメニューはWin32 APIのTrackPopupMenuを直接DllCallで呼び出して作成されていますが
AHKの標準メニューも内部的にはTrackPopupMenuExを利用して作成されており
アクセスキーの指定やアクセスキーが下線が付いた文字として項目に表示されるのはAPIの仕様となります
アクセスキーは別データとして保持されているような物ではなく、項目名から動的に割り当てられるため
項目名から該当文字(&Aなど)を消すとアクセスキーとしては機能しなくなります
したがって、「アクセスキーとして機能するがメニューでは非表示にする」と言うのは仕様上両立できません
メニューの指定項目を選択できるようなホットキーを作成するか、別途メニューっぽいGUIを自作するなどすれば可能ではありますが
ClipboardHistoryの範疇から外れプログラミングの話になる上、どちらも簡単に出来ることではないですし労力に見合うとも思えません
520:名無しさん@お腹いっぱい。
24/10/20 18:38:03.74 pWjFMDrG0.net
>>505
詳しくありがとうございます。
目的の内容は実現できないことが分かったので諦めます。
奇妙な要望だと思われたかもしれませんが、
実は定型文のメニューを整形して(余分な空きを作って)、
格子配列の自作キーボードの物理配置と
定型文のメニューを視覚的に統一する方法を試しているのです。
これだと「アクセスキーは必須だが表示されると邪魔」になります。
動作的には全く問題ないので、
アクセスキーを小文字にするなどして気にしないようにします。
しかしソフト名の指摘もズバリでしたね。
クリップボード拡張ソフトは(PC歴約25年の間に)殆ど試しましたが、
ClipboardHistoryより優れたものは見当たりません。
作者さんに感謝しながら末永く愛用して行きます。
521:名無しさん@お腹いっぱい。
24/10/20 20:12:03.65 NnL5zIl20.net
autohotkeyの方が作者は存命だっけ? どっちだっけか
522:名無しさん@お腹いっぱい。
24/10/20 21:39:58.59 OVpuB1UH0.net
「ズバリでしたね」って回答者に対して逆に失礼だわ
たまたま知識と勘が鋭いから当たっただけで
本来は質問者がはっきりと、これこれこういうアプリでと名称を記載すべきなんだよ
クイズやってるんじゃないんだからさ
523:名無しさん@お腹いっぱい。
24/10/21 16:14:22.17 itWjFkQN0.net
> 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
524:名無しさん@お腹いっぱい。
24/10/21 18:04:15.39 ahR5PPfN0.net
>>508
下手にソフト名を書き込むと「宣伝」とか言われて
作者様に迷惑を掛けるかもしれないと思って自重しました。
二回目の書き込みは回答者様が確信を持って書かれていたので、
もうソフト名を隠す意味も無いと思いました。
クイズのようにスレッドの皆様を軽んじる意図は全くありませんので、
不快に感じたなら配慮が足りず申し訳ない。
525:名無しさん@お腹いっぱい。
24/10/21 18:29:08.01 aSze+Blp0.net
死んだらいやだな
526:名無しさん@お腹いっぱい。
24/10/22 11:24:57.05 ZS6EXbji0.net
>>510
木にすんな
厭味ったらしい書き方でいうなら >>508 の方がずっと底意地が悪い
527:名無しさん@お腹いっぱい。
24/10/22 11:54:57.12 gM/80aqV0.net
>>35
順番入れ替えてもおなじですか?
528:名無しさん@お腹いっぱい。
24/10/24 02:07:08.83 fvQei37C0.net
Clipboard Historyの話題が出たので、Runコマンドの外部プログラムとの連携について備忘録
pythonで文字列操作する場合
|| Run | python.exe ".pyのpath" | I O
pythonは、argparseを使わず、sys.stdin.readline().strip()で標準入力読み込みになる。
pyに入力が渡らずけっこうハマった。
Clipboard HistoryとAHKとの連携は、基本AHK側で処理してやりとりはファイル入出力した方が確実だった。
529:名無しさん@お腹いっぱい。
24/10/24 22:10:23.38 UIMUUpQt0.net
同じホットストリングをIME状態で分岐したいのですが、IME ONだけうまくいきます。
OFF時はどうやって書けばよいですか?
#if !IME_GET(1)
:*?:/11::""{Enter}{left 1}
#if
#if IME_GET(0)
:*?:/11::""{left 1}
#if
530:名無しさん@お腹いっぱい。
24/10/24 22:10:48.54 VLsa+vNJ0.net
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 キーがちゃんと送られなくなる。
どこが間違っているのかわからん!なんでや!
531:名無しさん@お腹いっぱい。
24/10/24 22:11:40.50 ElSGbcVY0.net
alt+xで無変換が出来なくなってしまいました
;;;altとXで無変換
SetKeyDelay, 0
!x::
SendPlay,{vk1Dsc07B}
return
何か足りないのでしょうか?
よろしくお願いします。
532:名無しさん@お腹いっぱい。
24/10/24 22:13:46.74 ogkMQ6UV0.net
HID Macros と Autohotkey を連携させようとしていて、
テンキーの+と-を、CtrlとAltoに割り当てようと考えています。
If ( tkey1down ) { ; Numpad1キーが押されているなら
If tkey16down ; Numpadsubキーが押されていれば
tkey1down := Hol
533:dDownKey2(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 が、このようには使えないのでしょうか? すいませんが、教えてください。
534:名無しさん@お腹いっぱい。
24/10/24 23:38:25.83 7NTt7BQj0.net
>>515
; IME On
#HotIf IME_GET() = 1
535:名無しさん@お腹いっぱい。
24/10/25 12:54:55.55 YNvUvHS90.net
#IfWinActiveで
Chrome YouTube
Firefox YouTube
こんな風にYouTubeで別の操作をしたい場合(例え話)
複数の条件を指定する方法を教えて欲しいです
調べた感じ論理演算子などは使えないみたいなんですが
536:名無しさん@お腹いっぱい。
24/10/25 13:12:23.99 iV6NPiWJ0.net
説明不足で意味がよくわからんけど
二つのブラウザで分岐させたいの?
537:名無しさん@お腹いっぱい。
24/10/25 14:18:53.43 fJbwAcE00.net
v2でIfWinActiveは削除された
#HotIfのクイックリファレンスにorが出てきたのはどう?
://ahkscript.github.io/ja/docs/v2/lib/_HotIf.htm
v1は手元にない
538:名無しさん@お腹いっぱい。
24/10/25 14:28:15.21 fJbwAcE00.net
言ってなかったけどクイックリファレンスで検索したらたいてい解決するw
539:名無しさん@お腹いっぱい。
24/10/26 17:14:17.46 0sWrnwL20.net
質問です。
ホットキー指定で~をつけると、イベントを乗っ取らずそのままシステムに通しますが
その後の処理で、システムに通さないよう分岐する方法はありますか?
イメージは以下のような感じです
~RButton Up::
MouseGetPos, mx, my, hwnd, ClassNN
if ( ClassNN <> "ListView321" )
return ; そのままシステムに通してなにもしない
; 以下コンテキストメニューを表示してシステムに通さない
540:名無しさん@お腹いっぱい。
24/10/26 17:48:36.53 f/FyL4ZB0.net
普通に ~ を外して if と else で分岐させればいいだけでは?
条件一致で RButton Up を送信する
541:名無しさん@お腹いっぱい。
24/10/26 21:42:35.85 VsCTIMnu0.net
範囲選択してスクリーンショットするアプリを使用しています。
左クリックのドラッグで範囲選択をします。
実現したいことは、「トリガー押下→範囲選択モードに移行(アプリ側で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
542:名無しさん@お腹いっぱい。
24/10/26 22:43:09.51 TWNlTM+70.net
while GetKeyState("LButton", "P")
continue
543:名無しさん@お腹いっぱい。
24/10/28 21:04:27.22 oZWBqLfk0.net
エクスプローラーで選択中のファイルが、特定の拡張子だったときだけサクラエディタで開きたいのですが、うまく動いてくれません。
どうすればよろしいでしょうか、、、
#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
544:名無しさん@お腹いっぱい。
24/10/28 22:44:52.71 kFEw7C+t0.net
初心者だよね?
v1はプログラミングに向いてないからv2を使ったほうがいい
545:名無しさん@お腹いっぱい。
24/10/29 00:42:08.82 4RMka5+D0.net
>>526
keywaitとgetkeystateを組み合わせる
;範囲選択が終わるまで待機
While (1) {
;条件式
keywait, lbutton, t1
if errorlevel and !getkeystate("lbutton")
break
}
546:名無しさん@お腹いっぱい。
24/10/29 18:35:33.51 sPxkJTnl0.net
V2でControlGet系がうまく動かないのですが、V1からコントロール指定の方法が変わったのでしょうか。
ControlGetHwnd("Edit1")
なら動きますが、
ControlGetHwnd("Edit1", "ahk_exe notepad.exe")
のようにウィンドウ指定を追加すると動きません。
WinGetID("ahk_exe notepad.exe")はちゃんと動いているようです。
お知恵をお借りしたく…
547:名無しさん@お腹いっぱい。
24/10/29 18:41:19.85 hnPx1uMc0.net
V1で挫折した〝2ストロークキー〟の再現、V2でチャレンジもワイには実現無理そうだ
548:名無しさん@お腹いっぱい。
24/10/29 19:06:03.91 Kw+83trt0.net
>>531
どっちも動く
549:名無しさん@お腹いっぱい。
24/10/29 19:11:41.70 YI7RT2/i0.net
>>531
Changes from v1.1 to v2.0 | AutoHotkey v2
URLリンク(www.autohotkey.com)
ControlGet - Syntax & Usage | AutoHotkey v1
URLリンク(www.autohotkey.com)
ControlGetHwnd - Syntax & Usage | AutoHotkey v2
URLリンク(www.autohotkey.com)
> Examples
> Retrieves the unique ID number of the Notepad's Edit control.
> editHwnd := ControlGetHwnd("Edit1", "ahk_class Notepad")
550:名無しさん@お腹いっぱい。
24/10/29 19:16:49.70 sPxkJTnl0.net
>>533
ありがとうございます。
GetWinIDと同じ文字列を入れてもControlGetはヒットしないです…。
WindowSpyで調べてはみたのですが…。
551:名無しさん@お腹いっぱい。
24/10/29 19:27:49.29 sPxkJTnl0.net
>>534
Hwnd用の変数に代入していますが、try catchでエラー側になるので関数の実行自体に失敗しているようです。
552:名無しさん@お腹いっぱい。
24/10/30 04:01:24.86 9hEpcvqU0.net
>>536
どこで何のエラーが起きているかは調べたんでしょうか
553:名無しさん@お腹いっぱい。
24/10/30 22:57:19.40 4Rqbhdzu0.net
v1
実行中のスクリプトを終了させるけど常駐は抜けない方法はないんですか?
一時停止したところから再開するPauseではダメです
554:名無しさん@お腹いっぱい。
24/10/30 23:55:03.62 pVOkQIaJ0.net
日本語でおk
555:名無しさん@お腹いっぱい。
24/10/31 06:34:01.22 z6U5GiBJ0.net
実行をしないけど実行するスクリプトを書きたいんだよ
556:名無しさん@お腹いっぱい。
24/10/31 11:30:10.59 tsE7QpNU0.net
常駐抜けたら困る事書いてその対処法聞いた方が早く無い?
557:名無しさん@お腹いっぱい。
24/10/31 12:49:19.11 dgQgfJQr0.net
つうか、どういうスクリプトを書いてるんだ?
通常ならそのスクリプトは常駐して、ホットキーなりで該当部分を実行・終了やろ?
558:名無しさん@お腹いっぱい。
24/10/31 12:52:41.51 50/hLkTs0.net
#Persistent
Exit
559:538
24/10/31 13:25:53.92 WM3lv07H0.net
ちょっと書き直しますね
AHKスクリプトを起動して
現在走らせている“マクロ”を
AHK自体が終了してしまうExitAppでもなく
一時停止であって続きから再開してしまうPauseでもなく
ホットキーで“停止”させるコマンドはないんですか?
560:名無しさん@お腹いっぱい。
24/10/31 13:46:04.86 HMo3f5sZ0.net
^a: 無限ループ
^b: {
StopHotkeyMacro "^a"
}
このようなスクリプト見たことない
^aに
if(Stopが押されたか) exit
を入れたらいい
561:538
24/10/31 13:46:33.17 WM3lv07H0.net
訊いておいて何ですけど、いちおう
Reloadでおおよそ目的は達成できました
厳密にはちょっと違うのだけど
要するに、AHK自体は常駐させておいて
マクロを何度も途中で止めては“最初から”走らせたりしたい、ということです
562:名無しさん@お腹いっぱい。
24/10/31 13:56:35.45 HMo3f5sZ0.net
ガチで日本語でおkな人だなあ
563:名無しさん@お腹いっぱい。
24/10/31 14:00:21.68 RLLG2ial0.net
Pauseから再開する時変数を初期化するとか
564:名無しさん@お腹いっぱい。
24/10/31 14:35:02.21 aPuhL2SK0.net
>>546
>>543が書いてくれてる
奴じゃダメなの?
んでスクリプト内で個別に用意して、都度実行するんじゃダメなの?
565:名無しさん@お腹いっぱい。
24/10/31 19:06:29.45 sY3xh/HA0.net
AltキーやCtrlキーが押しっぱなしになったままで再起動するしか解除できない問題が解決しない
566:名無しさん@お腹いっぱい。
24/10/31 22:12:04.31 eTpG3HPg0.net
>>550
いろいろ対策したが自分の環境では完全に再現しない方法がなかったので
修飾キーを離すまで送信しないが以下のように変えたら全く再現しない
v2の例
;HotkeyでSend()するもの(それ以外のHotkeyでは元々押しっぱなしにならない)は修飾キーの解放を待ってからSend()する
;Ctrl+RAltの場合
^RAlt::KeyWait("Ctrl"), KeyWait("RAlt"), Send("^{F4}")
567:名無しさん@お腹いっぱい。
24/11/02 10:02:48.47 VO0SaYC40.net
URLリンク(qiita.com)
のIME_GET()を使ってみたけど、常に0を返す
google日本語入力
修正版がある?
568:名無しさん@お腹いっぱい。
24/11/02 13:25:52.25 oCPKXR8t0.net
qittaやgithub issueでコメントしたらうざって感じだが5chだからコメントできるのか
おまかんじゃないの
569:名無しさん@お腹いっぱい。
24/11/02 17:01:18.37 ksuoUum40.net
なんかパソコン使ってると、フォーカスが一瞬他所に移る現象が発生してて
原因が分からなかったんだけど
これのスクリプトを一度でも起動したあとに(終了させても)上記の現象が発生するようになる気がする
そういうのない?
別にあやしいプロセス残ってるようでもないんだが
なんか裏でやってる?
570:名無しさん@お腹いっぱい。
24/11/02 17:43:41.14 8+i+pgjp0.net
普通はないけど、OSのほとんどの機能を制御できるので
全ソースを見ないことには、はっきりしたことは言えない
571:名無しさん@お腹いっぱい。
24/11/03 12:22:34.51 WH2YjwrV0.net
>>554
AHKそのものがフォーカス得てたりするかもね
他所がどこかとかは調べてないの?
572:名無しさん@お腹いっぱい。
24/11/03 13:06:37.37 M3d5vb9j0.net
何を言いたいのかよくわからんがインスタンスが立ち上がっていれば
スクリプトがロードされているわけで
573:名無しさん@お腹いっぱい。
24/11/04 00:38:32.71 IzVmTuGG0.net
#HotIf WinActive("ahk_exe aaa.exe") or WinActive("ahk_exe bbb.exe")
みたいな書き方すると、むちゃくちゃ不安定になるな
574:名無しさん@お腹いっぱい。
24/11/04 01:41:53.19 eJac1JqB0.net
ahk_groupならどう?
575:名無しさん@お腹いっぱい。
24/11/04 07:58:09.36 KFmL+5kO0.net
何だっけなぁ、ちょっと記憶があやふやだけど v2 が出た直後ぐらいに >>558 な感じで
スクリプトを書いたら全く期待度取りの動作をしなくて、別構造で書き直した記憶があるな。
576:名無しさん@お腹いっぱい。
24/11/04 08:13:53.78 0+TNl6bu0.net
どんな風に書いたの?
577:名無しさん@お腹いっぱい。
24/11/04 09:02:33.57 0YuXa8aO0.net
#HotIf WinActive("ahk_exe aaa.exe")
func()
#HotIf WinActive("ahk_exe bbb.exe")
func()
みたいにすると安定する
578:名無しさん@お腹いっぱい。
24/11/04 09:02:39.41 KFmL+5kO0.net
>>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 *****
579:名無しさん@お腹いっぱい。
24/11/04 09:18:59.39 0+TNl6bu0.net
>>562
>>563
ありがと
さっそくv1から移植した自作スクリプト書き直してみる
580:名無しさん@お腹いっぱい。
24/11/04 11:42:04.68 oZhUvQAj0.net
>>554
どのプロセスがフォーカスを取ったのか、というのが問題であるならAHKスクリプトで調べられそうではあるが
581:名無しさん@お腹いっぱい。
24/11/09 20:56:33.76 u7GULAlO0.net
もしpython使いがいらっしゃれば教えて下さい
onmessageで待機中のahkにsendmessageするpython関数をさがしてます
URLリンク(ahkscript.github.io)
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))
582:名無しさん@お腹いっぱい。
24/11/09 21:15:28.41 MAenpT4V0.net
pythonで完結した方がいいのでは
583:名無しさん@お腹いっぱい。
24/11/10 04:40:23.28 GeSxHuHj0.net
>>566
すれ違い
584:名無しさん@お腹いっぱい。
24/11/10 11:43:02.46 EXFM7x830.net
>>568
ahkのOnMessageがあるからスレ違いでない
585:名無しさん@お腹いっぱい。
24/11/10 11:58:00.27 Dm1FzFIs0.net
>>566,569
ahk側の話じゃないのにahkにこじつけただけだろw
586:名無しさん@お腹いっぱい。
24/11/10 12:02:23.30 Ct4CxUbM0.net
ahkはキーの置き換えだけにして、
凝ったことはPyAutoGUIとかでやった方が幸せになれる
587:名無しさん@お腹いっぱい。
24/11/10 12:29:20.03 EXFM7x830.net
>>570
afkとそれ以外とのインタフェースもスレで扱われるべき
588:名無しさん@お腹いっぱい。
24/11/10 12:38:56.60 fkGzM6dg0.net
>>572
それならwin32apiスレで訊けってw
589:名無しさん@お腹いっぱい。
24/11/10 12:41:51.16 EXFM7x830.net
アホすぎて話にならんなw
590:名無しさん@お腹いっぱい。
24/11/10 12:43:50.52 fkGzM6dg0.net
>>574
すまんな、ヒント位は用意してたがやめにする
591:名無しさん@お腹いっぱい。
24/11/10 12:44:48.66 fkGzM6dg0.net
どうせム板をつまはじきにされたんだろw
592:名無しさん@お腹いっぱい。
24/11/10 12:53:29.53 Ct4CxUbM0.net
俺なんか完全解答まで用意してたけど削除した
593:名無しさん@お腹いっぱい。
24/11/10 12:59:30.81 EXFM7x830.net
>>575
>>577
他人に嫌がらせするのが生きがいなの?
悲しいな
594:名無しさん@お腹いっぱい。
24/11/10 13:15:28.60 r+zx2CAO0.net
>>578
こっちはAIじゃなくて人間なんだぜ、こじつけは勘弁してくれ
バイバイ
595:名無しさん@お腹いっぱい。
24/11/10 13:33:06.16 Ct4CxUbM0.net
pythonからahkを制御するメリットが何も思いつかないんだよな
596:名無しさん@お腹いっぱい。
24/11/10 17:18:43.93 J4tKGOxg0.net
発想の貧困さを自慢しなくてもw
597:名無しさん@お腹いっぱい。
24/11/10 17:20:25.98 Ct4CxUbM0.net
じゃあ1分やるからお前が3つくらい挙げてみれ
598:名無しさん@お腹いっぱい。
24/11/10 18:48:35.44 A6FIZEN40.net
Claudeで聞いてみた
PythonからAutoHotkey (AHK)を制御するメリットを3つ挙げさせていただきます:
1. 豊富なライブラリの活用
- PythonのNumPy、Pandas、OpenCVなどの強力なライブラリと、AHKの画面制御機能を組み合わせることができます
- データ分析やAI機能をAHKのマクロ処理に組み込むことが可能になります
- 複雑な計算や処理をPythonで行い、その結果をAHKで画面操作に反映できます
2. 保守性とデバッグの向上
- Pythonの整理された文法とモジュール構造により、大規模な自動化スクリプトも管理しやすくなります
- Pythonのデバッグツールやログ機能を使用して、エラーの特定と修正が容易になります
- ユニットテストなどのテスト手法を導入しやすくなります
3. クロスプラットフォーム対応の強化
- Pythonのマルチプラットフォーム対応により、Windows以外の環境でも一部の機能を実行可能です
- WebAPIやデータベースとの連携が容易になり、より広範な自動化が実現できます
- 異なるOSで動作するシステム間の連携も実装しやすくなります
これらの利点を活かすことで、より柔軟で拡張性の高い自動化システムを構築することができます。
599:名無しさん@お腹いっぱい。
24/11/10 18:54:02.71 Ct4CxUbM0.net
なんで画面制御ソフトだと思い込んでるんだ
600:名無しさん@お腹いっぱい。
24/11/11 01:43:32.27 99STE7/B0.net
メニューバーの項目の中でアクセスキーが割り当てられてない物を選択するにはどうしたらいいものか
お手上げだわ
601:名無しさん@お腹いっぱい。
24/11/11 10:04:57.32 WPN24Oia0.net
直接 menu item を Select できるだろ
Reference を look look
602:名無しさん@お腹いっぱい。
24/11/11 10:05:53.66 6GxZHQDe0.net
>>566,583
たたき台にAIを活用するのは良いけど、その先は基本的な知識が必要なの
他人を利用するような真似はやめて地道に勉強しなさいよ
絵師がAI絵で拒絶反応を示す矛先は、ど素人に対してであって
腕に覚えがある経験者が裏でAI活用する分には黙認だろう
>>583
これも似たような状況かも知れないな
603:名無しさん@お腹いっぱい。
24/11/11 10:17:08.22 QhnMGqXZ0.net
.ahkからメニューの.ahkを起動した時に、
フォーカスが当たってくれないのでahk_class #32768を探してクリックする、
みたいなことをしていた
そのせいで、素早くキー入力するとエラーを起こしていた
今試すと、そんな処理は一切なくてもちゃんとフォーカスが当たるので
シャキシャキ動くようになった
多分、win11はExplorerPatcherとセットで使うのが正解
604:名無しさん@お腹いっぱい。
24/11/11 15:39:01.57 99STE7/B0.net
Ver.2で作成したGUIのみ、AHKでメニューを操作できる
嵌まった罠
605:名無しさん@お腹いっぱい。
24/11/11 21:21:17.01 k9QE4KWP0.net
pythonベースのリマップライブラリはあったけどまったく流行らなかった
安定性は高かったけど修飾キーの取り扱いが面倒だったのは覚えてる
606:名無しさん@お腹いっぱい。
24/11/11 21:26:59.39 QhnMGqXZ0.net
安定性はどっちにしろLLフックだから変わらない
デバイスドライバを使う方式ならメリットはある
607:名無しさん@お腹いっぱい。
24/11/13 09:07:44.32 QgVuGe8N0.net
スレリンク(software板:449番),450
のperplexity回答
608:名無しさん@お腹いっぱい。
24/11/13 18:24:15.97 N5EeeiZd0.net
#HotIf WinActive("ahk_exe msedge.exe") or WinActive("ahk_exe vivaldi.exe") or WinActive("ahk_exe firefox.EXE")
こんなん書いてあるけど別に不安定ではないなあ
609:名無しさん@お腹いっぱい。
24/11/13 19:04:17.69 WTlR9y+X0.net
RPAやりたいとなったらpythonだろう
RPAまでは行かないけど、ちょっと便利にしたい程度でも当然使える
ahkのキー置き換え機能以外は全部外出しできて、その方が保守性が高い
610:名無しさん@お腹いっぱい。
24/11/18 15:57:31.08 Y6PEV2t60.net
海外のエンジニアと話してて偶然発見したんだけど
wsl -> pwsh -> ahk な起動できるんだな
いままでずっとwss待機ahkにntfy.shにcurlで投げて2秒くらい掛かるから不満だったけど400msecくらいまで短縮できた
>> 566
参考になるかも
611:名無しさん@お腹いっぱい。
24/11/21 17:07:30.20 qKQjWyyW0.net
UpをF13にレジストリで設定して
F13を空打ちまたは長押しはUp
F13と他のキー同時押しは任意のホットキー
として動作させるにはどうしたらいいですか?
612:名無しさん@お腹いっぱい。
24/11/21 17:12:16.74 gXTmAhJp0.net
レジストリで設定したもんはもう同じキーだから、
ahkとは関係ない
613:名無しさん@お腹いっぱい。
24/11/21 19:33:15.92 V7QqsfvG0.net
よくあるやつだから訊くよりググって参考になりそうなの探した方が早そう
614:名無しさん@お腹いっぱい。
24/11/22 00:04:08.50 bWwlPXi60.net
F13::Send("Up")
F13長押し::?
F13&a::Send("Down")
615:名無しさん@お腹いっぱい。
24/11/22 00:14:15.81 eLxZWE600.net
なんか予定の仕様を見ているだけで
誤爆臭がプンプンなんだが
616:名無しさん@お腹いっぱい。
24/11/27 23:42:15.63 7bd49iTm0.net
以下の機能を実装したいと思っています。
「とあるホットキーを押下すると、InputBoxが表示される」
「ただし既にInputBoxが作成済みで、他ウィンドウの背面に存在する場合は、前面に表示させる」
実現する為、以下のように記述しましたが上手くいきません。
-------------------------------
!Q::
IfWinExist,入力ボックス
{
WinActivate,入力ボックス
}
Else
{
InputBox,var,入力ボックス,,,150,110,-320,-300
}
Return
-------------------------------
恐らく、入力ボックスが存在する時はまだこのスレッドが終了していない訳なので、Alt+Qを押下しても何も起きないからだと思われます。
何か良い解決策はございませんでしょうか。
「存在するなら前面に出す」でなく「存在しようがすまいが一度スレッドを閉じて頭からやり直し」でも構いません。
回答がお分かりの方がいらっしゃいましたら、何卒ご教示の程を賜りますようお願い申し上げます。
617:名無しさん@お腹いっぱい。
24/11/27 23:47:28.15 sJxUfBiT0.net
エクスプローラーで右クリック+ホイールで一番上と下に移動するようにさせたいです。
動作自体は↓でできるのですが、動作後に右クリックメニューが出ないようにできないでしょうか?
~RButton::をはずすと出なくなるのですが、逆に通常の右クリックができなくなってしまいます。
何か良い方法があれば教えてください。よろしくお願いします。
~RButton::
RButton & WheelUp::Send {Home}
RButton & WheelDown::Send {End}
618:名無しさん@お腹いっぱい。
24/11/27 23:49:14.25 tArQvrkx0.net
AHKの中からNode.jsを呼ぶ処理があったのですが
Node.jsをインストールし直したら、Nodeがないと言われるようになりました
Nodeはコマンドプロンプトからは問題なく実行できます
調べているうち、システム環境変数PATHの変更(C:\Program Files\nodejs\の追加)が
AHKに伝わっていないことに気づきました
コマンドプロンプトなどは新しく起動したら最新状態の環境変数を持たされますが、
AHKは一度Exitさせて再び実行しても、なぜか
619:環境変数の値は古い状態のままです PCを再起動したらおそらく反映されると思いますが、 なぜAHKはこのような挙動をするのでしょうか?
620:名無しさん@お腹いっぱい。
24/11/27 23:50:58.68 Dl7nvvky0.net
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
}
}
621:名無しさん@お腹いっぱい。
24/11/27 23:56:00.70 +CuwNKuO0.net
>>601-604
なにこれ
AIが掲示板に質問文を投げて回答を学習するフェーズに入ったか?
622:名無しさん@お腹いっぱい。
24/11/28 00:33:26.82 I+M5rELh0.net
www.youtube.com/watch?v=5F5GoW-_6DM
と同じ動機じゃね?
623:名無しさん@お腹いっぱい。
24/11/28 10:15:18.14 3oWlVnLn0.net
全部過去ログからのコピペ
624:名無しさん@お腹いっぱい。
24/11/28 16:54:47.34 fKL+wsWZ0.net
AutoHotkey スレッド part28
スレリンク(software板:790番)
625:名無しさん@お腹いっぱい。
24/11/30 00:36:57.41 qLChT1TC0.net
>>595
ありがとうございます
ntfy.shいいですね。自ホストできるのも気に入りました
最終的にこのライブラリにたどり着きました
URLリンク(github.com)
AHK_Hのdllを呼んでるだけですがahkコードまんま書けるのも楽で、目的のsendmessage送信をpythonから50msec以下で送れたので概ね満足です
>>566
626:名無しさん@お腹いっぱい。
24/11/30 00:44:08.10 sal3v5wh0.net
それだけいろいろ手段があるのにahkに頼るメリットがあるの?
627:名無しさん@お腹いっぱい。
24/12/01 13:56:42.29 o/VZUOPk0.net
ただの連携でしょ
SendMessageだけだし
628:名無しさん@お腹いっぱい。
24/12/01 14:31:38.41 2nq5l3480.net
連携してahkにしてもらう仕事なんか無いやん
何でも自力ができる
629:名無しさん@お腹いっぱい。
24/12/01 14:56:36.82 L6kRfSUn0.net
あんたが使うわけじゃないでしょ?
「本人が使い勝手が良いソースを利用する」ことが最大のメリットなんだから他人が無意味っていうのは野暮では?
630:名無しさん@お腹いっぱい。
24/12/01 15:06:26.18 2nq5l3480.net
無意味なんて酷いこと言ってるのは君だけや
631:名無しさん@お腹いっぱい。
24/12/01 16:42:02.06 Ju7WZ2ge0.net
無意味って言う指摘が無意味だぞ
632:名無しさん@お腹いっぱい。
24/12/01 16:48:08.89 b0YF+YEa0.net
そのレスも無意味だぞ
633:名無しさん@お腹いっぱい。
24/12/01 19:17:37.18 wEnftK410.net
循環参照エラー起こしてるぞ
634:名無しさん@お腹いっぱい。
24/12/02 12:15:04.75 tYshLloq0.net
もしかしたら、おれ環かもしれないけど
職場のWindows11マシンでMouseMoveが動かなくなった
先週までは動いてた
ahkはv1の最終版使ってる
同じような症状のやついる?
635:名無しさん@お腹いっぱい。
24/12/02 18:33:32.17 ouFD3fTm0.net
MouseMoveのRオプションが全然動かなくなった
636:名無しさん@お腹いっぱい。
24/12/02 19:01:47.51 c3v+nPVA0.net
v1って古いじゃん
W11更新に巻き込まれたんじゃね
v2で確認すべき
637:名無しさん@お腹いっぱい。
24/12/02 19:59:21.12 FXO/a/ef0.net
権限まわりかね
638:名無しさん@お腹いっぱい。
24/12/03 01:16:52.78 KdHvtM4K0.net
すみません、capslockをトリガーとして同時押ししたs、d、fにそれぞれAlt、Ctrl、Shiftを割り当てたいのですが、Altなどを押下したときに連打されてしまい本来意図した通りに挙動してくれません
通常のAltなどのように押しっぱなしにする場合にはどうすれば良いのでしょうか
capslockをトリガーは問題なく出来てるので省力してもらっても大丈夫です
639:名無しさん@お腹いっぱい。
24/12/03 08:57:55.29 2aFWMDcx0.net
v1 or v2、どんな書き方をしてソレなのかを示したほうが良いんじゃない?
640:名無しさん@お腹いっぱい。
24/12/03 16:55:26.51 WX1DlhbG0.net
作ったファイルそのものをうpれとかごねる人が湧きがちで、
エッセンスのみにして質問する方がエレガントだと思うけど、
コード0でエスパーしろはさすがにエレガントが過ぎる
641:名無しさん@お腹いっぱい。
24/12/03 18:03:01.69 1pUKKTJQ0.net
指摘が悪意なくエレガントで痺れる
そう、甘い毒のように
642:名無しさん@お腹いっぱい。
24/12/03 18:09:53.94 bjS7lCZw0.net
capslockの特別扱いが原因の可能性
スペースをトリガーにしたら変わる?
643:名無しさん@お腹いっぱい。
24/12/03 18:23:03.10 WX1DlhbG0.net
そこはさすがにレジストリでF13とかにしてるだろう
定石みたいなものだし
644:名無しさん@お腹いっぱい。
24/12/03 18:45:39.98 yy2U73140.net
その定石を知ってる人ならこういうやり取りが起きそうなのもわかってて
capslockをトリガーうんぬんの代わりにF13とかにしてますくらいは元から書いてそう
645:名無しさん@お腹いっぱい。
24/12/03 22:06:44.54 IBuz/pag0.net
s → Alt だと s がキーリピートしちゃうよって話かな
s Down → Alt Down と s Up → Alt Up にすればいい?
646:名無しさん@お腹いっぱい。
24/12/03 22:27:25.00 WX1DlhbG0.net
mayuとかyamyは通常キーとモディファイアを明確に区別してたけど、
ahkはそういうの無いんだよな
647:名無しさん@お腹いっぱい。
24/12/04 18:24:57.57 C4qWt2mE0.net
>>618
追記
Windows11とRDPとWDDMのバージョン絡みで
SetCursorPos関数が駄目になってる気がする
DllCallで叩いても全然動かん
ファック!!
グループポリシーでRDP接続時のWDDM無効化すれば動くかもしれんが
仕事がGUIアプリ開発なのでそれは厳しい
648:名無しさん@お腹いっぱい。
24/12/04 22:16:14.95 MMxdam3e0.net
RDP接続元のWin11をSetCursorPosで動かしても、その位置がRDP接続先に反映されないということ?
649:名無しさん@お腹いっぱい。
24/12/05 00:56:01.22 SGtebtbZ0.net
RDPとは「Remote Desktop Protocol」の略で、リモートデスクトップを実現するために使われる通信プロトコルの一種である。
650:名無しさん@お腹いっぱい。
24/12/05 07:57:12.79 rOfQz8Iy0.net
今どき職場のPCにahkなんか入れていい状況が異常
651:名無しさん@お腹いっぱい。
24/12/05 08:38:25.31 cYvL8sXn0.net
>>634
それがダメならExcelもPower Shellも許されないな
652:名無しさん@お腹いっぱい。
24/12/05 09:16:53.92 uiwkrxFN0.net
きちんとした組織なら、大手ベンダー製、フリー物を問わずに申請・許可制やろ?
組織で一括ライセンスを購入しているようなものなら「これ以外ダメ」とかはありそうやけど。
653:名無しさん@お腹いっぱい。
24/12/05 09:17:35.82 xo2Q3G8t0.net
別のスクリプトファイルの下の方にahkのコード埋め込んで呼び出す
ruby -x的な方法ないの?
654:名無しさん@お腹いっぱい。
24/12/05 13:26:36.33 Xpnr66KY0.net
rubyはいっぱいあるが
://ahkscript.github.io/ja/docs/v2/Scripts.htm#cmd
コマンドラインパラメータは少ししかない
655:名無しさん@お腹いっぱい。
24/12/05 13:44:06.43 Xpnr66KY0.net
rubyスレでホットキーで多彩なコマンドを実行できるahk的な方法ないの?って聞いてみれば?
rubyでやれ
656:名無しさん@お腹いっぱい。
24/12/05 15:53:26.44 kZhQ8p/p0.net
>>634
普通に申請して許可取ってるし他にもahkユーザーいる
ahkでマウス動かす変人は俺だけだろ
657:うけどな
658:名無しさん@お腹いっぱい。
24/12/05 15:55:59.52 kZhQ8p/p0.net
>>632
rdp接続先のPCでahk動かしててMouseMoveするスクリプトがある日から動かなくなった
659:名無しさん@お腹いっぱい。
24/12/05 15:56:01.26 AGKuzfGq0.net
>>636
そうなの?
いまの企業はAHKもダメなのか…
660:名無しさん@お腹いっぱい。
24/12/05 16:12:09.55 4VPYuxhh0.net
>>641
マウスキー有効にしてキーコード送信したらなんとかなるのでは・・・
それでもだめなら、接続元でAHK動かしてマウスイベントを送信するしかないんだろう
661:名無しさん@お腹いっぱい。
24/12/05 17:51:49.33 QbpevdrZ0.net
>>641
Windows Terminal Serverみたいにローカルデスクトップセッションと
リモートデスクトップセッション(複数)で区別するようになったのかな
セキュリティ的には望ましいけどね
前と変わってないと思うけどこの注意書きを忠実に実行してみては
SetCursorPos function (winuser.h)
The calling process must have WINSTA_WRITEATTRIBUTES access to the window station.
The input desktop must be the current desktop when you call SetCursorPos. Call OpenInputDesktop to
determine whether the current desktop is the input desktop. If it is not, call SetThreadDesktop with
the HDESK returned by OpenInputDesktop to switch to that desktop.
662:名無しさん@お腹いっぱい。
24/12/05 18:06:46.22 kZhQ8p/p0.net
>>644
サンキュー読んでみる
663:名無しさん@お腹いっぱい。
24/12/06 01:10:36.82 3NWLrjrE0.net
StringSplitで文字列を書き出す時につまずいたんですがこれをStringSplitを実行すると
F1::
test = +1+2+3+4+5 +6
StringSplit,word,test,%A_Space%`r,`r`
send,%word1%_
send,%word2%
return
sendで書き出されるものが 「+1+2+3+4+5_+6」 ではなくて 「!"#$%_&」 になりますが
+1が! +2が" +3が# +4が% +6が& になってます
数字キーをshift押しで出力されるキーがそのままでてきてます
これって何の機能なんですかね?どこかにこの説明がされているところありますか?
sendではなくsendrawにすれば 「+1+2+3+4+5_+6」 となるのはわかってるんですが
664:名無しさん@お腹いっぱい。
24/12/06 01:36:48.79 4FCkvjwY0.net
v2なら全く悩まない
665:名無しさん@お腹いっぱい。
24/12/06 01:40:50.71 m4vHAGFm0.net
>>646
URLリンク(www.autohotkey.com)
F1::
test = {+}1{+}2{+}3{+}4{+}5 {+}6
StringSplit,word,test,%A_Space%`r,`r`
send,%word1%_
send,%word2%
return
666:名無しさん@お腹いっぱい。
24/12/06 06:41:57.03 Y5z4XMcT0.net
v1っていつか新OSで動かなくなるんかね
あと30年くらいは粘りたい
667:名無しさん@お腹いっぱい。
24/12/06 06:52:53.27 szy+Isxx0.net
中身は同じだから寿命は同じでしょう
668:名無しさん@お腹いっぱい。
24/12/06 12:33:01.63 fVZirLpc0.net
228535‎
669:名無しさん@お腹いっぱい。
24/12/06 21:08:07.86 E3DdPrM60.net
質問いいですか?
670:名無しさん@お腹いっぱい。
24/12/06 21:13:36.66 STKjjIni0.net
あと348待つのだ
671:名無しさん@お腹いっぱい。
24/12/06 21:37:40.72 nNIa0mvr0.net
ちゃん!
672:名無しさん@お腹いっぱい。
24/12/07 15:00:31.13 rN7RY3YK0.net
RDPとWDDM絡み?のSetCursorPosの不具合だが、
マルチモニターも絡んでるぽくて
動かないというより、ズレた場所に移動しようとする問題くさいのがググってたら分かった
それで結果的にズレた座標が画面外にはみ出ると動かない気がする
俺の環境ではモニター2枚分、Xがズレてる気がする
右端のモニターからSetCursorPosした時だけ左端のモニターにカーソルが飛んで、他のモニターからは動かないからだ
メインのデスクトップをどのモニターにするかでも変わりそう
俺は3枚のモニターの真ん中をメインにしてるので
左のモニターは本来ならマイナス座標領域
Xを目標の座標よりオフセットしてSetCursorPosに与えたら動くかも
月曜になったら職場で試す
673:名無しさん@お腹いっぱい。
24/12/09 00:49:53.89 lzZLCqST0.net
>>640
右クリック+ホイールで乗っ取った上で右クリック単押しは
RButton::RButton
で再定義しておく
ただしコンビネーションキーで乗っ取ってるから右ボタン長押しや右ドラッグなどは出来なくなる
それが嫌なら右クリック使うべきじゃない
674:名無しさん@お腹いっぱい。
24/12/09 03:34:28.81 H644W1sj0.net
このコピペカスは何がしたいの?
675:名無しさん@お腹いっぱい。
24/12/09 07:20:15.97 frt7b11U0.net
構ってほしいだけだよ
君の対応が100点
676:名無しさん@お腹いっぱい。
24/12/09 12:08:53.18 fLQlebK90.net
>>655
上手くいかんかったわw
SetCursorPosで飛ぶ先の座標が絶望的に不規則w
こんなバグった環境じゃどうにもならないよ
677:名無しさん@お腹いっぱい。
24/12/09 12:41:12.69 VZAP5UHn0.net
安全性のためにランダム値を返すようになったのでは?
678:名無しさん@お腹いっぱい。
24/12/09 13:55:44.23 Zcl3KeTH0.net
>>659
RDP接続元をシングルモニタにすれば正常動作する、でOK?
679:名無しさん@お腹いっぱい。
24/12/09 18:24:10.02 fLQlebK90.net
>>661
そうかもしれん
シングルモニターで仕事にならんので試す気にもならんが
680:名無しさん@お腹いっぱい。
24/12/09 18:24:47.05 fLQlebK90.net
>>660
ジョーク?別に笑えんけど
681:名無しさん@お腹いっぱい。
24/12/09 18:26:10.64 fLQlebK90.net
管理者権限でAHK動かしてるんでこれがセキュリティのためなら完全なバグとしか言いようがないわ
682:名無しさん@お腹いっぱい。
24/12/09 19:09:02.11 OnHDnI4q0.net
>>662
Window配置を崩しちゃうので切れのいいタイミングで良いので
他のモニタ電源をOFFにして試してみては
その際に一応画面スケーリングも100%~200%でも試して何か掴めるかも知れない
683:名無しさん@お腹いっぱい。
24/12/09 19:51:12.60 masNTbuo0.net
Win10 1903の頃だからだいぶ昔の話だけど
マルチディスプレイのスケーリングを揃えないとSetCursorPosが変なところに行くっていうのがあったな
684:名無しさん@お腹いっぱい。
24/12/10 20:33:20.40 fhtdyd5R0.net
AHKで細工して解決するの諦めて
グループポリシーでリモートデスクトップでのWDDMを無効にするという伝統的(らしい)な対策をやってみたが
何も変わらんかったわ
もちろん設定変えた後の再起動は忘れてない
最近入ったバグならなんでいくらググってもガイジンが切れてる情報が見つからんのだろう
.NETのCursor.Positionもソース見たらSetCursorPos呼んでるだけだったしほぼ詰んだな
Windows11あかんわ
本気で乗り換えさせる気あんのか
685:名無しさん@お腹いっぱい。
24/12/10 21:17:57.82 MOp0vHWD0.net
いい加減ウザい
686:名無しさん@お腹いっぱい。
24/12/10 21:27:21.77 fhtdyd5R0.net
>>668
何の役にも立たん書き込みしてるお前がウザいんだよ
687:名無しさん@お腹いっぱい。
24/12/10 21:32:31.63 3hexGiuM0.net
>>667,669
徐々に本当にエンジニアか?と疑問符が付き始めた
問題の切り分けでOK caseを見出す方法を伝えたつもりなんだけど、
どうあっても「Windows11のせい」が先立ってるから
688:名無しさん@お腹いっぱい。
24/12/10 21:38:40.85 N3DE92z80.net
誰もエンジニアだなんて言ってない
689:名無しさん@お腹いっぱい。
24/12/10 23:08:35.58 KiUhGUZG0.net
>>670
精神病っぽい
690:名無しさん@お腹いっぱい。
24/12/10 23:34:56.87 fhtdyd5R0.net
>>670
シングルモニター運用なんか眼中にないって言ってるだろ
お前が人の話聞いてないだけ
そもそも今までの情報でだいたい状況分かるだろ
WindowsのせいかIntelの
691:ドライバーのせいかは分からんけどな 常に動かないわけじゃないので権限周りでもないし 元々動いてたものがおかしくなったのだから何かのアップデートだろう どーせそれもまともに読まずにゴチャゴチャ言ってんだろうけどな スルーされてるアドバイスはスルーされるだけの理由があるってだけなんだよ それでも腑に落ちないんならもっと具体的な文句を言え
692:名無しさん@お腹いっぱい。
24/12/10 23:43:25.94 fhtdyd5R0.net
スケーリングのせいだろうがなんだろうがバグはバグで
今は使い物にならんって結論になるだけだわ
前提として元々正常だったので言い訳の余地は無いバグとしか言いようがない
何の議論してるつもりなんだか
他人事だからって適当にあれもこれも試して結果書いてみろって言ってるだけだろ
そんなもん聞くかどうか相手次第に決まってるわ
そんなに他人が都合よく動くと思うなアホ
693:名無しさん@お腹いっぱい。
24/12/10 23:44:17.65 WE7G37Is0.net
重症だね
694:名無しさん@お腹いっぱい。
24/12/10 23:48:08.85 fzmwP5/V0.net
質問いいですか?
695:名無しさん@お腹いっぱい。
24/12/10 23:48:24.40 fhtdyd5R0.net
>>675
ちょっと長文書いたらそういうことを書くゴミがわくのウザいわ
3行以上読めないからって発狂するなよ
696:名無しさん@お腹いっぱい。
24/12/10 23:50:40.35 fhtdyd5R0.net
>>676
勝手に書けばいいだろ
何を遠慮してんだよ
誰にレスしてるのか分かるように安価つけない奴がアタオカなんだよ
697:名無しさん@お腹いっぱい。
24/12/10 23:51:18.59 WE7G37Is0.net
おま環
698:名無しさん@お腹いっぱい。
24/12/10 23:53:25.67 fhtdyd5R0.net
>>679
お前の環境で起きてなくて興味も無いならスルーしとけ
お前が興味無い話してたら我慢できないのかアホ
699:名無しさん@お腹いっぱい。
24/12/10 23:54:10.16 WE7G37Is0.net
スレ違
700:名無しさん@お腹いっぱい。
24/12/10 23:59:09.38 fhtdyd5R0.net
>>681
文盲かよ
元々AHKの組み込み機能が動かなくなったのをどうにかカバーしようとしてわかったことを適当に書いてただけでスレチと言われるほどズレてないわ
いい加減それもケリがついて終わろうとしてるところだろ
まともに文章読めないんなら黙ってろ
お前前からいるウザい自治厨だろ
このスレは前からそうなの知ってるぞ
前から無駄で独りよがりな文句の多い奴がしきっててウザかったな
701:名無しさん@お腹いっぱい。
24/12/11 00:03:54.69 TNggi5Bw0.net
そんなことより、焼きそばの画期的なレシピ発見した
702:名無しさん@お腹いっぱい。
24/12/11 01:04:15.01 +x7p6GGk0.net
おま環ではないよ
スケーリングを設定している環境だと、拡大前と後の2つの解像度が存在するので、したがって座標も変わるね
AHK側でこのあたりを吸収して透過的に扱えるようにしてくれたらいちばんきれい
(ユーザーが使うのは、ほぼ100%スケーリング考慮後の座標だと思うので)
スケーリングの使用は一般的になってきつつあるので、
誰かが開発者に要望を出せば考慮されるかもしれない