探検


AutoHotkey スレッド part28

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。 (ワッチョイ aef9-dJm7)
垢版 |
2020/04/03(金) 18:35:06.00ID:/YRSlUCD0
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512

■配布元
http://ahkscript.org/download/

■前スレ
AutoHotkey スレッド part27
http://egg.5ch.net/test/read.cgi/software/1555770773/

■日本語解説等
AutoHotkey Wik
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp(過去ログdatあり)
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
Autohotkey専用うpろだ
http://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
http://pastebin.com/

■派生版
IronAhk (.NET製、クロスプラットフォーム)
https://github.com/polyethene/IronAHK
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2020/10/23(金) 22:24:48.75ID:xLBME1pE0
>>517
諦めたんじゃなかったのかw

COMオブジェクト操作したり
https://note.com/takanaction/n/n608bd1c598b9
ショートカットキーを送ったりすれば良いんじゃない?
https://www.autohotkey.com/boards/viewtopic.php?t=62090

メジャーなソフト用のスクリプトはいろんな人が作ってるから、「autohotkey itunes」みたいにググって参考にすると良いかも
2020/10/23(金) 23:06:56.54ID:0x9R3Tzg0
>>517
>>336-340辺りのやつか?
まずはメディアキー自体が正常に機能しないお前のPC環境の問題を解決しろって
iTunesに限らずメディアキー自体が効いてないってことはahkの問題じゃないんだから
2020/10/24(土) 02:19:29.00ID:T5kTB8Vu0
>>519
iTunesにメディアキーを送るソフトを使用した所
https://i.imgur.com/0vvO32H.png
このようにFailed to set hotkeyのエラーが出ました。
メディアキーの機能が死んでいるのは明白なのですが、メディアキーを復活させる方法が一向に分かりません。

かなり調べたのですが出てきたこちらの記事を
https://www.reviversoft.com/ja/blog/2014/06/what-to-do-when-your-media-keys-no-longer-work-on-your-keyboard/
試したのですがやはり駄目でした。(Human Interface Device Accessはそもそも動いていた)

windows10のメディアキーが効かない場合に動くようにする方法は無いでしょうか…。
本当に情報がありません。
2020/10/24(土) 02:27:13.11ID:S/98U1OW0
>>520
ス レ チ
2020/10/24(土) 03:24:06.87ID:T5kTB8Vu0
>>521
そうですよね windowsスレやソフトスレで聞いても誰も分からなかったのでつい質問してしまいました
すいません
2020/10/24(土) 03:28:27.47ID:+MpvyafJ0
当たり前だろ
誰もお前のPC環境全く知らないし
触ってみなきゃ分かる訳ねえんだから
2020/10/24(土) 05:43:40.33ID:DDIUlkSX0
>>517
powermateのドライバとかが競合してんじゃないの?
2020/10/25(日) 12:47:57.82ID:aQtH8BBo0
ユーザー切り替えした時切り替え前のアカウントで動作させ続けるのは可能?
loopカウントを数えるだけのスクリプトは裏で動いてたけどメモ帳に文字を送り続けるようなやつは切り替えの時点で途切れてる
UWSCでも同じ感じで駄目だったし元のアカウントでのウィンドウのアクティブ化はやっぱり無理かな
2020/10/25(日) 15:16:53.36ID:cnuvEfeua
>>525
>ユーザー切り替えした時切り替え前のアカウントで動作させ続けるのは可能?
それができたらOSの欠陥だと思うけど
どういう理由でアカウントを切り替えて切り替え前のユーザのプログラムを継続させたいいんだ?
ユーザをログアウトせずにあるプログラムだけ別アカウントで動作させることができる
(runas ソフトによってはできない)が
そういう方法と組み合わせて近いことをすることはできないのかな
2020/10/25(日) 15:30:25.71ID:cnuvEfeua
>>526
ユーザー切り替えなのでログアウトは間違い
誤:ユーザをログアウトせずに
正:現在のユーザーのまま
2020/10/25(日) 15:36:37.14ID:cnuvEfeua
>>526
なんか勘違いしてた
切替えた先のユーザが切替え前のユーザのプログラムを確認すると途切れてるということではなく
前のユーザに戻ったときに途切れてるということか
2020/10/25(日) 17:47:07.25ID:uaVWnWQJ0
>>525
GUIの操作は無理じゃない?
vimとかnanoみたいなコンソール型のテキストエディタのwindows版を使ったら?
2020/10/25(日) 21:50:52.06ID:aQtH8BBo0
裏でGUI操作させたままユーザー切り替えするのは無理そうですね
ありがとうございました
2020/10/26(月) 23:55:07.30ID:0nLQayUp0
最新のMS-IMEの仕様だと、
Autohotkey IME制御用 関数群 (コピペ/組込用)(IME.ahk)
の更新が必要か?
2020/10/30(金) 17:11:57.65ID:Ndf4EDLW0
>>531
IMEが有効な時にキーの置き換えを無効にしたくて、特定のアプリでは無効になってくれるのに
メモ帳では無効になってくれません
これってその仕様のせいですかね?


#include <ime>
#If ! IME_GET()
a::b
#If
Return
2020/10/30(金) 18:12:07.34ID:Ndf4EDLW0
指定したアプリ以外ではスクリプトを無効にしたいのですが、”#IfWinActive”で指定しても、”#If ! IME_GET()”を入れると指定以外のアプリで実行されてしまいます
指定したアプリ以外の場合は”#If ! IME_GET()”の部分を読まないようにするにはどうすればいいでしょうか


#IfWinActive ahk_exe notepad.exe

#include <ime>
#If ! IME_GET()
a::b
#If

Return

#IfWinActive
2020/10/30(金) 18:28:45.29ID:PSQm7T6f0
#If~ は次の #If~ が出現するまで有効、つまり一行目の #IfWinActive ahk_exe notepad.exe は無意味

条件を複数指定したければ式を引数に取る #If を使う。↓こんな感じ

#If WinActive("ahk_exe notepad.exe") && !IME_GET()
2020/10/30(金) 19:23:52.66ID:Ndf4EDLW0
>>534
やりたいことができました!感謝します!!
2020/11/01(日) 18:48:49.89ID:f8skW5aS0
複数のスクリプトを起動させている時のリロードは全てのスクリプトがリロードできるのでしょうか?
2020/11/01(日) 19:11:40.19ID:Lmt/WVPq0
>>536
ABCDの4つのahkが起動している時、Aのahkでreloadを実行すると、BCDのahkもreloadが実行されるのか?
という質問ならノー。
2020/11/01(日) 19:14:51.80ID:cum2FKsZ0
自分だけだよ
ただ親スクリプトのautoexecuteで子スクリプトをまとめて起動して
全ての子スクリプトを #SingleInstance FORCEにしておけばリロード一発で全再起動にはなる
2020/11/01(日) 20:13:11.39ID:f8skW5aS0
>>537-538
ありがとうございます。その方法を調べて試してみます
2020/11/01(日) 21:38:30.40ID:+lp4/pQd0
今まで使えてたんですが、最近のバージョンアップのせいか、気づいたら使えなくなってました。
仕様変更があったみたいなインフォあったらページ教えてくれると嬉しいです。

キーを長押しした場合に分岐する関数です。
この「Time=0.2」の部分が機能しなくなりました。
初期値を指定して省略する、ということをせず、
関数を呼び出す際、省略せずに逐一「,"0.2")」と記述すれば機能するので、
現状すべてそれで修正しました。

また、数値を「Time=0.5」にすると一応分岐が機能するんですが、
体感的にどうも1.0秒くらい押しておかないと長押し判定されないんです。

Hold(Key, SendA, SendB, Time=0.2)
{
KeyWait, %Key%, T%Time%
If (ErrorLevel=0)
{
Send, %SendA%
}
Else
{
Send, %SendB%
KeyWait, %Key%
}
}

F1::Hold("F1", "{F1}", "^{F1}")
2020/11/02(月) 04:26:40.82ID:YjDJU8KL0
すみません自己解決しました!
バージョンアップのせいなんかじゃありませんでした・・・

別の関数の都合で以下のようなものを書いていたのですが、
SetFormat, float, 3.0
これ計算結果に対してだけ効果のあるものだと思ってたんですが、
関数の初期値に指定した数値にも影響するみたいでした。
0.5という指定のときに1.0に四捨五入されるのも納得です。

自分がアホでした、スレ汚しごめんなさい。
2020/11/04(水) 07:17:56.05ID:fAt0anr70
PageUpをWin+L(ロック)にしたいのですが、上手く動きません

PgUp::#l
で動きません…
これは何が原因なのでしょうか
2020/11/04(水) 07:27:24.69ID:fAt0anr70
>>542
自己解決しました
DllCall('LockWorkStation')
2020/11/04(水) 07:50:49.25ID:hfaH06vJ0
珍しいやつがいるな
545名無しさん@お腹いっぱい。 (ワッチョイ 6176-9BKS)
垢版 |
2020/11/04(水) 17:16:09.35ID:1IOEDSZU0
真にマルチスレッド化する方法は、どうしてもないのでしょうか?
例えばAutoHotkey.exeをコピーして、別で実行してみても、それぞれのスクリプトは疑似マルチスレッド的に動作しています。
PCの一般ユーザーでエンジニアではないです。根本の仕組みがわからないために湧いた疑問なのですが、
何とかして別のソフトのように実行できないものでしょうか?
2020/11/04(水) 18:08:51.47ID:RBW8HZXS0
>別のソフトのように実行
同じスクリプトを同時に実行したいってことなら #SingleInstance Off
2020/11/04(水) 18:25:04.69ID:ZyxeyMFR0
>それぞれのスクリプトは疑似マルチスレッド的に動作しています。

の意味が分からん
真マルチスレッド的な動作と何が違うん?
2020/11/05(木) 18:07:56.73ID:I/mZi28I0
新しいパソコンで、ジョイパットが反応してくれません

AutoHotkeyのウィンドウ(実行履歴とか変数一覧を表示してくれるやつ)が
アクティブ状態だと何故か普通に反応するのですが、それ以外ではうんともすんとも言ってくれません
この症状に心当たりある人ますか?
2020/11/05(木) 21:20:37.23ID:yGBOughe0
#If系のディレクティブが誤爆してんじゃないの
2020/11/05(木) 22:18:37.85ID:I/mZi28I0
検証用に数行だけ書いたスクリプトでやってみてもダメなので#If系は関係なさそうです
一応、JoyToKeyは正常に反応するので、

ジョイパット操作をJoyToKeyで受ける→JoyToKeyが出力したキー操作をAutoHotkeyで処理する

ということは出来そう
ただ、書き直しが面倒なうえに処理がややこしいので、できれば避けたい
2020/11/05(木) 22:45:03.39ID:GGl1mCW80
>>550
その検証用スクリプト貼ったら?
2020/11/05(木) 23:50:16.43ID:I/mZi28I0
検証用といっても、ツールチップでジョイパットの状態を表示しているだけです。
SetTimer, Timer, 100
Timer:
  GetKeyState, joyx, JoyX
  GetKeyState, joyy, JoyY
  GetKeyState, joy1, joy1
  GetKeyState, joy2, joy2
  GetKeyState, joy3, joy3
  GetKeyState, joy4, joy4
  ToolTip,%joyx% %joyy% ,0,0
  ToolTip,%joy1% %joy2% %joy3% %joy4%,1,25,2
return
joy1::ToolTip,1,1,50,3
joy2::ToolTip,2,1,50,3
Joy3::ToolTip,3,1,50,3
Joy4::ToolTip,4,1,50,3
2020/11/06(金) 00:51:44.04ID:IZlN468w0
>>552
試したけどスクリプト自体は何も問題なく動いてる
AHKのウィンドウを出さなくてもX軸やY軸やボタンも取得してツールチップに表示されてる
Chromeやメモ帳などアクティブ時でも問題なし
JTKも常駐させてるけど併用して問題ない

となると貴方の環境で何か別のスクリプトや他の常駐ソフトなどが邪魔してるんじゃない?
ちなみにスクリプトを管理者権限で実行してもダメ?
2020/11/06(金) 01:58:35.01ID:03VprpHh0
新しいPCと古いPCの環境の違いを書き出してみるといいよ
多分OSのビルドやahkのバージョンあたりに細かい差異があるんでないの
知らんけど
555名無しさん@お腹いっぱい。 (ワッチョイ 6176-9BKS)
垢版 |
2020/11/06(金) 04:26:02.69ID:Cd90Lss80
>>546
>>547

例えばAutoHotkey.exeをリネームしたa.exeとb.exeを用意します。
それぞれa.ahkとb.ahkを実行します。
どちらのスクリプトにもループ処理が入っています。
これらのループ処理を両方実行した場合、片方のみ実行するより動作が鈍くなります。
つまり実行ファイルを分けても、それぞれが割り込みあっているのだろうと思います。
これを、完全に別物として実行させたいわけです。
2020/11/06(金) 08:28:24.96ID:RAq9Icdy0
>>555
動作コアを分ける
でググってみたらどうだろ?
2020/11/06(金) 14:28:42.61ID:03VprpHh0
スレッドとプロセスがごっちゃになってるぽい?
https://image.itmedia.co.jp/ait/articles/0503/12/dt-mthread01_02.gif

>555
exe(プロセス)を分けて動作が遅くなるっていうのは
色んなアプリを一度に立ち上げて動かしてたら1窓単体起動のときより重くなりましたつってるのと同じでは?
>556の言うように手動で任意のCPU割り当てる方法もあるけど
プロセス別のコア割り当ては基本OS側の仕事だと思う

同一プロセス内でのマルチスレッドについては
AHKは擬似マルチスレッドなのでマルチコア対応はしてないと思う
2020/11/06(金) 16:31:41.10ID:pYlpzeSL0
>>555
どんなループ処理してんだ
1秒に何百回みたいなループさせてんのか?
559名無しさん@お腹いっぱい。 (ワッチョイ 6176-9BKS)
垢版 |
2020/11/06(金) 21:48:27.22ID:Cd90Lss80
>>556

検証用のスクリプトは用意していないので、わかりにくいかもしれませんが現状を話します。
何が関係しているかわかりませんから、念の為詳細に書きます。

AutoHotkey.exeでAutoHotkey.ahkを常駐させています。AutoHotkey.ahkにIncludeしているスクリプトがいくつかあり、
そのうち1つがキーボードでマウス操作をする、mouse.ahkです。
あるトリガーキーを押してから、再度そのキーを押すまで、キーの入力をwhile、if、GetKeyStateでループ、監視し続けます。
そこでカーソル移動用のキーを押すと、MouseMoveを発動します。発動間隔は監視間隔なので、20ミリ秒程度の設定になっています。

これとは別に、MouseGestureL.exe(AutoHotkey.exeを改名した別ファイル)も常駐させています。

そこで問題なのが、MouseGestureL.exeを終了させると、AutoHotkey.exe下のmouse.ahkによるマウスカーソルの移動速度が上がります。

このことから、AutoHotkey.exeとMouseGestureL.exeで別プロセス?として実行していたはずのスクリプトですが、相互にスレッドを奪い合って?いるのではないかと思いました。
MouseGestureL.ahkの仕様はわかりませんが、ループ処理がなされているのだろうと推測しました。

ともかく、実行ファイルもスクリプトファイルも分けて、独立したはずのアプリケーション同士が干渉しあっているので、
疑似マルチスレッド動作になっているのではないかと思いました。

以上です。
これを互いに完全に独立した動作にする方法がないかと思い、質問しました。

関係するかわかりませんが、CPUはi7-8700Kです。
560名無しさん@お腹いっぱい。 (ワッチョイ 6176-9BKS)
垢版 |
2020/11/06(金) 21:48:50.69ID:Cd90Lss80
>>557
>>558
2020/11/06(金) 22:02:37.65ID:pYlpzeSL0
そもそもAutoHotkey.exeを改名とかやってることが特殊過ぎてな
意味あんのかそれって感じだし
まだコンパイルしてスクリプト自体を別exeにした方がいいんじゃねえの
562名無しさん@お腹いっぱい。 (ワッチョイ d25a-t1Nk)
垢版 |
2020/11/06(金) 22:14:53.95ID:94t2tBdQ0
>>559
>そこで問題なのが、MouseGestureL.exeを終了させると、AutoHotkey.exe下のmouse.ahkによるマウスカーソルの移動速度が上がります。
MouseGestureL.exeも基本常駐じゃないの?終了即再起動することはあるけど終了したままにするケースがよく分からない
ま、何にしてもMouseGestureLが終了したらmouse.ahkの挙動が変わるのが嫌ということなら
MouseGestureLの方にmouse.ahkをIncludeさせればいいのでは?
それならMouseGestureL起動中しかmouse.ahkも動作しないわけだから
2020/11/06(金) 22:57:45.00ID:zxpauMpi0
>>559
自分もMGL使ってるけど同じahkスクリプトで常駐させたいものはMGLのプラグインにして
監視するのには「while」などのループじゃなく「settimer」使ってるな

プラグインにするのは別に薦めないけど、試しに「while」の代わりに「settimer」で監視してみては?
2020/11/07(土) 01:04:37.47ID:lXeAUpve0
マルチスレッド云々以前の問題な気が
まず、マウスの挙動を制御するプロセスス2つ同時に動かすことで干渉しあってる可能性は?
コントロールの奪い合いになってたりしない?

あとmouse.ahkの回し方に問題あると思う
20msの高頻度でMousemoveし続けて必ず時間どうりに動かすのがまず無理だし
ループ監視するよりHotkey、#if あたりで2ストロークイベントにしたほうがスムースに動くんではないか
2020/11/07(土) 19:11:05.17ID:/fD/cqh1d
https://i.imgur.com/H58BDRl.jpg
566名無しさん@お腹いっぱい。 (ワッチョイ b197-NW7M)
垢版 |
2020/11/10(火) 16:23:55.12ID:7m/sr7zP0
ループ間のディレイをなくす設定ってありますか?
Reloadで中断できるようにDllCallのSleepを小分けにしてループさせてたんですが
WindowsとAHKのアプデ後からループ10回で0.1秒ぐらいのディレイが入るようになりました
現状はこの設定です
#NoEnv
ListLines Off
Process, Priority, , H
SetBatchLines, -1
SetKeyDelay, -1, -1
SetMouseDelay, -1
SetDefaultMouseSpeed, 0
SetWinDelay, -1
SetControlDelay, -1
SendMode Input
2020/11/10(火) 20:20:11.56ID:iUPLlj4e0
>>566
実際のスクリプトを見ないと誰も答えられない
検証用に最小限まで削ってから貼ってください
2020/11/10(火) 21:17:47.40ID:Opml9bS20
winみたいなマルチタスクOSではアプリ層で割り込み禁止にできないし
AHK側の設定をどう変えてもノーディレイにはならない

けどsleepの精度を上げる方法はある模様
http://www.charatsoft.com/develop/otogema/page/02window/sleep.html

AHKで適用できるのか、できてもインタプリタなスプリクトでどこまで
シビアに時間制御ができるのかは知らんけど
569名無しさん@お腹いっぱい。 (ワッチョイ b197-NW7M)
垢版 |
2020/11/10(火) 21:18:03.46ID:7m/sr7zP0
>>567
上記の設定の後に

Sleep(Loops) {
Loop, %Loops%
DllCall("Sleep", "UInt", 50)
}

Shift::
Send, {Lbutton}
Sleep(20)
Send, {Lbutton}
Return

https://stopwatch.onl.jp
検証サイトはここです
Loop使わず直接1000ms指定だとディレイなし、Loopありだと+100~200ms,設定全削除だと+300~400msに増えました
2020/11/10(火) 21:55:37.89ID:Opml9bS20
A_TickCount を使おう
ループの中に組み込んで所定時間が過ぎてたらbreakするように組めば
sleepでの時間誤差は考慮しなくて良くなる
2020/11/11(水) 00:33:28.39ID:V+LIbDi40
>>569
↑のスクリプトで検証、ループであってもほぼ一致(+20〜30ms)ブラウザ経由の誤差だけ
他の負荷がかかってるのかも?タスクマネージャーで確認

念のため以下のスクリプトで検証してみてください。
通常は1ms程度の誤差しか出ないはずです。
https://pastebin.com/Rs3N47rb
572名無しさん@お腹いっぱい。 (ワッチョイ 1597-D0pj)
垢版 |
2020/11/13(金) 21:38:30.41ID:p37fZhSk0
>>571
セーフモードでの検証で
https://pastebin.com/JeZ4Y5kQ
AHK再インストール後でも同じでした
2020/11/15(日) 18:32:50.67ID:mZ0u8NFa0
低スペでもそんな現象にならんと思うし
AHK関係なくハードに何か問題が発生しているのでは?
2020/11/15(日) 19:12:31.38ID:mZ0u8NFa0
毎回sleep誤差15msってことは分解能の問題みたいですね
>>573は忘れてくださいw

精度を上げるサンプル(timeBeginPeriod)
https://www.autohotkey.com/docs/commands/Sleep.htm#ShorterSleep
575名無しさん@お腹いっぱい。 (ワッチョイ 1597-D0pj)
垢版 |
2020/11/15(日) 22:19:49.93ID:F94Ybu5B0
>>574
50ms200回で10125まで精度上がりました、ありがとうございます
2020/11/18(水) 02:47:53.44ID:jye7OlUl0
firefoxを83にアップデートしたらfirefox関係のスクリプトが動かなくなった。
調べてると返ってくるウインドウタイトルが
YouTube - Mozilla Firefox とかから
YouTube - Mozilla Firefox と真ん中の棒が変わってた。
このまぎらわしい棒は何だと調べたらem-dashとか言うらしい。
2020/11/18(水) 02:56:36.33ID:jye7OlUl0
すいません、>>576は間違えて同じもの2回貼り付けただけでした。
こっちが正しい比較です
YouTube - Mozilla Firefox (真ん中がハイフン)
YouTube ? Mozilla Firefox (真ん中がem-dash)
2020/11/18(水) 02:59:50.81ID:jye7OlUl0
だめだ、em-dashが?になって5chだと表示されないみたい。
em-dashはハイフンがちょっと長くなった見た目の記号です
2020/11/18(水) 09:14:49.00ID:RsW9sGDZ0
>>576
ウインドウクラスで指定すれば?
もしタイトルも必要なら「em-dash」以降は指定しなくても特定できるでしょ
#IF [ウインドウクラス] && [「em-dash」以降を削除したウインドウタイトル]
↑とかで
2020/11/18(水) 09:18:34.79ID:RsW9sGDZ0
>>579
>#IF 〜
省略し過ぎな書き方でスマン
でも何となく分かるっしょ
2020/11/18(水) 10:16:17.44ID:RsW9sGDZ0
あ、>>579は何か間抜けな方法だったかも…↓な感じで良かったか?
#IfWinActive, 「em-dash」以降を削除したウインドウタイトル ahk_class MozillaWindowClass

適当なこと言い過ぎだから後は黙っときまつ
2020/11/18(水) 12:27:26.44ID:jye7OlUl0
>>581
youtubeドメイン内のページ全てで動作させたいので、SetTitleMatchMode, 2 でタイトル部分一致にして

#IfWinActive,YouTube - Mozilla Firefox

としてます。youtubeドメインのタイトル末尾は全部 YouTube - Mozilla Firefox で終わってるので。
2020/11/18(水) 19:23:06.56ID:R3wB7cjZ0
a up::b
とすると
Line Test:*a up up::
Error:invalid hotkey
のようにエラーが出てしまう。対処法を教えてください
2020/11/18(水) 19:32:07.56ID:N187D9Tyd
>>583
a up::send, b
2020/11/18(水) 20:02:08.83ID:R3wB7cjZ0
>>584
出来ました。ありがとうございます

AutoHotkeyJpのリマップの項を読んでも、いまいち分からないんだけど
リマップしようとすると、スクリプトの実行時に自動的にホットキーに変換されちゃって、それが
a up up::
になって、エラーの原因になっている。って認識でいいんでしょうか?
2020/11/18(水) 20:29:34.01ID:5zToSpE1a
>>577
ついにウィンドウタイトルというかアプリのリソースにUnicodeが使われる時代がきたのか
これまでどおり「-」ハイフンというかマイナスだとなんか問題があるのかねぇ
今回のように障害になることの方が多い気がするなぁ
2020/11/18(水) 20:39:04.99ID:gySV1Zomd
>>585
そんな感じ
2020/11/19(木) 20:16:44.85ID:JScPAAMr0
質問なのですが、1つのスクリプトの中で SetTitleMatchMode,2 と SetTitleMatchMode,3 を混在することは出来ますか?
下のように書いても初めの SetTitleMatchMode,2 のみ読み込まれているようなのですが

SetTitleMatchMode,2 ;部分一致
#ifwinactive 無題
^2::
msgbox, 2
return
#ifwinactive

SetTitleMatchMode,3 ;完全一致
#ifwinactive 無題 - メモ帳
^1::
msgbox, 1
return
#ifwinactive
2020/11/19(木) 21:12:14.90ID:aDkK1dmt0
#If系で参照する既定値はAutoexecuteでしか指定できない
スレッドごとの再指定は可能なのでホットキーラベルの中では使える

SetTitleMatchMode,2 ;部分一致

^2::
msgbox, % A_TitleMatchMode
return

^1::
SetTitleMatchMode,3 ;完全一致
msgbox, % A_TitleMatchMode
return
2020/11/19(木) 21:19:49.46ID:dLHSdZBc0
>>588
SetTitleMatchModeとウィンドウ判定を使ったユーザー定義関数を自作する

#If 部分一致()
#If
#If 完全一致()
#If
2020/11/19(木) 23:26:20.80ID:JScPAAMr0
>>589,590
ありがとうございます、上手くわけることができました。
2020/11/21(土) 15:47:54.04ID:HFuDqTjt0
GUIのウィンドウスタイルについて教えてください
メッセージボックスのような閉じるボタンのみのGUIウィンドウは作成できますか
よろしくお願いいたします

サンプル
Gui, -MinimizeBox +AlwaysOnTop ;SysMenu+XButton
;Gui, -SysMenu +AlwaysOnTop  ;None
Gui, Add, Edit
Gui, Show
MsgBox
ExitApp
2020/11/21(土) 17:24:41.85ID:gIijDdiS0
>>592
なんでサンプルがEditなんだよ
2020/11/22(日) 11:14:04.41ID:6IUc61XH0
>>592
解決しました
ttp://www.autohotkey.com/boards/viewtopic.php?t=35803
2020/11/24(火) 14:18:35.34ID:35b4u2J50
すいません教えて下さい
zを押してある場所で左クリックしたままにして
zを離したら左クリック解除して他の場所をクリックしたいんですが
200ms以内に離した場合は200ms後に左クリックするようにしたいんです

z::
MouseClick, L, 900, 775, 1, 0, D
Sleep, 200
Return
z Up::
MouseClick, L, 900, 775, 1, 0, U
MouseClick, L, 690, 775, 1, 0
Return

これだと200ms以内にクリックしてしまいました
どうすればいいか教えて下さい
2020/11/26(木) 19:22:30.23ID:0VP9GA5s0
>>595
望みが実現しない原因。
Sleep,200 でSetTimer以外のスクリプト全体の動きは止まるが、
z Up::で新たなスレッドが実行されたので、
Sleep,200 の動作が一時停止し、MouseClick,U が行われた。
(z Up::の実行を終えた後、Sleep,200 のスレッドが再び動く)

KeyWaitを使うといいぞ

z::
x1:=900,y1:=775,x2:=690,y2:=775
MouseClick, L,%x1%,%y1%, 1, 0, D
KeyWait,z,T0.2 ;指定秒数 指定の状態になるのを待機する
if ErrorLevel ;時間が過ぎても指定の状態にならなかった
{ ;200ms以上押した場合
KeyWait,z ;このままzキーを押し続けた場合、z::が連続で実行されてしまうので待機処理を入れる
Send,{LButton UP}
;MouseClick, L,%x1%,%y2%, 1, 0, U
MouseClick, L, %x2%,%y2%, 1, 0
}
Else
{ ;200ms以内に離した場合
Sleep,200
Send,{LButton}
;MouseClick, L,%x1%,%y1%, 1, 0
}
Return
2020/11/27(金) 13:40:13.10ID:j5UTV/Iv0
>>596
ありがとうございます出来るようになりました

ロジクールのlua scriptでやっていた事をautohotkeyでやろうとしたんですが
自動でコマンド間などにsleepが入るとかでちょっと指定時間より遅れるので

#NoEnv
SetBatchLines, -1
ListLines, Off
SetKeyDelay, -1

これを先頭に突けてみたのですがlua scriptより遅かったです
他に方法があったら教えて下さい
2020/12/03(木) 10:36:24.66ID:9dOR8MWZ0
Loopの使い方が分からないので教えて下さい
やりたい事は指定範囲の色が変わったらマウスポインタをA点(650, 750)に移動させ
色が変わる前にF2キーを押したらそB点(1500, 1000)に移動させてLoopを終わらせたいです
F2キーを押してB点移動した後もLoopが終わらず色が変わるとポインタがA点に動いてしまいます
F2キーを押したらB点に移動しLoopが終わるようにするにはどこが間違ってるか教えて下さい

F1::
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
Loop  ;指定範囲が0xFDFDFD色になるか
{  ;F2キーが押されるまでLoopさせる
PixelSearch,,, 1265, 370, 1270, 375, 0xFDFDFD, 3, Fast
GetKeyState, state, F2  ;F2キーの状態を取得
if (ErrorLevel = 0 or state = D)  ;0xFDFDFD色になる or F2キー操作でLoopを終わらせる
break
}
if state = D  ;F2キー操作ならLoopを終了してF2キーに割り当てた操作をする
Return
Else  ;0xFDFDFD色になら 650,750 に移動してLoopを終わらせる
MouseMove, 650, 750, 0  ;A点
Return

F2::  ;F2キーを操作したら 1500, 1000 に移動
CoordMode, Mouse, Screen
MouseMove, 1500, 1000, 0         ;B点
Return
2020/12/03(木) 12:26:50.32ID:GUp+2HRv0
試してないけど怪しそうなとこ
if (ErrorLevel == 0 or state = "D")

if () と if カッコなし は記述ルールの違いが紛らわしいんで
なるべく混在させないほうがいいよ
2020/12/03(木) 13:48:39.55ID:9dOR8MWZ0
>>599
有難うございます

if (ErrorLevel = 0 or state = D)のカッコを外したらA点に移動しなくなりました

if (ErrorLevel = 0 or state = D)のまま
if state = Dにもカッコをつけたら前と変わらない動作のままでした
2020/12/04(金) 00:31:13.26ID:0dL9tzcB0
>>600
>>599をよく読もう
2020/12/04(金) 09:30:50.35ID:tzc0zJrS0
>>601
勘違いしてました
Dに""付けたら希望通りの動作しました
有難うございました!
2020/12/04(金) 17:04:28.42ID:MrImZAZK0
v2はいつまでαなんだろうな
2020/12/05(土) 02:10:21.07ID:M7niQZd10
>>603
現状(v1?)で不満ないんだけど、v2使うメリットって?
2020/12/05(土) 21:56:19.61ID:ttw726i4a
新しければ新しいほど楽しい
2020/12/08(火) 19:56:16.74ID:yaQ1ZOXD0
AppleのUSキーボードをWindows10環境で使用しています。
(左CommandキーはLWin、右CommandキーはRWinとして認識されています)

・LWin単体で押されたときにvk1Dsc07B(無変換)を送る
・RWin単体で押されたときにvk1Csc079(変換)を送る
・↑と被るためWindowsキー単体で押された時の機能(スタートメニュー表示)は無くしたいが、Win+Rなどは残したい

ということがやりたいです。

~LWin Up::
if (A_PriorKey = "LWin") {
Send {vk1Dsc07B}
}
Return

が望みに近いのですが、スタートメニューが表示されてしまいます。
LWin::Return などを加えるとスタートメニューは表示されなくなりますが、Win+Rなども効かなくなってしまいます。
どのように設定すればよいか教えていただけますでしょうか?
2020/12/11(金) 04:43:38.79ID:3zDhK2Cg0
>>606
LWin::vk1D
LWIN & r::#r

余計な事せずこれじゃダメなの?
コンビネーションキーひとつ書くだけでWin+Dとかも全て利用可能になる
608名無しさん@お腹いっぱい。 (ワッチョイ 7f6e-LBAI)
垢版 |
2020/12/11(金) 18:18:16.53ID:7ZWD+tQW0
>>607
ありがとうございます。
教えていただいた方法で実現できました!

全然話は変わるのですが、マニュアルはどちらを参照されていますか?
vk1Dとかの書き方、自分の探し方だと出てこなかったもので。。。
2020/12/11(金) 18:37:56.77ID:wFOUTixS0
>>608
基本的に日本語wikiとここしか見てないよ
vk1Dとかの書き方はたまたまAHKのUpdateで記述ルールが変わった時にスレ見てたから
自分は把握してるだけでwikiは古い仕様のままだから直ってない
直せるなら直したいけどロックされてて出来ないんだよな
2020/12/12(土) 00:50:25.31ID:gZiNtGot0
>>609
ありがとうございます。

# 教えていただいた設定に変えて手も慣れてきて、すっごい快適になりました。
2020/12/13(日) 01:46:26.64ID:yWHewayM0
長いことバージョンアップしてなくてv1.1.33.02にしたら

・カタカナひらがな
vkF2sc070:: Run, calc.exe
・変換
vk1Csc079:: Run, calc.exe
・無変換
vk1Dsc07B:: Run, calc.exe

各キーに割り当てていたホットキーがすべてエラーになります
なんと書き直せばいいのでしょうか?
2020/12/13(日) 01:57:20.57ID:YY9Cj1GT0
>>611
>>607-609
2020/12/13(日) 02:18:24.77ID:yWHewayM0
>>612
ありがとうございます!
直上に書いてあったんですね
2020/12/13(日) 08:32:21.21ID:8FNHh+bd0
自分もvkscって頃にAHK使い出したけど 恐ろしくて新しいバージョン手を出せないっす やっぱり新しいやつのほうがいいのかしら
2020/12/13(日) 13:27:44.30ID:KxxmPkUk0
>>614
※新規利用者には最新版を推奨しますが、旧AHK(2009年9月までのVer)の利用者は新AHKへの移行に際して
少なからず改修が必要となります。特に、旧流行らせるページの配布物(MouseGesture等)の多くは
そのままでは動作しません。安定利用できている環境を崩して移行するかどうかは各人の判断による。
2020/12/13(日) 16:23:26.07ID:yWHewayM0
32bitから64bitへの移行も面倒ですよね

これの64bit版がなくて今も32bit使ってます
https://github.com/sourcedog/Wurm-Unlimited-Bot/blob/master/lib/Capture2Text/SourceCode/Capture2Text_AHK_Script/ScreenCapture.ahk
617名無しさん@お腹いっぱい。 (ワッチョイ a776-4B56)
垢版 |
2020/12/13(日) 21:26:47.00ID:403G4Faz0
hotstringが効かないことがあるのは、バグなんですかね
618名無しさん@お腹いっぱい。 (ワッチョイ a776-4B56)
垢版 |
2020/12/14(月) 12:23:39.07ID:qR6AWokf0
#Hotstring C O K-1 Z
:R:gistp::git stash pop stash@{}

で更に、キャレットを1つ左に移動させたい場合はどうすればよいでしょうか。

試しに
::gistp::
tmp := ClipboardAll
Clipboard = git stash pop stash@{}
Send, %Clipboard%
Send, {Left}
Clipboard := tmp
tmp =
Return
のようにしてもみましたが、Rをつけてもつけなくても(#Hotstring/:R:)、
{}さえ入力されなくなりました。
■ このスレッドは過去ログ倉庫に格納されています

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