AutoHotkey スレッド part26

レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/04/25(水) 18:08:09.39ID:LmrG+Efz0
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512

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

■前スレ
AutoHotkey スレッド part25
https://egg.5ch.net/test/read.cgi/software/1505357560/

■日本語解説等
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 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2019/03/23(土) 10:47:31.33ID:PxoVUC0e0
>>863
あと自分の中でルール決めといた方がいい。If関係は必ず()でくくって式にする、ブロックは必ず{}でくくる。
代入は必ず:=を使って=は使わない、とかね。
2019/03/23(土) 10:47:37.92ID:AYFl8FRa0
>>863
最後がキモすぎw
謎の呪文にしか見えん。ひょっとして、
"% " <- パーセントの後はスペースが重要とか!?
2019/03/23(土) 11:53:25.14ID:rQNsNz/vr
慣れだよね
if文は必ず
if (msg != "")
みたいに書く事にしてる
Stringコマンド系ではoutput,inputvarは%%で囲わない
あとはLoop,Parseのinputvarもか

タイトルバーに.ahk が含まれるとき
:*Z?:if89::if ()
:*Z?:regm::RegExMatchk(, "", $){Left 8}
:*Z?:regr::RegExReplace(, "", "", ""){Left 13}
よく使う定型文はこんな感じでホットストリングでまとめてる
2019/03/23(土) 12:27:00.63ID:rQNsNz/vr
RegExMatchkてなんだk混じったスマソ
RegExMatchだた
868名無しさん@お腹いっぱい。 (ワッチョイ b3b1-OfgV)
垢版 |
2019/03/27(水) 01:42:01.98ID:Iw36cCT10
文字キーだけキーリピートを防止(無効化)する方法ってありません?

文字入力を遅らせる(DownでなくUp時に文字が送信される)って方法は思い浮かぶものの
文字入力を遅らせることなく、純粋にキーリピートだけさせなくする方法がわからず…
2019/03/27(水) 02:02:20.72ID:/mxbyJYP0
>>868
a::
Send,{a down}
KeyWait, a
Send,{a up}
Return

b::
Send,{b down}
KeyWait, b
Send,{b up}
Return
〜以下略

面倒だけど文字キー全部登録すればキーリピートしない
もっとスマートな方法あるかもね
2019/03/27(水) 04:05:16.44ID:Iw36cCT10
>>869
ありがとうございます
UpしてないうちにUpってしちゃって問題ないのか気になるのと(たまに挙動が変になるソフトあったような)、
Upだけで独立して設定してるキーがいくつかあるのでこの方法は合わなさそうですね…
2019/03/27(水) 04:59:10.86ID:ytVG4L1f0
>>870
実際に試したか?
KeyWait入ってるから「UpしてないうちにUpってしちゃって」なんてことは無いぞ
普通にキー押したらdown、キー離したらUpでリピートはしないだけ
試しもせずに合わないとか言ってるならもう二度と質問するな
2019/03/27(水) 06:44:51.24ID:Iw36cCT10
>>871
あっ…………KeyWaitしてるんだから待機されてて直後のSendは実行されるわけないですよね…………
一読しただけで、なんか「KeyWaitしたあとすぐそのキーを強制的にUpして解除することでキーリピートを防ぐ的なHack」的なものだと思い込んでました…………
穴にこもります…………
2019/03/27(水) 16:14:54.79ID:zt4bzZsxr
>>868
#HotkeyIntervalと
#MaxHotkeysPerInterval
で済むとかそういう話ではない?
2019/03/27(水) 19:20:03.11ID:XPSJXypX0
>>869
フック忘れてる
$a::
2019/03/28(木) 00:30:16.89ID:RLY0C+Oa0
お尋ねします。
以下の組み込み変数はありますか?。
C:\Users\ユーザー名\AppData\Local
2019/03/28(木) 01:00:15.72ID:VP8ZYpip0
ここさがして無いなら無い
https://autohotkey.com/docs/Variables.htm#BuiltIn

環境変数から引っ張てくることはできるから
EnvGet,LOCALAPPDATA,LOCALAPPDATA したらいいんでね
877名無しさん@お腹いっぱい。 (ワッチョイ 9f1f-Syny)
垢版 |
2019/03/28(木) 11:02:32.92ID:ceDg/aqd0
以下のような事ってどう記述すればよいのでしょう

w → Shift + w
※wを押し続けている間、その状態(Shiftとwの同時押し)を保持したい

B + W → 8
B + E → 9
※ Bを押している間に別のキー(W)を押した場合、単独で押した場合と違う定義(8)を出力したい
B単独での押下時はwやb同様に別のキーを登録できれば理想ですが、無効でも構いません。
2019/03/28(木) 11:19:00.91ID:VP8ZYpip0
>w → Shift + w
リマップもしくはkeywait>869
http://ahkwiki.net/Remap

>B + W → 8
コンビネーションキーもしくはgetkeystate
http://ahkwiki.net/Hotkeys#.E3.82.B3.E3.83.B3.E3.83.93.E3.83.8D.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.AD.E3.83.BC
http://ahkwiki.net/GetKeyState-
2019/03/28(木) 11:29:44.90ID:ceDg/aqd0
>>878
ありがとうございます。
KeyWaitの方は単独で動作確認できました。
コンビネーションキーもしくはgetkeystateの方、これから調べてみます、どうもでした。
2019/03/28(木) 12:19:17.53ID:RLY0C+Oa0
>EnvGet,LOCALAPPDATA,LOCALAPPDATA したらいいんでね

>>876
これは素晴らしい、ありがとうございました!。
2019/03/29(金) 13:21:17.49ID:1pIbiSZS0NIKU
>>869さんの方法で完璧にキーリピートしないようになりました
$a::
$a Up::
みたいに分ける必要なくキーアップ時の動作を書けますし良いですね

……ところが、「asahi」「akari」など折り返して3文字以上を打つときにロールオーバーしてると(前のキーから指が離れきってないと)
「ashi」「akri」のように、折り返し2回目となる文字が出力されず飛ばされてしまうようです
1キーずつしっかり指を離していればそうはならないんですけど
ここだけどうしたものか…


>>873
https://sites.google.com/site/autohotkeyjp/reference/commands/-MaxHotkeysPerInterval
> #MaxHotkeysPerInterval 70位にしておけば、コントロールパネルのキーボード設定で 表示の間隔を最速にしていても問題ないはずである。
って感じですか、やってみます!
882名無しさん@お腹いっぱい。 (ワッチョイ 9f76-2SEu)
垢版 |
2019/03/31(日) 23:53:41.65ID:Um1qMTue0
;BackSpace+Delで全消し(Ctrl+A→Del)
{Backspace} & {Delete} :: Send,^a
Send,{Backspace}
return

どこに問題があるのでしょうか?(初心者です)
883名無しさん@お腹いっぱい。 (ワッチョイ 9f76-2SEu)
垢版 |
2019/03/31(日) 23:59:17.07ID:Um1qMTue0
Shift+キーボードの0でIME設定に依存せず
(全角モードなら全角のカッコが入力されるようなIME設定だとしても)
半角の()を入力し、カーソルをカッコの間に移動させたいのですが、
動作完了後、日本語入力モード時には日本語モードに、
英語モードなら動作完了後に英語モードにしたいです。

^vkF2::Send, {vkF2}{vkF3}

は別で用意していますからこちらのホットキーを組み込んでいただいて構いません。
2019/04/01(月) 00:00:49.90ID:SHVZOtin0USO
>>882
2行以上のコマンドは :: の後改行しましょう
:: の後に続けて書く場合は1行のみのコマンド
2019/04/01(月) 00:07:15.29ID:SHVZOtin0USO
>>882
あと :: の前のBackspaceやDelに {} は不要
2019/04/01(月) 00:10:24.93ID:IB03RE8+0USO
ホットキーラベル名には{}が要らないのと複数行続く場合は改行が要る(多分)
Backspace & Delete::
Send,^a
Send,{Backspace}
return

あと&を使うと前者のキー(Backspace)を修飾キーとして扱うようになるので別途
Backspace::Send,{Backspace}
というのも記述しないとBackspace自体の機能が失われる
ctrl+Bsとかshift+Bsとかも使うなら全部書かないといけないから単体でよく使うキーはコンビネーションキーにしないほうが無難
2019/04/01(月) 00:33:29.72ID:SHVZOtin0USO
>>883
IMEをあれこれするよりもクリップボードに半角の () を格納してそれをペーストした方が簡単

Clipboard =()
2019/04/01(月) 08:07:41.70ID:GH//97jwrUSO
>>883
俺は数字キーは基本テンキー使う&IME設定で数字と記号は常に半角なんで
参考にならんかもだけど
:ZC?:89::
Send, % GetKeyState("Numpad9", "P") ? "89" : "(){Left}"
return ;1行コマンドでは動作しない

でなきゃControl,EditPasteで半角()挿入して{Left}するとか
2019/04/01(月) 09:23:36.20ID:DLx25xCo0USO
ほんなら自分は>883の希望通りのスタンダードな解を
>7のIme.ahkでIMEの状態取得とON/OFFができるので
Send,(){left} の前後に入れりゃ一時的にOFFにして後で元に戻せるよ
890名無しさん@お腹いっぱい。 (ワッチョイ 9f76-2SEu)
垢版 |
2019/04/01(月) 16:23:57.20ID:rKdTTOLH0
>>883です。

皆さんありがとうございます。クリップボードの案は考えていたのですが、
クリップボードを更新したらツールチップを表示するように設定しており、
カッコを入力するたびにそれが表示されることを避けたくあのような形にしておりました。

; コピーしたらツールチップを表示
OnClipboardChange:
ToolTip コピーしました。
SetTimer, RemoveToolTip, 100
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return

これですが、ここの条件分岐で特定のキーコンビネーションの場合
ツールチップ表示を無効化することはできますか?


追伸
>>888さん、テンキーの0出ない理由は、カッコと閉じカッコのキー配列の隣に
カッコ+閉じカッコがあるとわかりやすいからでして、
出先のゲストPCでの使用を考えておりますのでIME設定をイジりたくないというのもあるんです。
2019/04/01(月) 16:50:24.80ID:2O8l6K5O0
>>890
OnClipboardChange: のあとGetKeyStateで0が押されてたら何もしない、0が押されてなければToolTip表示する
という風にすればShift+0で>>887のやり方してもToolTipは表示されずに済む
2019/04/01(月) 21:17:27.18ID:BYuDk2yW0
今はスクリプトでClipboardを使う間だけOnClipboardを実行しないという書き方もできるよね。
2019/04/01(月) 21:59:24.37ID:yuSqms7G0
>>890
https://qiita.com/catfist/items/cdb8300221b48667b155
894名無しさん@お腹いっぱい。 (ワッチョイ 1b56-endp)
垢版 |
2019/04/02(火) 05:36:25.25ID:kLJlMJjs0
ホットストリングで何故か削除される文字が一文字or二文字なんですけど、原因ってわかりますか?
このコード以外全部削除してみても変わりませんでした

#Hotstring O C ?

@(記述) :*:--::= (入力) -- (実行後) = 問題なし
A(記述) :*:---::= (入力) --- (実行後) -= 完全に削除されない
B(記述) :*:btw::by the way (入力) btw (実行後) bby the way 完全に削除されない
C(記述) :*:aaaaa::bbbbb (入力) aaaaa (実行後) aaab 完全に削除されない上に記述も一文字
D(記述)
:*:kita-::
Clipboard = キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
Send,^v
Return

(入力) kita- (実行後) kitキタ━━━━━━(゚∀゚)━━━━━━ !!!!! 完全に削除されない

Version 1.1.29.01
895名無しさん@お腹いっぱい。 (ワッチョイ 9f76-2SEu)
垢版 |
2019/04/03(水) 07:45:59.52ID:pmmlmruq0
ありがとうございます。試してみます。

ところでこちらのスクリプトですが、(MGLのスクリプトのためトリガー表記は省略)

;セカンドモニターOn/Off
Send,#p
Sleep 1000
Send,{Down}{Down}{Enter}

セカンドモニターで拡張表示/無効を切り替えたいのですが、
これはWin+Pでメニューが表示されるまで1秒位としてSleepしていますが、
この他の方法で読み込まれるまでウェイトする方法はありますか?
もしくは拡張/無効をコマンドから直接指定する方法があればその方が嬉しいです。
2019/04/03(水) 23:55:04.99ID:zsfxQvoQ0
>>895
現状値をレジストリなどからよめれば直接指定でもトグル動作できるかもね

WinWait, プロジェクション オプション ahk_class DisplaySwitchUIWnd

Run, DisplaySwitch.exe /internal ;PC 画面のみ
Run, DisplaySwitch.exe /clone ;複製
Run, DisplaySwitch.exe /extend ;拡張
Run, DisplaySwitch.exe /external ;セカンド スクリーンのみ
2019/04/04(木) 12:15:16.56ID:J5prp1ag00404
curr := GetCurrentWindow()
... ウィンドウ切り替えながらなにか処理する ...
SetCurrentWindow(curr)

ってどうやればいいんですか
2019/04/04(木) 18:38:06.31ID:b+pbUqw000404
>>894
動くもの書かないとなにが間違っているのか誰も分からないし推理しかできない
スクリプトに問題が無ければ書き込み先が反応しきれて無いかもしれないので
入力方式や入力間隔を変更する

>>897
さきに謎の関数について解説どうぞ
2019/04/04(木) 20:45:27.12ID:s4SJqDpEa0404
正規ソフト「AutoHotkey」を悪用した攻撃を確認
https://blog.trendmicro.co.jp/archives/19054
2019/04/04(木) 20:48:25.13ID:jGB2NYmt00404
Excelってローカル実行ファイルの実行までできるんかい
まあどっちみちGoogleドキュメント使ってるからいいけど
2019/04/04(木) 20:56:35.76ID:Aus3jS2v00404
脆弱性を利用してる訳では無いし、アウトバウンドが許可されていることを前提としたトロイだね
2019/04/04(木) 21:15:19.34ID:b+pbUqw000404
Excelのマクロ、UACの両方を許可しないと駄目だから
何でもOK押す奴以外は被害出ないなw
2019/04/04(木) 22:06:41.87ID:CTEDQe3f0
AutoHotkeyってすごいんだ?
2019/04/04(木) 22:34:26.00ID:htcfbf5k0
ちょ
excel VBAからahkスクリプト呼び出す自作マクロめっちゃ活用してるし
余波でofficeアプデでexeやahk実行できなくされたら困るわ
2019/04/04(木) 22:37:39.75ID:Z4IEvWJ+a
歪んだ記事だなぁ
と思ったらまたトレンドマイクロ(笑)か
2019/04/04(木) 22:46:10.25ID:28hPaWehD
トレンドマイクロはnetcatもマルウェア扱いするからなぁ
2019/04/04(木) 23:23:15.41ID:jGB2NYmt0
ていうかトレンドマイクロ自体がウイルスw
2019/04/04(木) 23:30:04.95ID:htcfbf5k0
そういやappleからリジェクト食らったのトレンドマイクロだったっけか
2019/04/04(木) 23:44:17.21ID:Sjr4vufl0
バッテリーうんぬん謳っておきながら個人情報収集してたことがバレてリジェクト
2019/04/05(金) 07:16:28.57ID:/ocReVZk0
PC版のラインアプリを起動時に最小化するスクリプトが公開されていたのだが、
2019/04/05(金) 07:18:01.58ID:/ocReVZk0
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
}
}
2019/04/05(金) 14:04:12.13ID:N5hiUbQd0
>>911
PC版のラインアプリ使ってないので未確認だけど
ソフト更新でWindow Titleが変わった可能性はある
とりあえずWindow SpyでTilte確認してみたら?
2019/04/05(金) 21:46:16.16ID:HkeYWmDs0
WinClose, LINE ahk_class Qt5QWindowIcon

これ実行したらちゃんと最小化したよ
上の方のごちゃごちゃしたとこで判別するより、Ahkから実行も制御したほうが確実じゃない?
2019/04/05(金) 22:34:11.55ID:iLOnLSiF0
WinWaitじゃダメなの?
2019/04/05(金) 23:51:59.01ID:/ocReVZk0
>>911です。
レスをくださった皆様、ありがとうございます。

>>913さんのおっしゃるとおり、1行コマンドで最小化しますね。
別のアプリで、ラインの起動完了後に最小化を自動実行するような
方法も考えられますね。

公開されていたスクリプトは私が作ったものではないのでよく分からないのですが、
要はラインを起動して、起ち上がったところを待って最小化するという流れですよね。
確かにもっとシンプルにできそうな気もしますが、Auto Hot Keyについて私は詳しくないので、
どなたかに助けていただこうと書き込んだ次第です。
2019/04/06(土) 00:17:20.99ID:Mi3BX5zj0
詳しくないから拾い物を丸投げで直してくれってのはこのスレ的にはNGだぞ
次があったら多少なりとも自力で調べてから来なさい
2019/04/06(土) 00:17:39.01ID:H8flpso40
>>915
AHKスクリプトを理解するための手助けならするけど、その気が無いなら諦めて
ここはクレクレする場所じゃないので
2019/04/06(土) 05:31:19.70ID:DSEOTDXK0
>>898
秀丸やメモ帳、2chブラウザなどでも動作は変わらないです
例えば、:*:---::=というコマンドをキーヒストリーで確認すると
どんな長さの置換後テキストでもBSは上げ下げ各二回しか入力されてないですね

:*:btw::
sleep,200
send,{BS}
send,by the way
return

これなら目的の結果は出るんですけどちゃんと動いているとは言い難いですね
自動削除の前にディレイを入れないと3段目のBSすら認識できないです
オプションでK200とかSEやSP入れてみたんですけど
何故かこのオプションは無視されますね エラーも出ないです
2019/04/06(土) 06:17:06.72ID:zsfgWZD+0
>>916
>>917
すみません、大変失礼しました。そのようなルールがあることを知らなかったもので、以後気をつけます。
今回ヒントも頂けたので、自分なりに解決法を模索してみます。ありがとうございました。
2019/04/06(土) 12:40:24.52ID:QPQId0nc0
>>918
問題の起こる最低限のコードを貼ってください
話はそれから
2019/04/06(土) 13:24:45.41ID:QPQId0nc0
>>918
:SE K200 *:---::xxx
:SP K200 *:+++::xxx

デフォのInputはまとめて送る方式なので入力間隔意味なし
コレで問題起こるならB0追加して自前でSend
2019/04/06(土) 20:11:33.00ID:DSEOTDXK0
>>921
すみませんお騒がせしました
チャタリングキャンセラーを入れていたのが原因でした
試行錯誤していくうちに同一キーが入力間隔が短いと認識されないことに気付いたので判明しました
近々HHKBを買う予定だったのでこれを機に買い換えようと思います

すみませんでした 色々アドバイスしていただきありがとうございます
2019/04/08(月) 14:49:39.47ID:qB4OqtLG0
トレンドマイクロ、キー操作自動化ツール「AutoHotkey」を悪用した攻撃を確認・警告
https://forest.watch.impress.co.jp/docs/news/1178824.html
2019/04/08(月) 15:37:11.19ID:JYRxqbmi0
>>923
>>899
2019/04/08(月) 15:47:44.72ID:LzPhJWFJ0
窓の杜って話題が数日遅いよな
あれを情報ソースで貼るって情弱すぎ
926名無しさん@お腹いっぱい。 (ワッチョイ 0276-umYY)
垢版 |
2019/04/08(月) 17:07:02.03ID:+xRa13c20
大学に置いてあるPCで、MGLは使えましたがAHKはエラー吐いて使えませんでした。
家のWin8.1で使っているものをコピーしましたが、OSの兼ね合いではないですよね?
セキュリティ上の問題でキーバインドに関わる領域へのアクセスは禁止されているとか?
かなり使い倒しているのでAHKなしではキツイのですが、何か、
AHKを起動する方法や代案はないでしょうか?
2019/04/08(月) 17:33:42.61ID:P5Sy7UEn0
大学に聞けよ
2019/04/08(月) 17:47:12.29ID:xlAMOVgb0
>>923
これって添付ファイルさえ開かなきゃ大丈夫なんだよな?
つか怪しい添付ファイルを普通に開くなっつw
2019/04/08(月) 19:39:48.05ID:W/Zp/Yxh0
>>925
あんのじょう樽井秀人で草生える
あいつ遅いし間違いあるしとんでもないな
930名無しさん@お腹いっぱい。 (ワッチョイW ee97-K0nu)
垢版 |
2019/04/08(月) 19:47:58.06ID:+I30UC5M0
内部の人間かよ
2019/04/08(月) 21:49:27.31ID:DcbmT0400
>>926
OSの兼ね合いもあり得るし
bit数の兼ね合いもあり得るし
権限の兼ね合いもあり得るし
AHKバージョンの兼ね合いもあり得るし
コードの書き方で下位互換取れなくなることもあるのでそれだけの情報では何とも
大学のPCのOSバージョンわからんがwin10ではAdmin権限でUAC切ってても
できないことは増えてるよ

MGLが起動できるならAutohotkey*.exeでブロックされてるだけかも知れんがな
>899が発表された後だし
2019/04/08(月) 21:53:55.86ID:Ybo7mrUl0
a >= b
と書くべきところを
a => b
と書いてしまいました
すると、エラーにはならずに通るのですよ
これ、どういう処理をしてるのでしょうか

たとえば、
if( a => b )
2019/04/08(月) 22:52:52.97ID:dtEOa8yO0
>=と=>は同じ意味だから平気
2019/04/08(月) 23:24:34.06ID:JYN8cO/g0
>>932
>>933
(a = 空 > b)
式として成り立たないので空

MsgBox % (1 = ) ; 空
MsgBox % (1 = 1) ; 1
MsgBox % (1 = 0) ; 0
2019/04/09(火) 07:32:24.04ID:kB8+leot0
>>933
嘘つくな

a => b はちゃんとした答えを出さないよ
2019/04/10(水) 01:28:44.14ID:lHjLlmt60
ちなみにほとんど使ってる人いないだろうけどAutoHotkey v2だと
a => b は a <= b と明確に違う。
https://lexikos.github.io/v2/docs/Variables.htm

使用例はこんなのとか。
https://lexikos.github.io/v2/docs/commands/ToolTip.htm
2019/04/10(水) 06:48:21.15ID:g8rQCpt50
>>936
ありがとう。 こんな使い方するんだねえ

double := a => a * 2
2019/04/10(水) 06:51:27.44ID:g8rQCpt50
しかし、if()の中とか条件分岐のところでは、
=> はエラー判断してほしいよ。 わかってはいるが、つい間違えることもあるからなあ
2019/04/10(水) 08:24:21.96ID:lfZf6WY20
ES6 JSで受け入れられているから、arrow functionは普及すると思う。v2...
=>をsyntax highlightしておけばいいじゃない
2019/04/10(水) 08:44:45.01ID:9EnZGzOa0
Q. AHKウンコすぎね?

A. 黙ってウンコ食え

これテンプレに入れといてくれ
2019/04/11(木) 21:51:31.79ID:shJNY/6t0
下記で、
m を押すと、マウスがZ字状に5回動き、sを押すと、5秒間経ってからDoneと表示されます

これで、mを押してマウスが動いている間にsを押すと、マウスの動きが完全に止まって5秒間待ってDoneと
表示されてから、マウスの動きが再開されてZの動きが終わります

ここで、mを押してマウスが動いている間にsを押しても、マウスの動きと5秒間待ちを同時にすることは出来ませんか
マウスが動きながら5秒間経ってDoneを出す、としたいのですが

もともとは全く別のことをしたいのですが(複雑で説明出来ません)、簡単にしてこの問題にしました
もともとはsの動きをタイマーで定期的に入れているのですが、mの動きをしている最中にタイマーでsが入るとmの動きが一旦停止してしまうのです

m::
Loop, 5
{
MouseMove, 100, 100, slow
Sleep, 500
MouseMove, 500, 100, slow
Sleep, 500
MouseMove, 100, 500, slow
Sleep, 500
MouseMove, 500, 500, slow
Sleep, 500
}
return

s::
loop, 10
Sleep, 500
MsgBox,,,Done !, 1
return
2019/04/11(木) 22:56:01.03ID:epm/mph80
mとsを両方とも別々のタイマーで動かしたら?

sのほうは単純に500msタイマーでカウンタ10で-1ずつして0になったらDoneしてタイマー終了
mのほうはMouseMove一回したらすぐ抜ける500msタイマーで
何回目のMouseMoveかはインデックス変数で+1づつしてってifで分岐
それをループカウンタで5回実行したらタイマー終了
2019/04/11(木) 22:59:07.55ID:jmthjTyC0
>>941
スクリプトファイルを二つに分けてそれぞれ実行
または#Includeで複数のスクリプトを同時に読み込む
2019/04/12(金) 06:41:50.47ID:0wXDrWI60
>>943
#Includeってのは、単にファイルの途中で別ファイルを読み込んでいるだけで全体では1つのファイル、
1つのスクリプトと同じじゃないの?
2019/04/12(金) 13:44:19.42ID:01hZtQQy0
ごめん#Includeはダメでした
2つそれぞれ実行なら同時に行ける
2019/04/12(金) 16:41:11.44ID:sk583VTH0
並列処理は対応してないからなぁ
947名無しさん@お腹いっぱい。 (ワッチョイ 532b-clLQ)
垢版 |
2019/04/12(金) 18:30:01.84ID:LpUTYcTq0
>>941
一番簡単なのは「#SingleInstance Off」を使ってそれぞれ別々のスクリプトで動かすかな
で、AHKはマルチスレッド不可、キー割り込みは可能ってことで自分で処理をシリアライズして並列処理っぽくするしかないということで・・・
マウスを移動する処理とメッセージを処理するルーチンに処理の実施を確認するフラグと稼働時間を確認する処理を付ける
loop
{if(mflag=1)
 {if(mtime=500)
  {MouseMove
   mflag=0
  }
  if(sflag=1){stime+=1}
  mtime+=1
  sleep1
 }
 if(sflag=1)
 {if(stime=5000)
  {MsgBox
   sflag=0
  }
  if(mflag=1){mtime+=1}
  stime+=1
  sleep1
 }
}
キー割り込みでは機能を動作させるフラグをONにする処理とタイマーを初期化する処理を入れる
m::
mflag=1
mtime=0
s::
sflag=1
stime=0
これだけじゃうまくいかないので色々足さないといけないけど考え方だけということで(改行起こられるので読みにくいです)
2019/04/12(金) 18:33:44.35ID:eSD6/P200
s押したときに5秒後ワンタイムのタイマーをセットすればいいだけでは
2019/04/13(土) 20:25:39.71ID:chdD1ygZ0
便利やね
950名無しさん@お腹いっぱい。 (ワッチョイ 2b73-grM/)
垢版 |
2019/04/13(土) 20:58:46.21ID:7yOwuXDN0
なあ、AHK Studioってどうよ。

http://www.maestrith.com/ahk-studio/
https://neokixblog.wordpress.com/2018/11/22/autohotkey-%E5%85%A5%E9%96%80-%E5%AD%A6%E7%BF%92%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-29%E3%80%80%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC%E3%82%92ahk-studio%E3%81%B8%E3%81%AE%E7%A7%BB%E8%A1%8C/

使ってみて、IDEとしては微妙だけど、
単にエディタとしてならアリかなとおもったんだが。
2019/04/13(土) 21:12:40.64ID:SFCAHVL60
適当なエディタにシンタックスハイライトあれば十分と思う。自分はSciTEで事足りてる
まぁ健忘症だったりダラダラと長いコーディングするならIDEもアリかもしれないけどAHKで殆どそんな事しないし・・って感じ
2019/04/13(土) 21:19:39.89ID:BNGM7AbB0
>>950
コンパイルとかは出来るの?
2019/04/13(土) 21:29:40.67ID:BNGM7AbB0
エディタはSciTEしかないと思っていたが、前ここのスレで、秀丸エディタでも問題ないと言われて
やってみたんだが、めちゃ使いにくくて、やっぱりSciTEに戻した
954名無しさん@お腹いっぱい。 (ワッチョイ 2b73-grM/)
垢版 |
2019/04/13(土) 21:35:41.35ID:7yOwuXDN0
>>952
Fileメニューの Compileを選択したらできた。
いまDebugのテスト中。

ToolメニューのDebug-Auto Variable Browser を有効にしたら、
ステップ実行と変数のウオッチができた。これは中々使えそう。

未だブレークポイントの設定ができないので、次はこれが課題でつね。
955950 (ワッチョイ 2b73-grM/)
垢版 |
2019/04/13(土) 21:42:34.77ID:7yOwuXDN0
Ahk Studio続報

ソースの所定の行にカーソルを設定し、
ToolメニューのDebug の
Focus Studio on Debug breakpointを選択して、Run したら
無事にブレークポイントで止まった。

これは・・・(・∀・)イイ!!
この週末に使い倒して、Qiitaにでも書くかな、と。
2019/04/13(土) 22:09:11.24ID:7qZpaNoj0
>>953
秀丸はご新規さんには使いにくいと思う
Windows3.0時代からのユーザーにあわせてインターフェイス作ってるから
改築と建て増しでやってきてる複雑極まりない旅館みたいな感じになってる
2019/04/13(土) 23:04:40.36ID:OjpCdfeY0
IDEない時代からコツコツ強調表示や単語補完やアウトラインを育ててきた身としては
なかなか乗り換えらんないんだけど
今から選ぶなら汎用エディタでもVSCODEやAtomのほうが充実してるしね
2019/04/13(土) 23:10:52.24ID:K1JUo9vY0
フォーラムにあったnotepad++のシンタックスハイライトとか補完するプラグイン使ってた
2019/04/14(日) 03:36:26.78ID:fH0H3zDc0
SciTEはいまいち使いこなせず結局秀丸を使ってる
2019/04/14(日) 07:25:00.41ID:PQvQm40n0
>>954
マジか

AHK Studio 使ってみようかな
2019/04/14(日) 07:28:00.08ID:PQvQm40n0
SciTEの唯一の不満は、カーソルをラベル名のところにおいてF12を押したら
ラベル: のラベルの内容のところに飛ぶはずなのが、ずれて違うところに飛ぶところ

これってバグなのかなんなのか。 これって直せない?
2019/04/14(日) 09:11:27.14ID:PQvQm40n0
AHK Studio
使ってみた。

まず日本語入力が出来んなあ。 でもEnterの代わりにいろいろやってみて、Ctrl+矢印(いろいろ)でなんとか出来た
速く日本語対応してほしい
そして背景色、文字色も変えたいな。 どこかにあるんだろう
2019/04/14(日) 09:18:25.09ID:PQvQm40n0
AHK Studio
残念。 使うのやめた
編集していて、途中編集前のままセーブせずに終わりたいのに、そのままAHK Studioを終了しても、クローズで
閉じても、編集したあとの状態でセーブして終わってしまう

これダメじゃん。 編集せずに終わることが出来ないみたい
レス数が950を超えています。1000を超えると書き込みができなくなります。
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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