AutoHotkey スレッド part33

レス数が950を超えています。1000を超えると書き込みができなくなります。
2024/01/23(火) 16:30:58.38ID:VpJPb0gB0
■公式サイト
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 スレッド part30 IDのみ
https://egg.5ch.net/test/read.cgi/software/1644313099/
2024/06/02(日) 12:35:48.54ID:kBPI+TMz0
はじめまして
autohotkeyで複数のデバイスを利用する方法を探していてここに辿り着きました


blenderというモデリングソフトの利用時に、複数の外付けテンキーを並べてショートカット用のデバイスとして使用する方法を探しています
「Multi-Keyboard-For-AutoHotkey」というアドオン?を利用して、Aのテンキーのみにショートカットを割り当てるところまでは辿り着いたのですが、実際にblenderで利用すると割り当てたショートカットの機能と同時に従来のテンキーの機能まで動作してしまいます
(外付けテンキーABにそれぞれ別のショートカット、メインキーボードのテンキーで従来のテンキーの機能という動作を想定しています)


作成したコードは以下のとおりです。


; Keyboard 1 - Numpad1 key
if (KeyboardNumber = 2 and VKeyCode = 0x61 and WasDown)
Send +h


こちら従来のテンキーの機能を無効にして割り当てたショートカットだけが起動するように出来ないでしょうか
ご助言いただけますと幸いです
2024/06/02(日) 13:25:30.19ID:0moOUe0Q0
外付けテンキーをF13とかの何の機能も無いキーには割り当てられないの?
2024/06/02(日) 13:53:21.73ID:OOw5QptO0
ハードウェア側でキーを割り当てられるキーボードを買えばいいんでは
2024/06/02(日) 13:57:13.59ID:0moOUe0Q0
テンキーが2つあること自体は問題になってないんだよね
2024/06/02(日) 14:28:25.66ID:pvacPDLX0
evilC/UCR: Universal Control Remapper [ALPHA]
https://github.com/Snoothy/UCR
883名無しさん@お腹いっぱい。
垢版 |
2024/06/02(日) 14:45:04.66ID:ChhROSKU0
へぇ〜、AutoHotKeyでも複数台の同キーで異なる置換ができるのか
HidKeySequenceみたいにデバイスIDで識別しとるんかな?
2024/06/02(日) 16:34:10.01ID:0moOUe0Q0
キーコードが同じだったらahkではどうしようも無いのでは
より低レベルでキーコードを別にしてもらわんことには
2024/06/02(日) 16:46:30.31ID:bKWw9p4n0
>>878
色々ご事情があるのかもしれないが、blenderなら素直に外付けテンキーを買ったほうが遥かに捗る。
2024/06/02(日) 17:12:35.24ID:xUP64Eup0
>>885
外付けテンキーより、この人に必要なのはいわゆる左手デバイスじゃないの
887873
垢版 |
2024/06/02(日) 17:14:37.74ID:8mnk/haY0
>>877
レスありがとうございます
なるほど…それならどこにカーソルあっても関係無いですね
でも仰ってる様に普通に↑↓使いたい時困る(笑)
修飾キーと組み合わせたら…なんて言ってたらどこかクリックする方が手っ取り早いですしね
でも何かの時に役立つかもしれませんし案ありがとうございました
2024/06/02(日) 18:12:38.93ID:zs2d7BlA0
身もふたもないことを言うと、オーサリングソフトの場合、
普通は実行ファイル名をホットキーの条件にして
無変換キー+例えば下段のキーの一列に対して順にショートカットを
割り振っていくのよ
無変換キーを要求するアプリなんて、まずないからトラブルもなし
他の修飾キーと組み合わせれば簡単に数を増やせるからテンキーなんてなくても余裕よ
2024/06/02(日) 18:45:54.14ID:bKWw9p4n0
>>886
ごめんかんちがいした
2024/06/02(日) 20:16:11.39ID:kBPI+TMz0
878です。返信遅くなってすみません!
たくさんご意見いただきありがとうございます

出来るかも!って思い込んだ時点でちょっとしたカスタム気分で浮かれてたので、このためにテンキー二個買ってしまい……もう買っちゃったしどうにか出来ないかと奮闘してた次第です
Blenderの膨大なショートカット地獄と奮闘するのに疲れたのと、このために休み丸二日潰してしまったので、大人しく左手デバイスなりプログラマブルキーボードなり買うことにします


Universal Control Remapper
>教えていただいて試してみたんですが、どうしてもデバイスを認識してくれなくて実行までいけませんでした
すみません
2024/06/02(日) 20:28:21.95ID:0moOUe0Q0
テンキーも内部で独自の入力をキーコードに変換してる訳だから、
そこのテーブルさえ変更できればプログラマブルになるんだけどな
2024/06/02(日) 20:31:47.94ID:kBPI+TMz0
>>883
Multi-Keyboard-For-AutoHotkey.exeでデバイスIDをナンバリングしておいて、
ahk実行時には登録した数字を使って呼び出す形になってました
893名無しさん@お腹いっぱい。
垢版 |
2024/06/02(日) 20:47:37.09ID:ChhROSKU0
>>890
安く済ますなら
テンキーパッドの一方→HID RemapperでF13〜F24等に変換し出力→AutoHotKey
github.com/jfedor2/hid-remapper
2024/06/02(日) 20:54:12.57ID:0moOUe0Q0
ハード的解決、、、

デバイスドライバさえ自由ならなあ
2024/06/02(日) 21:16:33.54ID:1lh1N/co0
if (KeyboardNumber = 2 and VKeyCode = 0x61 and WasDown)
Send +h

これだと置換じゃなくて、パススルー&shift+hの送信でしょ?

>>こちら従来のテンキーの機能を無効にして割り当てたショートカットだけが起動するように出来ないでしょうか

if (KeyboardNumber = 2 and VKeyCode = 0x61 and WasDown)
置換するキー:: Send "{+h}"

じゃないの?
2024/06/03(月) 03:03:39.64ID:/hFHYRc60
すみません、ほとんど見様見真似のコピペなのであまりコードの違いを理解しておらず……
ただ、Multi-Keyboard-For-AutoHotkeyでこの形式で入力するとエラーが出てしまうようでした

メモ帳でSend +hを試してみると1が入力されずに大文字のHが入力されるので、ソフトとの相性が大きそうです


皆様色々情報ありがとうございました
自分ではコードの判別さえままならなかったので、色々ご意見いただけて大変助かりました

本件ですが、せっかく購入したテンキーを一切使わないままというのももったいないので、
blenderで本来テンキーに割り振られているショートカットを「テンキー→alt+テンキー」にすることで一旦様子を見てみることにしました。
今後問題が出てくる可能性は大いにあるのですが、まあそのときはそのときかなと……
897837
垢版 |
2024/06/05(水) 15:53:16.21ID:FQteG7De0
SendMode("InputThenPlay")
#HotIf WinActive("ahk_exe Urbek.exe")
Up::w
Left::a
Right::d
Down::s
#HotIf

でも押しっぱなしが発生したので
SendMode("Event")に変えてみたらうまくいくようだった

こんな単純なスクリプトで問題が発生するなんてAutoHotKeyはなんて糞なのかと思う
2024/06/05(水) 16:04:57.67ID:RRVUv//50
Urbek.exeでもキーを取得してるからな

Urbek.exeの起動後にahkをreloadするとうまくいくかも
2024/06/05(水) 17:01:27.88ID:uo9RchDY0
https://i.imgur.com/VxkIrTu.jpeg
2024/06/05(水) 17:11:01.90ID:RRVUv//50
ゲームだからタイミングをシビアにしようと、低レベルで取得してるんだろうな
多少遅れても構わないと標準のAPIだけ使ってる同士なら何も起こらない

ゲームじゃないけど、リモートワーク用のクライアントが独自にキーを取得してて、
ahkとものすごい干渉する
reloadで治る
ahkの前はyamyを使っていて、これも現象は似たようなもんで、
yamyは一旦終了して再度起動する必要があったので、自力でreloadできるahkに乗り換えた
2024/06/05(水) 17:14:41.26ID:3gTTwl0e0
なるほど そういうこともあるのか
2024/06/05(水) 17:22:59.12ID:j9KOoDoC0
アプリの方に問題があるというか、一般にゲームのホットキー生成はセンシティブ
なのにAHKが悪いかのような発言はおかしいと思うわ
むしろ、入力メソッドに様々なタイプが用意されているAHKを誉めるべき
2024/06/05(水) 17:29:44.75ID:f31yw+3m0
AHKでマウスの右ボタンを扱うと、そのアプリのマウスジェスチャーが使えなくなるんですが何か対策はありませんか?
2024/06/05(水) 17:36:05.05ID:uo9RchDY0
わかった
AHKの期待値が高すぎるんだよ
期待値を調整すべき
2024/06/05(水) 17:43:37.66ID:RRVUv//50
WH_KEYBOARD_LL を一人だけ使って、他の人はWH_KEYBOARD という状況でしか動かない
WH_KEYBOARD_LL を奪い合うと不具合が避けられない
2024/06/05(水) 20:33:17.10ID:caKpoI2e0
Release v2.0.17 · AutoHotkey/AutoHotkey · GitHub
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.17
907あぼーん
垢版 |
NGNG
あぼーん
2024/06/11(火) 17:55:07.92ID:gLozMeeS0
>>907
もう6日目だよ
2024/06/12(水) 13:36:38.31ID:Zw8/mwSx0
DevToysが2になってコマンドラインも増えて便利そう
2024/06/12(水) 14:14:31.53ID:bg1j8AfL0
>>909
ふむ

Visual Studioの開発者か…
911名無しさん@お腹いっぱい。
垢版 |
2024/06/15(土) 10:21:09.75ID:aO2udRvL0
chrome.ahk なんですが
MsgBox, wait get の後でエラーがでて終了してしまう
なんでですか?

#Include Chrome.ahk

F9::
#NoEnv
SetBatchLines, -1

;/*
FileCreateDir, profile
chromeInst := new chrome("profile", "https://www.google.com/";)
MsgBox, wait get
pg := chromeInst.GetPage()
MsgBox, wait load
pg.WaitForLoad("complete")
sleep, 4000
MsgBox, wait alert
pg.Evaluate("alert(11)")
MsgBox, wait
pg.Evaluate("var title = window.document.title")
pg.Evaluate("alert(11)")
title := pg.Evaluate("window.document.title")
sleep, 4000
pg.Evaluate("window.document.title = 'aa'")
MsgBox, %title%

return
912名無しさん@お腹いっぱい。
垢版 |
2024/06/15(土) 10:26:03.13ID:aO2udRvL0
グーグルのページ自体は表示されるけど
↓のエラーがでる

Error in #include file
"C:\Users\User\Documents\AutoHotkey\Lib\Chrome.ahk-master\Chrome.ahk":
0x80072EFD -
Source:WinHttp.WinHttpRequest
Description:
サーバーに接続できませんでした
HelpFile:
HelpContext:
(null)
0
Specifically: send
Line#
108:}
114:{
115: Process,Close,this.PID
116:}
124:{
125: http := ComObjCreate("WinHttp.WinHttpRequest.5.1")
126: http.open("GET", "http://127.0.0.1:"; this.DebugPort "/json")
127: http.send()
128: Return,thisJSON.Load(http.responseText)
129:}
143:{
144: Count := 0
145: For n,PageData in this.GetPageList()
146:{
147: if (((MatchMode = "exact" & & PageData[Key] = Value) ||(MatchMode = "contains" & InStr(PageData[Key], Value)) | (MatchMode= "startswith" && InStr(PageData[Key], Value) == 1) || (MatchMode ="regex" && PageData[Key] ~ = Value)) && ++Count == Index)
Continue running the script?
913名無しさん@お腹いっぱい。
垢版 |
2024/06/15(土) 10:37:39.11ID:aO2udRvL0
何かよくわからんけど大文字にしたら?できたので質問キャンセルします
914名無しさん@お腹いっぱい。
垢版 |
2024/06/15(土) 10:48:12.76ID:aO2udRvL0
ページのタイトル取得してAHK側で使いたいのだが方法がわかりません。
ブラウザ内では使えるようなのですが
AHK側にページ内のデータを渡すことはできないんですか?
@はできるけどAができない

#Include Chrome.ahk

F9::
#NoEnv
SetBatchLines, -1

;/*
FileCreateDir, profile
ChromeInst := new Chrome("ChromeProfile", "https://www.google.com/";)
PageInst := ChromeInst.GetPage()
PageInst.WaitForLoad("complete")
sleep, 2000

MsgBox, wait alert title
PageInst.Evaluate("var title = window.document.title")
PageInst.Evaluate("alert(title)") ; ; <---------------@

title := PageInst.Evaluate("window.document.title") ; <---------------A
sleep, 4000
MsgBox, %title%
return
915名無しさん@お腹いっぱい。
垢版 |
2024/06/15(土) 10:52:44.60ID:aO2udRvL0
Chrome.ahk は ↓です
https://github.com/G33kDude/Chrome.ahk/blob/master/Chrome.ahk
916名無しさん@お腹いっぱい。
垢版 |
2024/06/15(土) 11:19:31.01ID:aO2udRvL0
あ、一応言っておくとタイトルを取得したいわけではなくてwebページ内のデータを取得したいです。
タイトル取得はあくまでテスト用です
2024/06/15(土) 11:59:55.05ID:K9sjyZn70
以下のようにプロパティ名valueを参照してみてください
title := PageInst.Evaluate("window.document.title").value
2024/06/15(土) 12:59:27.07ID:vwlPEFpj0
https://github.com/search?q=autohotkey&type=repositories
この検索で役に立つautohotkeyリポジトリへのリンク集を見つけられる
それで見つけてた・・・という強がり
2024/06/15(土) 13:58:29.42ID:wGUGTXIZ0
左手デバイスとしてタッチデバイスでジェスチャー操作導入したらかなりいい感じ
ControlFocusして設定しておいたジェスチャーでアプリのパラメーターを指2本でスライダー出来たときはなんか汁が出た
https://i.imgur.com/qNj8dC6.jpeg
2024/06/15(土) 22:36:56.76ID:YV7aVfbR0
919は書くとこ間違えているのだろうか
2024/06/15(土) 23:00:02.11ID:63HlmWFw0
>>878-
あたりの話つながりなんだろうけど、だいぶスレ違いだな
2024/06/16(日) 00:48:50.38ID:kYfhJgQY0
公式arm版出ないものかなぁ
2024/06/16(日) 08:43:11.87ID:4YkrJ3vS0
ホットキーで「[shift]+[:]で入力する[*]」を["]に,
「[shift]+[2]で入力する["]」を[@]に置き換えたくて
*::
Send, "
Return

"::
Send, @
Return

というスクリプトを書いてみたのですが[shift]+[:]も[shift]+[2]も@の入力
になってしまいます.
sendで生成した入力を無視させる方法とかありますか?
2024/06/16(日) 09:07:55.89ID:vKPzlDS70
それぞれのホットキーの先頭に$を入れるか
ホットキー項目より前で#UseHook宣言をする
2024/06/16(日) 10:51:04.05ID:x/P4HCAb0
なんで+:で書かないの
926名無しさん@お腹いっぱい。
垢版 |
2024/06/16(日) 11:28:14.89ID:nd5nSGnS0
>>917
でけた!さんくす!!
2024/06/16(日) 15:56:27.30ID:pluHnmOg0
ホイールスクロールを左右キー(←→)に割り当てているのですが、元々のスクロールも残っているようで、左右キーと同時にスクロールもしてしまいます。
1秒間に何十回も行う動作なのでこういった挙動になってしまうのでしょうか?なんとか割り当てた左右キーを動作させている時は元々のスクロールは動かないように出来ないでしょうか?
宜しくお願い致します。
2024/06/16(日) 16:02:09.29ID:7XSFys8+0
それってレスのあった$や#UseHookじゃないの?
2024/06/17(月) 01:44:06.10ID:c669ioN+0
自宅PCでChangeKeyでCapsLockとカタカナ/ひらがなキーをF13・F14にして、AutoHotkeyで機能を割り当てしてて
会社PCでも同様のキー配列にしたいけど、ChangeKeyは管理者権限が必要で会社PCでは導入できないんだよね

管理者権限なしでキー配列を変更するソフトかAutohotkeyのみでCapsLock類を変更する方法ってないかな?

ちなみに以下を試してみた、らCapsLockキーが押しっぱなしな判定をされて上手く機能しなかった

;CapsLockキーにCtrlキーの仕事をさせる
Capslock::Ctrl
sc03a::Ctrl
2024/06/17(月) 02:02:41.20ID:Z/xMHBV+0
会社のルールを変えるか転職
2024/06/17(月) 02:30:08.96ID:gP7LQ52R0
日本語キーボードじゃCapsじゃなくて英数だからダメ
この2つは同じじゃなくて英数には離すという操作が無いので押しっぱなしになる
日本語以外のキーボードにして全キーをAHKで日本語配列にリマップすればいい
2024/06/17(月) 07:41:37.83ID:PNyQMi4n0
検索ソフトのeverythingを使っていますが”クリップボードの監視機能”
がないので下記を作りました。

#Persistent
OnClipboardChange:
Run,C:\Program Files\Everything\Everything.exe -s "%Clipboard% "
Return

firefoxで試しましたが、検索文字をコピーすると、firefoxの画面の上に、
everythingの検索結果の画面が毎回出てきます(ちょっとうざい)。
下記改善をしたいので知恵をお貸しください。

改善したいこと:コピーは、検索のためだけじゃないので、いつもはeverythingをfirefoxの
画面の下で動かして置き、検索結果を見たい時だけ、everythingの画面をクリックして、
上に持ってきたい。見た後は、FIREFOXの画面をクリックしてeverythingの画面を下にしたい。

表示優先度を最優先にできるソフトを使ってみたが、FIREFOXの画面が常時上になり、
everythingの画面は、隠れたままになりだめでした。

AHKですがキーボード操作は使いたくなく、クリック動作だけで行う方法を教えてください。

文章力がないので、うまく伝わるといいのですが。
2024/06/17(月) 08:32:09.09ID:DiXfWeoB0
>>932
Run,C:\Program Files\Everything\Everything.exe -minimized -s "%Clipboard% "
で希望の動作通りではないけど、言わんとする煩わしさは解消するのでは?
Everything1.5ならあれこれ考えなくても、clipboard: で監視できるけどね
2024/06/17(月) 09:26:51.61ID:qcLEboXp0
会社のPCのキーボードにコンテキストキーが無いので、
printscreenを変更してる
レジストリだけでそのくらいのことはできる
2024/06/17(月) 10:32:18.08ID:kdxAnayQ0
私は[英数]をランチャーに使っている
[英数]は制御しにくいので、レジストリで[F10]と入れ替えておく
[CapsLock]を使いたい場合は[Shift]+[F10]
管理者権限については知らない
2024/06/17(月) 10:36:25.09ID:toFr5eC60
管理者として実行することを制限されているPCにそもそもAutoHotKeyのような
ツールを勝手に入れて大丈夫なのか?

そういった制限の厳しい職場ではレジストリすら変更禁止な気がするが
937名無しさん@お腹いっぱい。
垢版 |
2024/06/17(月) 11:31:35.39ID:6QnXphjI0
JS = "window.querySelectorAll('window.document.querySelectorAll("div")')"
PageInst.Evaluate(JS)

chrome.ahkで使いたいコードなんですが上のように引用符が三つ重なるときはどうするんですか?
https://github.com/G33kDude/Chrome.ahk/tree/master
938名無しさん@お腹いっぱい。
垢版 |
2024/06/17(月) 11:37:22.57ID:6QnXphjI0
937はquerySelectorAll が二重になってて文法が変ですが、それは無視して引用符が三重になってるときはどうすればいいでしょうか?
2024/06/17(月) 12:02:41.92ID:toFr5eC60
一旦変数に格納
2024/06/17(月) 13:24:12.77ID:b1q/9Ttw0
>>932
これでどう?
ControlSetText, Edit1, %Clipboard%, ahk_exe Everything.exe
2024/06/17(月) 14:02:24.97ID:wRruJD390
>>940
すごい小並感
2024/06/17(月) 16:38:47.35ID:KdKEljGU0
>>929
changekey .. 管理者権限、再ログイン要
ctrl2cap .. 管理者権限要、再起動要
管理者権限なしにcapslockをctrlに置き換える方法は基本的になしだが

管理者権限ありでcapslockをleft ctrlにするレジストリ
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
追加後、再ログイン、結局changekey実行と同じ

管理者権限なしでcapslockをleft ctrlにするレジストリ
[HKEY_CURRENT_USER\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
追加後、再ログイン、細かい不具合あり

大昔の自分用のtipsからのコピペ。細かい不具合を思い出せません。ゴメン
2024/06/17(月) 17:54:27.46ID:kdxAnayQ0
>>942
なるべく HKCU で設定、どうしても無理なら HKLM
私も自分用のメモを見ると HKLM になっていたので
HKCU では設定できなくなったということかな
2024/06/17(月) 18:57:40.85ID:AJwIpaIi0
HKCUでできたのはWin10より前までだったと思う
2024/06/18(火) 17:55:23.85ID:7VvLvHBU0
>>927
判断材料が足りません。全てのアプリでそうなる場合、おかしな記述か設定をしている可能性があります
主にゲーム等の特定のアプリでのみそうなる場合、通常の方法ではホイールスクロールの元々の動作はブロックできません


>>929
無理やり変更しても管理者権限がないと色々不具合が発生することになるので、結局元に戻すとか言うことになる可能性が高いです
あと、CapsLockをCtrlにしたがる人が多いですが、管理者権限があったとしても、キーボードによっては物理的に同時押しに対応してないキーが存在する可能性もあるので
複数の環境を扱う様な人はこの変更はお勧めしません。つまり、諦めて初期配置での操作に慣れる方が無難です


>>932
私ならOnClipboardChangeではなく、仮にMButtonなどをホットキーとしてトリガーにします
まず、両方が起動中である場合のみ動作するようにするため、それぞれの#If WinActive() && WinExist()のセクションを作り
firefoxがアクティブならMButton押下時に選択文字列をコピーして、コピーした文字列をeverythingの検索欄にセット(>>940)してeverythingをアクティブ化(WinActivate)
everythingがアクティブならMButton押下時にfirefoxをアクティブ化と言う形にします


>>937
JSへの代入演算子が:=ではなく=なら、たぶんこんな感じになると思います
JS = window.querySelectorAll('window.document.querySelectorAll("div")')
代入演算子が:= または 関数の引数などの式である場合
JS := "window.querySelectorAll('window.document.querySelectorAll(""div"")')"

式中でない限り基本的には文字列引用符のエスケープは必要ありません
式中でAHKv1の場合、ダブルクォート「"」のエスケープは2連続表記「""」です。シングルクォート「'」はそのまま文字として扱われます
JavaScript側でダブルクォートのエスケープが必要である場合、AHKでの記述は「\""」になると思います
エスケープが必要であればこれらを念頭に適当に試してみてください
エラーが出たとしても内容にIllegal CharacterやSyntax Errorのような単語がないなら文法的にはおそらくパスしてます
2024/06/18(火) 21:48:47.70ID:qZnMfZO/0
caps lockになってるだけで、動作ボロボロにならない?
2024/06/18(火) 22:05:35.09ID:ra52h9GC0
今話題になってるのはCapsLock状態の制御ではなく、
CapsLockキーの単押しの話だから関係ないでしょ
2024/06/18(火) 22:06:21.82ID:qZnMfZO/0
話題は関係なく、うちではそうという話
2024/06/18(火) 22:13:30.65ID:ra52h9GC0
えっ?ネタ振りってこと?
950名無しさん@お腹いっぱい。
垢版 |
2024/06/18(火) 22:25:08.17ID:BMKuE1Bq0
SC03A::
で指定すりゃキードライバ言語無関係
2024/06/18(火) 23:21:28.13ID:jV2bAcfe0
Netflix
2024/06/22(土) 14:31:48.74ID:CjHlC5hk0
拡張機能経由でchrome色々操作するアイデア
chrome.ahk使ってたけど、AutoControl Managerにするわ
https://www.youtube.com/watch?v=gr4z0Xw8W2g
2024/06/22(土) 16:03:14.98ID:oJ4sXql10
>>952
2014年の古い投稿にChrome extensionへのリンクがある
https://www.autohotkey.com/boards/viewtopic.php?style=17&t=68422
インストールしてないから知らないんだろうがAutoControl Managerという名前ではない
2024/06/22(土) 17:14:58.96ID:uUmyofV20
>>952
AHK と AutoControl それぞれ得意分野が違うから
両方使うとよい。連携させて使うとさらにいろいろできる。
AutoControl では JavaScript が使えるので、文法に悩むことがない。
あと、押しっぱなし病が出たとき、AutoControl は警告を出してくれる。
2024/06/22(土) 17:17:03.01ID:BILpHbnp0
>>953
コピペミスってManagerまで入れてしまったのがそんなに気に食わないかね?
https://www.autocontrol.app/
2024/06/22(土) 17:30:45.84ID:SK/hsq8D0
>>955
そんな事情知ったこっちゃないんだから何でも察せってのはバカの証
2024/06/22(土) 17:42:58.01ID:TN+oqp0H0
>>955
自分でYouTubeのリンクを貼ったのに見てないんじゃない?
YouTubeの映像ではAutoControl Shortcut Managerと表示されてる
拡張機能の名称が変わってるんだよ
958名無しさん@お腹いっぱい。
垢版 |
2024/06/23(日) 23:28:17.77ID:L5YMKkLQ0
Mac 用の少しAHKみたいなもの
詳しくは知らないが、興味がある人がいるかもしれないのでシェア

Phoenix | Phoenix
https://kasper.github.io/phoenix/

A lightweight macOS window and app manager scriptable with JavaScript.
With Phoenix you can bind keyboard shortcuts and system events, and use these to interact with macOS.
2024/06/23(日) 23:44:24.12ID:IHMv+4jU0
さすがにこのスレとは無関係だろ
960名無しさん@お腹いっぱい。
垢版 |
2024/06/25(火) 22:36:04.98ID:qV/OB6ii0
メモ帳の内容をEditコントロールにコピーするGUI付ahkスクリプトを書いているんだけど、編集エリアより行数の多いテキストをコピーした後にEditコントロール末尾にカーソルを合わせる方法ないだろうか。
Getcontrol, FocusとSendでできるかと思ったら上手く行かなかった。
上手いやり方ないですかね。

Gui, Add, Button,, Copy
Gui, Add, Edit, xs vMemo Multi w600 r20
Gui, Show, x1100 y150, hogehoge
Return

ButtonCopy:
oldClipboard = %Clipboard%
Clipboard =
WinGetTitle, CurrentWinTitle, A
WinActivate, ahk_exe notepad.exe
Send, ^a^c
ClipWait
If (!ErrorLevel) {
GuiControlGet, oldMemo,, Memo
newMemo := oldMemo . Clipboard
GuiControl,, Memo, %newMemo%
GuiControl, Focus, Memo
Send, ^{END} ;これでカーソルを編集エリア末尾に移動させたいが上手く動いてない

WinActivate, %CurrentWinTitle%
Sleep 150
}
Clipboard = %oldClipboard%
Return
2024/06/25(火) 22:51:05.97ID:1aV0LDii0
>>960
メモ帳がアクティブになってるうちにメモ帳にCtrl+End送ってるからでしょ
GUIがアクティブになってからSendするか、GUIに対してControlSendで

なんならメモ帳をControlGetTextで取ればアクティブ替える必要ない
962名無しさん@お腹いっぱい。
垢版 |
2024/06/26(水) 00:03:08.02ID:arlV+G8e0
>>961
> メモ帳がアクティブになってるうちにメモ帳にCtrl+End送ってるからでしょ
Ifに突入してからは制御はahkに移ったままだし、メモ帳も全選択解除されてないからメモ帳にCtrl+End送ってる感じはしない。

> なんならメモ帳をControlGetTextで取ればアクティブ替える必要ない
メモ帳のテキストをコピーするのにControlGetText使えばフォーカス制御とかクリップボードの待ち合わせいらなくなって短く書けるかと思ったけど調べながら書き始めたら全然分からんわ。

ButtonCopy:
ControlGetText, newMemo, Edit, ahk_exe notepad.exe
GuiControl,, Memo, %newMemo%
Return
963名無しさん@お腹いっぱい。
垢版 |
2024/06/26(水) 00:53:57.13ID:q8+ksT1s0
Edit control の描画がされていないうちに ^{End} を送ってしまってるからかもしれない

SetTimerを使って少ししてから ^{End} を送ってみてはどうだろう

SetTimer(() {
Send("^{End}")
}, -1)

v2 (のalpha)だと関数をその場で作れる
v1 だと関数を別の場所で定義する必要がある
GuiControl(Focus, Memo) を SetTimer の中に入れてよいのか、よくないのかはわからない
上記のコードは試していない. コンセプトだけ示した
2024/06/26(水) 01:41:21.80ID:0tefdxui0
WinActivate, %CurrentWinTitle%
Sleep 150

   ↓

WinActivate, %CurrentWinTitle%
Sleep 150
Send, ^{END} ;←ここに移動させたらカーソルは編集エリア末尾に移動した

よく分からんけどこうなればいい?
2024/06/26(水) 08:38:39.97ID:NJcLQrvn0
>>962
> ControlGetText, newMemo, Edit, ahk_exe notepad.exe

コントロールが間違ってる
2024/06/26(水) 12:24:12.05ID:e3ENr3qP0
>>960
>>961が全面的に正しいので以下は全て補足となりますが
Send, ^{END} が効かないのは、実行時点でアクティブなメモ帳に対して送っているからと言うことであっています
Sendの直前に GuiControl, Focus, Memo があるので、メモ帳の編集エリアからフォーカスが外れるため、メモ帳側で編集エリアでのキー入力として処理されていないだけです
ウィンドウのアクティブ状態とフォーカスの所在は別物であると認識しておいてください

したがって、>>964での記述通りhogehogeをアクティブ化した後でSendを送れば有効ですが
以下のようにEditのオプションにHWNDを追加してControlSendで送るのがより良いかと思います
Gui, Add, Edit, xs vMemo Multi w600 r20 HWNDh_edit

ButtonCopy:
ControlGetText, newMemo, Edit1, ahk_exe notepad.exe ; 編集エリアのコントロール識別子は「Edit1」
GuiControl, , Memo, %newMemo%
GuiControl, Focus, Memo
ControlSend, , ^{End}, % "ahk_id " h_edit
Return

HWNDではなく ControlSend, Edit1, ^{End}, hogehoge のようにしても有効ですが、一意性や高速性などの点から、HWNDを使用した方が良いです
2024/06/26(水) 19:18:35.95ID:6I1DaBGA0
特定のDialogBoxが出たら [OK] をクリックさせたいです。

https://qiita.com/rohinomiya/items/a13239df948e4d7fa4d5
をみたけどどうもうまきいませんでした、他に良さそうなサイトあれば教えて下さい。

会社の VDI が社内ポリシーで3時間未使用だと、強制再起動のDiaglogが出て
強制shutdownしてしまいます。朝一会社で打ち合わせに行き、午後戻ってきてPC操作すると、
VDI (Windows) がShutdown状態から起動してくるので一通りアプリを立ち上げるのがすごく面倒です。
2024/06/26(水) 19:46:19.36ID:1q57H4qL0
www.autohotkey.com/boards/が最強サイト
次点でstackoverflow
2024/06/26(水) 20:24:03.90ID:+mvUXU380
>>967
定期的にSend {F24}とかをやっとけば、スクリーンセーバーもでなくなるから、そういうダイアログもでなくなるんじゃないの?
2024/06/26(水) 21:08:20.26ID:HTVeCHPK0
>>967

??
2024/06/26(水) 21:18:05.53ID:s8e1M/5T0
マウスふるふる
2024/06/27(木) 06:30:55.76ID:rReXrhNi0
うまきいませんでした…
2024/06/27(木) 08:45:53.62ID:GFIgvPsI0
クラウドのVM環境なら普通こういう機能がある

WVDを業務時間中のみ起動させる(スケジュール自動起動・シャットダウン)
https://365cloud.jp/wvd%E3%82%92%E6%A5%AD%E5%8B%99%E6%99%82%E9%96%93%E4%B8%AD%E3%81%AE%E3%81%BF%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B%EF%BC%88%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E8%87%AA/
2024/06/27(木) 21:06:19.58ID:4m74meBk0
Version : AHK1.1.37.02

勉強で自動クリックするスクリプトを作成しています。

ファイルのショートカットを作成して、このショートカットを削除します。
「ショートカットの削除」の確認ダイアログ [はい] [いいえ] が出るので、
これを [はい] を自動でクリックしたいです。


WindowSPY で値を確認して作成しましたが...駄目です。どこが悪いのでしょうか。
公式の www.autohotkey.com/boards とかも見ましたが素人には敷居が高いです



;「ショートカットの削除」の確認ダイアログ自動クリック

SetTitleMatchMode,2
#Persistent

SetTimer AutoClick,1000
return

AutoClick:
IfWinExist, ショートカットの削除 ahk_class #32770
{
ControlClick はい(&Y), ショートカットの削除 ahk_class #32770
}
return
2024/06/27(木) 22:31:21.87ID:5gh9UDEx0
それで駄目じゃないはずだけど
976名無しさん@お腹いっぱい。
垢版 |
2024/06/28(金) 01:27:11.08ID:iHuXlTTR0
>>966
ControlSend周り書き下してもらってやっと使い方分かりました。
他にもGui,AddにそんなHwndオプションなんてあったか?と思ってリファレンス見直したら確かに載ってたりした。
常にhwnd指定するようにすればあまり好きじゃないWinactivate+SendをControlSendで駆逐できたりもするのか。
しかしちょっと気を利かせようとすると途端にahkの薄い膜をWin32APIの棘が突き破ってくるのなんか興奮する。

>>963 一昔前のJavaScriptもだけどSetTimerのコールバック関数にするやつ未だにちゃんと動かせた試しがない。
>>964 Sleepの位置で動作の変わるスクリプトとか自分で書いてて怖くなってくる。

とりあえず一週間くらいウンウン唸ってたのがお陰様で動くようになりました。
ありがとうございました。
2024/06/28(金) 11:34:26.91ID:Du02qHB20
正常系はどう書いても動くんだよ
他の処理と干渉しないタイミングを探す、みたいな時はトライアル&エラーになる
レス数が950を超えています。1000を超えると書き込みができなくなります。
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

ニューススポーツなんでも実況