AutoHotkey スレッド part24 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。 転載ダメ©2ch.net (ワッチョイ 997d-+Qhn)
垢版 |
2017/02/15(水) 18:04:32.01ID:kshCKhXn0
!extend:checked:vvvvv:1000:512と次スレを立てる際は1行目に記入してください

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

■前スレ
AutoHotkey スレッド part23
http://potato.2ch.net/test/read.cgi/software/1470936221/

■日本語解説等
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: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
304名無しさん@お腹いっぱい。 (ワッチョイ 0b01-93S+)
垢版 |
2017/04/19(水) 16:32:59.64ID:NqPXmlz00
>>303
あまり深く考えず付き合うことにします。動いたからよしと。
2017/04/19(水) 18:32:35.56ID:FSuwMycm0
公式のドキュメントにはちゃんと記載があるよ。日本語のドキュメントは全然メンテされてないから、
出来れば公式の方を見た方がいい
306名無しさん@お腹いっぱい。 (ワッチョイ 0b01-93S+)
垢版 |
2017/04/19(水) 22:51:48.59ID:NqPXmlz00
英語で探せば解決すること多いですよね。情報量が断然。
今回は安易にここで聞いてしまいました。今後がんばります
2017/04/20(木) 09:19:43.12ID:HeaoQ4hM0
英語読めないので
ほぼROMですが
ここでの情報は助かりますし、ヒントになります
ありがとうございます
2017/04/21(金) 09:19:01.64ID:YRNVrPJF0
新規環境にインストールしたときはとりあえず>>8の対策パッチを入れてるな
2017/04/21(金) 10:31:38.58ID:DiD/cJtZ0
UI Accessはインストーラのオプションから任意で追加するようになったからテンプレの>>8は修正しないといかんね
2017/04/21(金) 19:48:32.93ID:bzf8ojMU0
そう言えばRS1までのWindows10だと、レジストリからUACを無効にするとストア系のアプリが起動出来なかったけど、RS2からは起動出来るように修正されたね。
311名無しさん@お腹いっぱい。 (ワッチョイ 4377-mkSu)
垢版 |
2017/04/23(日) 12:18:00.71ID:hj5/SbKN0
Firefoxのブックマークウィンドウに表示されている項目を編集したいのですが、
Sendでキーを送っても期待通りに受け取って処理してくれずに、
未編集の項目が残ってしまうことがしばしばあります。

具体的には、「名前(N)」のテキストボックスにフォーカスがある状態で
  Send +{Tab} ; テキストボックスのすぐ上のグリッドにフォーカス
  Send {Down} ; 次の項目へ
  Send !l^a^c ; 「URL(L)」のテキストボックスにフォーカスして内容をコピー
といったコードを書いてループで回しているのですが、特にメモリ負荷・CPU負荷が高いと、
Sendした通りの順序で動いてくれないことがよくあります。
たとえば、{Down} を2つ続けて受け取ってしまって1行飛ばしたり、
^a^c でテキストボックスではなくその上のグリッドを全選択・コピーしたり
(で、その状態で ^v を受け取って、グリッドの中身が丸々二重になったり)、
+{Tab} を2つ続けて受け取ってウィンドウ左側のツリー部分にフォーカスが行ったりします。

現在は勘に頼ってSleepを随所に入れているのですが、こういう操作をわざわざ
AHKで書いてループで回すのには当然理由がある(=対象の項目数が多い)わけで、
あまりに時間がかかるのも困りものです。

で、キー操作ではなく、ウィンドウ上のコントロールに対して直接メッセージを送りたいと思って
Window Spyで調べてみても、Windows以外のOSの版と共通のソースで書かれているせいか、
マウスカーソルをウインドウ上のどこに置いても、「Control Under Mouse Position:」の枠に
それらしきものが何も出てくれません。

…何かいいアイデアはないでしょうか?
訳あって、ブックマークをjsonファイルに書き出して外部のツールで編集する方法は使えません。
2017/04/25(火) 20:48:21.48ID:xtXfnML00
日本語OSで
capslockキーのリリースの検知(またはUp状態であることの確認)ってやる方法ない?
2017/04/25(火) 21:00:09.87ID:0atPQyx50
>>312
レジストリでF13〜F24のいずれかを割り当ててそれに対してAHKで検知すれば?
2017/04/25(火) 21:11:30.38ID:xtXfnML00
>>313
>>312
すいません。ポータブルで実現したいので
レジストリ編集・管理者権限使用はなしでお願いします。
2017/04/25(火) 21:16:03.72ID:0atPQyx50
じゃあ諦めるしかないね
日本語環境だとLock系キーの動作は不定
という仕様なので
2017/04/25(火) 21:40:50.36ID:nrhzhqeR0
Windows To GoでOSごと持ち歩く
非日本語OSで環境構築しとけばそのままでいけるで
317名無しさん@お腹いっぱい。 (ワッチョイ cf01-+vjJ)
垢版 |
2017/04/26(水) 14:09:56.27ID:oxhcbNh/0
traytipでポップアップが出なくなった。
数日前からこの現象発生。
windows10 creators updateは未適用。
考えられる原因は何か有りますか?
2017/04/26(水) 17:03:06.90ID:D3wTeHJK0
>>317
その前に環境を書こうね
319名無しさん@お腹いっぱい。 (ワッチョイ 0b01-KYNw)
垢版 |
2017/04/27(木) 10:41:41.12ID:S2URduR/0
>>318
windows10 home 64bit
ahk v1.1.24.01 unicode 64bit
ですがこれでヒントになりますか?
320名無しさん@お腹いっぱい。 (ワッチョイ 0b01-KYNw)
垢版 |
2017/04/27(木) 10:43:16.98ID:S2URduR/0
trayTip,,てすと
sleep,3000

これが動作しないのです。
2017/04/27(木) 14:05:14.32ID:F2IX/dyC0
>>317
数日前に何があったか、思い当たることを羅列してみて
2017/04/27(木) 15:59:00.68ID:uiEh8WS70
>>319
> ですがこれでヒントになりますか?
書かないより百倍マシ、AHK古いぞ

通知領域アイコンの設定で非表示
レジストリがOFF

バルーンメッセージ バルーンヒント 非表示
でググレ
323名無しさん@お腹いっぱい。 (ワッチョイ 0b01-KYNw)
垢版 |
2017/04/27(木) 20:58:59.60ID:S2URduR/0
>>321 >>322
自分で何か思い当たる事がまったくないのです。
Windowsの設定をいじったとか、AHK関係に手を加えたとか。

通知領域の設定を見ましたがそもそもAHKはwin10の設定項目の中には見当たりませんでした。
当然AHKアイコンは常に表示にしています。

致命的な問題では無いので我慢することにします。
ありがとう。
324名無しさん@お腹いっぱい。 (ワッチョイ 0b01-KYNw)
垢版 |
2017/04/27(木) 21:01:52.86ID:S2URduR/0
>>322
現行は1.1.25なので自分のはほぼ最新版だと思いますが・・・・・・

あるいは AHK V2 のことですか?
たぶんスクリプトの書き直し大量に発生しそうで躊躇してます。まだアルファ版だし。
2017/04/27(木) 21:12:52.72ID:S2URduR/0
>>322
念のためv1.1.25.01にしましたが変わりませんでした。
2017/04/27(木) 22:16:31.04ID:3kQGMVYf0
win10 Rs2アップデート済みでv1.1.24.01 ansi 32bitだけど、うちも出ないよ
2017/04/27(木) 22:25:43.18ID:3kQGMVYf0
あ、ごめん、Winaero Tweakerでバルーンチップ有効にしたら出た
2017/04/28(金) 23:59:22.00ID:wu6/oOe4r
すみません今まで出来てたと思っていた単純な計算が出来ない事に気づきました
Setformat, Float, 0.6
a := 36.0450850
b := 36.0450800
c := 0.000005
if((a-b) != c)
MsgBox, % (a-b) " is not equal 0.000005 ?",
ifEqual, c, % (a-b), MsgBox, こっちは合ってる,
if(abs(36.0450850-36.0450800) <> 0.000005)
MsgBox, ng1
if((0.000110-0.000105) != 0.000005)
MsgBox, ng2
if((0.110-0.105) <> 0.005000)
MsgBox, だめ
if((0.000010-0.000005) = 0.000005)
MsgBox, ok
=/==/!=/<>を試したが駄目でした
なんでこうなるんでしょうか
v1.1.25.01 32bit U32版A32版とも同じです
2017/04/29(土) 07:02:23.20ID:z1NB2zPu0
一見同じに見えるけど、浮動小数点の演算には誤差があるからだよ

Setformat, Float, 0.20
こんな風にして、演算の結果実際に格納されてる値を確認すれば分かるはず
2017/04/29(土) 09:31:27.54ID:aGGSeSqnr
>>329
レス有り難うございます
setformat, float, 0.0e
MsgBox, % (0.110 - 0.105) > 5e-003
MsgBox, % (1e-001 - 1e-001) = 5e-003 ;え〜(;´д`)
MsgBox, % (0.110-0.105) > 0.005
;だめだ分からない...Setformatは見た目の桁数を揃えるだけで内部的には元の数字で計算してるってことなんでしょうか
MsgBox, % round(36.0450850-36.0450800, 6) = 0.000005
setformat, float, 0.6
MsgBox, % RegExMatch(36.0450850-36.0450800, "^0\.000005")
まだ納得できてませんが取り敢えずRoundするか文字列として比較することで解決しそうです
2017/04/29(土) 09:35:13.23ID:N+z0dulg0
d := (a - b)
MsgBox, % (d != c) ? "true" : "false"
2017/04/29(土) 13:26:39.25ID:z1NB2zPu0NIKU
>>330
https://autohotkey.com/docs/commands/SetFormat.htm#Float

Float(Fast じゃない)方は、変数へ格納された時点で DecimalPlaces に丸められる
なんで >>331 は真になるけど、
((a - b) != c) これは偽になる
2017/04/29(土) 13:35:30.70ID:z1NB2zPu0NIKU
あ、>>331 は非等値だから逆か。(d = c)が真になるって意味ね
2017/04/29(土) 13:39:38.79ID:z1NB2zPu0NIKU
×((a - b) != c) これは偽になる
〇((a - b) = c) これは偽になる
2017/04/29(土) 18:21:37.68ID:aGGSeSqnrNIKU
>>331-334 どうもありがとうございます
> floatは変数に格納した時点でDecimalPlaces桁数に
これは知らなかった(小数値が+-*/された時点で、と思ってました)
なるほど...納得できたような出来てないような
Setformat, float, 0.6
a := 36.0450850
b := 36.0450800
c := 0.000005
d := (a-b)
MsgBox, % ((a-b) != c) "`n" (d != c) ;計算結果を変数に代入した方はちゃんとfalseになりますね
Setformat, float, 0.8
a := 36.04508500
b := 1 ;試しに整数でやってみたところ
c := 35.045085
d := (a-b)
MsgBox, % b-1 ;整数は桁揃えされないから「0」
MsgBox, % b-1.0 ; 0.00000000
MsgBox, % (a-b) ;35.04508500 ;aの桁数は変わってないが、どちらか片方が小数値なら桁揃えされる?
MsgBox, % ((a-b) != c) ”`n” (d != c) ;こっちは桁揃ってないのにちゃんとfalseになるんですよ
2017/04/29(土) 21:59:24.43ID:r6kgVtY20NIKU
Windows10 pro 64-bit
AutoHotkey Unicode 64-bit ファイルバージョン1.1.25.1

メモ帳を開いたら、タイマーを起動、ツールチップにタイマー作動!と表示し続け、 60秒毎にメモ帳にABCと入力を繰り返す。
メモ帳を閉じたら、タイマーを終了し、ツールチップを消し、 メッセージボックスでタイマー停止!と表示する。

WinWait, ahk_class Notepad
{ SetTimer, InputTimer, 60000
ToolTip, タイマー作動! }
Return

InputTimer:
IfWinExist, ahk_class Notepad
{ ToolTip, タイマー作動!
Send, ABC }
Else
{
WinWaitClose, ahk_class Notepad
{ ToolTip,
MsgBox, タイマー停止!
SetTimer, InputTimer, Off }
}
Return

上記で、目的の動作は概ね実現されるのですが、一つだけ気に入らないところがあります。
メモ帳を閉じた直後に、タイマー停止!のメッセージボックスが表示されないのです。
どうやら、メモ帳を閉じた後も、作動中のタイマーは直ぐには停止せず、 セットした60秒間が経過したタイミングでタイマーが終了し、メッセージボックスが表示されるようです。
メモ帳を閉じるタイミング、タイマーが終了するタイミングにかかわらず、 メモ帳を閉じた直後に、タイマー停止!のメッセージボックスを表示させる方法があればご教示ください。 よろしくお願いいたします。
2017/04/29(土) 23:23:53.88ID:zp4a0efb0NIKU
コピペで動かないので動作検証はしないけど

・60秒ごとの入力監視タイマー と メモ帳終了監視タイマー を分ける
・終了監視はWinWait使うならタイマーは回さないで1タイムのみにする
・それか0.5〜1秒間隔タイマーでifWInNotExistですぐ抜けるを繰り返すものにする
2017/04/29(土) 23:59:37.57ID:z1NB2zPu0NIKU
>>335
そもそも float や double の比較に、等値や不等値演算子を使うこと自体が NG なんよ
AHK に限った話じゃないから適当に検索してみてくれ
2017/04/30(日) 08:17:25.06ID:608QOK9p0
>>337
アドバイスありがとうございます。
別に終了監視タイマーを、IfWinNotExistで設定してみましたが、
やはり入力監視タイマーが終了しなければ作動しないようです。
引き続きよろしくお願いいたします。
2017/04/30(日) 08:45:23.32ID:VC0AsQZa0
プログラミング詳しくないのでわからないんですけど
0.5秒や1秒短い間隔のタイマーって負荷すごかったりしないんですか? 処理による?
2017/04/30(日) 09:07:53.16ID:b1zEeBw50
>>340
タイマー自体の負荷は気にしないでいい、問題は処理の中身
1000個のタイマーを1msで同時に回してもCPU使用率は0%
シングルスレッドだから当然といえば当然だが

Loop 1000
SetTimer, TEST%A_index%, 1
Return

TEST1:
TEST2:
〜中略〜
TEST1000:
Return
2017/04/30(日) 09:11:02.27ID:VC0AsQZa0
そうなんですね ありがとうございます
なんとなく忌避しちゃってたけど心置きなくタイマー作ってみようと思います
2017/04/30(日) 10:08:45.09ID:90OcEDAQ0
>>339
うちでは動いてるのでやり方には問題ないはず

>337でも書いたが>336はSyntaxErrorで動かない
そういうソース貼って質問した後に
やったけどダメでしたって書き換えたソース貼らずに言われても
こちらとしてはソース見直せとしかアドバイスできないよ


あと質問とは直接関係ないので触れなかったけど
60秒毎タイマーというのは誤差が60秒あるという意味なので
1秒タイマー内で60カウント数えてからSendするほうが動作としては望ましい
(まあそうするとタイマーを分ける必要もなくなるんだけどね)
2017/04/30(日) 10:57:21.94ID:608QOK9p0
>>343レスありがとうございます。336をそのままコピペすると動きませんね!申し訳ありませんでした。
2chの掲示板に投稿するときに、『改行が多すぎます!』と何度も警告されて全く受け付けてくれなかったたため、不要な部分をそぎ落としたのが悪かったみたいですね。IfWinNotExistで書き換えたスクリプトをそのままコピペします。ご添削のほどよろしくお願いいたします。
#InstallKeybdHook
#UseHook
#InstallMouseHook
#Persistent
WinWait, ahk_class Notepad
{
SetTimer, InputTimer, 60000
ToolTip, タイマー作動!
}
Return
InputTimer:
IfWinExist, ahk_class Notepad
{
ToolTip, タイマー作動!
Send, ABC
}
Else
{
SetTimer, ExitTimer, -1
SetTimer, InputTimer, Off
}
Return
ExitTimer:
IfWinNotExist, ahk_class Notepad
{
ToolTip,
MsgBox, タイマー停止!
}
Return
>>1秒タイマー内で60カウント数えてからSendするほうが動作としては望ましい ⇒具体的にはどのように記述するのでしょうか?
2017/04/30(日) 11:54:38.51ID:608QOK9p0
344
補足です。
ExitTimerを1秒間隔で設定したところ、
InputTimerのサブルーチンが終了するまでの間、
メッセージボックスを残秒数分吐き続けてしまったため、
負の値にしてワンタイムのみにしてあります。
2017/04/30(日) 12:03:45.49ID:90OcEDAQ0
>>344
・ExitTimer はメモ帳の起動待ち直後 SetTimer,InputTimerの次行あたりで起動させる
(InputTimer内で起動したのではタイマーを分けた意味がない)

・ExitTimerの間隔指定がおかしい、-1(1タイムのみ) で ifWInNotExistだと初回 else終了でそれっきりになる
   方法1 間隔は500〜1000msで繰り返し確認、タイマ内では待たずにifWInNotExistですぐ抜ける
   方法2 -1で1回のみ起動にするならWinWaitCloseでタイマ内で終了待ちする
  どっちでもいいけどどっちかに決める、混ぜたらどちらもまともに動作しない

・WinWaitの後に{ }はいらない、ifや関数で使う括りなので。

・あとInputTimer内で IfWinExistでSendしてるけど、これだとメモ帳がバックグラウンドのときに誤爆する
 IfWinActiveの判定入れるか強制的にWinActivateするか(動くなら)ControlSendにした方がいい


> 1秒タイマー内で60カウント数えてからSend
・InputTimerを1秒間隔で起動、count=60
・InputTimer内でcount-- して 0(以下)になった時にSend
・ToolTip, タイマー作動! %count% とかやっとくと残り時間も分かってデバッグにも便利
2017/04/30(日) 13:28:00.93ID:90OcEDAQ0
>>345
ExitTimerは終了後にするべき作業を全て任せるためのものだよ
InputTimer と ExitTimer の停止も当然ExitTimer内でやる
でなきゃ60秒誤差を回避できないでしょ
2017/04/30(日) 23:10:29.99ID:608QOK9p0
345 アドバイスをもとに再度スクリプトを書き換えました。メモ帳を初めて起動したときは問題なく目的の動作をしているようですが、
いったんメモ帳を閉じてメッセージボックスのタイマー停止!を表示させた後に、再度メモ帳を起動させると、全く動作しません。
AHKスクリプトをリロードしてからメモ帳を開くと、また初回のみ動作します。まだどこかおかしいのでしょうか?

WinWait, ahk_class Notepad
SetTimer, InputTimer, 1000
Count=60
SetTimer, ExitTimer, 1000
ToolTip, タイマー作動!
Return
InputTimer:
IfWinActive, ahk_class Notepad
{
ToolTip, タイマー作動!%count% 秒後に入力
Count--
If Count=0
{
Send, ABC
Count=60
}
}
Return
ExitTimer:
IfWinNotExist, ahk_class Notepad
{
SetTimer, ExitTimer, Off
SetTimer, InputTimer, Off
ToolTip,
MsgBox, タイマー停止!
}
Return
2017/04/30(日) 23:17:22.73ID:608QOK9p0
348
試しにメモ帳再起動監視タイマー(RestartTimer)を増設してみたところ上手くいっているように思いますが、
なぜこれが必要なのでしょうか?

ExitTimer:
IfWinNotExist, ahk_class Notepad
{
SetTimer, ExitTimer, Off
SetTimer, InputTimer, Off
ToolTip,
MsgBox, タイマー停止!
SetTimer, RestartTimer, 1000
}
Return

RestartTimer:
WinWait, ahk_class Notepad
SetTimer, RestartTimer, Off
SetTimer, InputTimer, 1000
Count=60
SetTimer, ExitTimer, 1000
ToolTip, タイマー作動!
Return
2017/04/30(日) 23:37:01.95ID:90OcEDAQ0
なぜと言われてもNotePad起動待ちのWinWaitを冒頭1回でしかやってないでしょ
基本的な部分なのでちゃんとwiki読んできたほうがいい
あと何度も言うけどTimer内でWinWaitで待つならワンタイム起動にしなさい
2017/05/01(月) 00:32:05.61ID:0V0GtOjk0
>>350 何度もすみません。
メモ帳初回起動時にしか動作しない理由はわかりました。
348+349の記述に書き換えても、正常に動作していないということですか?
ExitTimerの部分を -1(ワンタイム)に訂正すれば問題なしでしょうか?
また、タイマ内ではIfWInExist(Active)やIfWInNotExistは使用してはいけないということですが、
タイマ外に記述しても全く反応しないのですが・・・
>>タイマ内では待たずにIfWInNotExistですぐ抜ける という意味がよくわかりません。
wikiも読み直してみますので、引き続きよろしくお願いします。
2017/05/01(月) 01:45:38.34ID:+5nnd5240
>>351
先ずはトライアンドエラーで動くまで納得の行くまで色々試せ

とりあえずこんな感じでも動くことは動くはず
>>348の上半分は同じで、ExitTimer:部分は↓
ExitTimer:
IfWinNotExist, ahk_class Notepad
{
Count=60
ToolTip, タイマー停止!
}
Return
2017/05/01(月) 02:14:42.84ID:KYVCJ0Be0
>>345
上三行それでいい
下四行全然ちがう
タイマー内で使用してはいけないともタイマ外に書けとも言ってないよ
何か全然通じてないみたいだがもしやwinwaitとifwinexistの違いが分かってない?
winwaitは対象ウィンドウが存在するまで待つ
ifwinexistは今現在対象ウィンドウが存在してるか調べる

1秒ごとにタイマー動かすならタイマールーチン内の処理は1秒未満で終わる内容にしないと
「1秒間隔で繰り返し実行」できないでしょ
→winwaitのような「待ち」の処理はNG
 ifwinexistで存在チェックしelseなら即returnする
 待たない=ルーチンからすぐ抜ける

ワンタイムタイマーの場合はその逆
一度しか実行されないのでreturnで抜けたらそれきりになってしまう
→ifwinexistで即抜けしたらそれ以降の確認ができない
 なのでwinwaitで対象ウィンドウが存在するまで「待ってやる」
2017/05/01(月) 03:25:19.73ID:LZHpjIsmM
タイマーで長時間監視させてるとOSの処理とかcpu負荷によって実際の時間とはズレが生じてくる
2017/05/01(月) 15:47:16.28ID:zUK3JZ+qd

【女神】Slot
💰💣👻
🍒🍒🎴
😜🍜🍜
Win!! 7 pts.(LA: 1.71, 1.69, 1.71)
2017/05/02(火) 00:33:03.47ID:C+V/zU+9d
 .彡⌒ミ
(´・ω・`)
2017/05/02(火) 07:21:37.29ID:jZspGgXG0
351 これでどうでしょうか?全く問題なく動作しています。ご意見ください。

WinWaitActive, ahk_class Notepad
SetTimer, InputTimer, 1000
Count=60
ToolTip, タイマー作動!
SetTimer, ExitTimer, -1
Return
InputTimer:
ToolTip, タイマー作動!%count% 秒後に入力
Count--
If Count=0
{
Send, ABC
Count=60
}
Return
ExitTimer:
WinWaitClose, ahk_class Notepad
SetTimer, InputTimer, Off
ToolTip,
MsgBox, タイマー停止!
SetTimer, RestartTimer, -1
Return
RestartTimer:
WinWaitActive, ahk_class Notepad
SetTimer, InputTimer, 1000
Count=60
ToolTip, タイマー作動!
SetTimer, ExitTimer, -1
Return
2017/05/02(火) 09:40:25.10ID:Z3jAVDE20
思考停止してるなあ
動くかどうかにしか興味ないならもうそれでいいよ
2017/05/02(火) 13:03:30.64ID:/3o9eW+p0
>>358
ご多用にもかかわらず、合い間を縫って掲示板をご確認くださりありがとうございます。
思考が停止していますか・・・
問題なく動いているので満足してしまえばよいのかもしれませんが、
せっかくですからもう少しAHK追求してみたいと思いますので、貴殿の優秀な頭脳をお貸しください。
余裕がおありであれば、もう少し具体的にダメだしをいただけるとうれしいのですが・・・
数日前からAHKを知った新参者が、貴殿のように理解を深めるためには、
wiki以外にどんな書物を読めばよいのかもご教示いただけると助かります。
引き続きよろしくお願いいたします。
2017/05/02(火) 14:42:10.23ID:sIGtYt8F0
すみません。前にも書かせていただいたんですが、
ホットストリングが一回で起動しません。一回目無反応で2回目にスクリプトが発動がされます。
どうやれば一回目から起動してくれるのでしょうか?

ホットストリングの部分のみを抜き出してそれのみのAutohotkey.ahkだと失敗しないように思うんですが、
#IfWinActiveでいっぱい仕切られたいつものAutohotkey.ahkのなかにおいたホットストリングだと
一回目失敗します。どうしてでしょうか?教えてください
2017/05/02(火) 15:09:31.72ID:z6v/KZl40
>>360
>>2
■質問に際して
>操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
2017/05/02(火) 15:53:46.56ID:gYhDstJX0
>>359
横からだけどあまり畏まると却って嫌らしくみえるよ。長文だと尚更
Wikiで十分理解できる範囲だし難しく考え過ぎ
2017/05/02(火) 16:33:10.81ID:rrJHUz/00
>>362
嫌みを言ってるだけだろw
2017/05/02(火) 16:40:37.44ID:NmO727YQ0
どうみてもストレートな嫌味での皮肉だなw
2017/05/02(火) 16:51:22.50ID:Z3jAVDE20
コードそのものよりシーケンスの考え方を伝えたかったんだけど
>353総スルーで、完璧に動いてるのでこれでいいですか? て言われてしまうとね
まあ結局こっちの説明が下手すぎて伝わらなかったということなんだろう

コードの添削はしません
本人がよくわかってないまま修正するとまたバグが出てぐちゃぐちゃになるし
自分でどこを最適化したらよいか分かるようになってから自力でして下さい
2017/05/02(火) 18:53:40.69ID:/3o9eW+p0
359
>>365
353を総スルーしているつもりも、嫌みのつもりもないのですが・・・
『完璧に動いてるのでこれでいいですか?』というくだりも、
何らかの陰性感情を抱かせてしまったようですね。
手抜きをしているように映ってしまったということでしょうかね?

いずれにしても357の記述が不適切であるということは伝わってきました。
貴殿の気持ちがわかるまで、wikiを熟読して出直してきます。
ここまでお付き合いくださり、ありがとうございました。
2017/05/02(火) 19:12:14.89ID:v127Vr0k0
慇懃無礼というやつだな
2017/05/03(水) 17:41:53.64ID:mGMZlHNu0
誰にもメリットないし NG しときゃ良いんだよ
2017/05/04(木) 16:48:49.62ID:EVEHliNj0
そんなことより>>360を解決してください。一回の入力じゃ無視されること多々あります
2017/05/04(木) 16:52:41.96ID:RS2hmNwi0
>>369
>>2
■質問に際して
>操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
2017/05/04(木) 16:55:27.54ID:H4uy8L700
>>369
ない
2017/05/04(木) 17:17:11.97ID:jtmuQjaf0
>>369
とりあえずコード貼ってみたら?
2017/05/04(木) 22:12:03.19ID:EVEHliNj0
とりあえず貼ります。

::kyouda::
FormatTime,imaTimeString,,yyMMdd
FormatTime,imajikan, L0x0409 T1,ddd
FormatTime,imaTime,Time,HH:mm
SendInput '%imaTimeString%%imajikan%%imaTime%
Return

でも記述がこの箇所のみでautohotkey.ahkとして起動しているとたぶん必ず一発で起動してくれるんですが、
普段つかってるこの箇所のほかにもいろんな記述があるautohotkey.ahkで動かすと、
イメージで5回に1回、初回のホットストリング打ち込みで無反応です。
kyouda{スペース} ってふつうに入力されるだけです。そのあとすぐ続けると2回目は必ず成功するイメージです。
2回連続失敗ってのは印象にないです。
なにか考えられるような要因ありますか?

GroupAdd, GameBindGroup, ahk_exe Overwatch.exe
#IfWinActive
#IfWinActive ;個別設定がでいっぱい
#IfWinNotActive, ahk_group GameBindGroup
#IfWinActive
#IfWinActive ;個別設定がでいっぱい
みたいな感じの構成で区分けています。
2017/05/04(木) 22:35:13.26ID:kC5yyJMz0
ならそのごちゃごちゃしてる他が干渉してるんでしょ
その肝心のごちゃごちゃ部分全部見ないとなんとも言えない
ログ見てどんな動作してるか確認してみないとね
とりあえずホットストリングをスクリプトの一番上に記述して同じ動作するか試してみ
2017/05/04(木) 22:49:24.04ID:EVEHliNj0
ですよね。ゴチャゴチャいっぱい書いてるうちのどこかが干渉してるんですかね。
autohotkey.ahkはいまみたら1980行でした。

ホットストリングの位置を前だったり後ろだったりいろいろ変えてみたんですが、やっぱりだめでした。
2017/05/04(木) 22:54:29.44ID:58DNMeaN0
それは1回ちょっと整理した方がいんじゃないか
2017/05/04(木) 22:55:27.87ID:kC5yyJMz0
スクリプトのログにちゃんと実行履歴があるなら
そのスクリプトを使用するアプリケーション側の相性や問題の可能性もある
俺もそこんとこ詳しくないからあまり言えないけど基本はまぁトライアンドエラーだし頑張りな
2017/05/04(木) 22:59:15.73ID:xMZhJJeb0
>>375
限界まで「自分で」地道にコードを削って動作確認
話はそれから
2017/05/05(金) 20:50:08.16ID:Vpqe3LRZ00505
複数のスクリプトを常駐させておきたい場合は、*.ahkを引数にしてそれぞれ
起動して使うものなのでしょうか? それとも、AutoHotkey.ahk からそれぞれの
*.ahkを引数にして、子プロセスをフォークして使うものなのでしょうか?

最近使い始めたのですが、一般的にどのように使っているのか分からなかったもので。
2017/05/05(金) 22:00:06.04ID:TRiKEWTN0
実行履歴があるのでそれをみる
使う対象のアプリ側との問題
自分で削って動作確認

一発でダメなのが判明するって性格のもんじゃないし、トライアンドエラーがめんどくさそう。
ホットストリングが発動しない確率が高いっていうかんじのものだから。
実行履歴にたしかに実行したスクリプトが載るけど、これみてどうしいいものやら

ありがとうございました。やってみます。
2017/05/05(金) 22:40:09.32ID:pP7Woi3/0
>>379
>*.ahkを引数
意味が分からないんだけど?何の引数?
2017/05/05(金) 22:50:32.77ID:ZSng4Fyk0
>>380
コードの長いやつから、独立したahkファイルに移行させて#Includeで管理するとかすればいいんじゃない
自分もそれで知らん間に動かなくなってたスクリプトが復旧できたことがある
いまだに原因が分からんがw 動いたらそれ以上調べる気が起きなかった
2017/05/06(土) 01:18:07.92ID:4LDITw9p0
>>379
SetTimer使うのが普通だと思う。
2017/05/06(土) 09:35:50.00ID:J5De719LM
>>379
autohotkey.ahk以外のスクリプトをどう起動するかって話なら
.ahkをautohotkey.exeに関連付けしてる人が多いんじゃないの
ポータブルに使いたいならbat作るなりautohotkey.ahk内の任意のタイミングで
runするなり好きにしたらいい
自分はエディタで編集中ahk実行マクロ作って試行してる

あと常時複数起動する前提ならプロセスとして分ける必要が本当にあるのか考えてみるべき
そうでないなら#includeでautohotkey.ahkにマージする
2017/05/07(日) 02:45:07.91ID:/qUzlPjG0
アクティブなウィンドウを画面の四辺に退かせるようにしようと思ったんですが
右端に移動と下端に移動が反応しません
どう書けばいいんでしょうか?

#Right::
WinGetPos, X, Y, Width, Height
WinMove, A, , A_ScreenWidth-Width
return
2017/05/07(日) 03:14:11.06ID:9FhLouSj0
>>385
WinGetPosをもう一度じっくり見直し
2017/05/07(日) 04:10:21.20ID:Sp0KdGmO0
省略してはいけないものが省略されてる
2017/05/08(月) 15:48:03.40ID:sgEHR+K40
すみません教えてください。

Func( path ) {
EnvGet, home, HOME
Run, %path%
}

上記のような関数に対し、
Func( "%home%\aaaa.exe" )
と呼び出した場合、実際に実行ファイルがあったとしても
パスが見つからないと言われてしまいます。

%path% の中の %home% が展開できないのではないかと考えたのですが、
多重の % を展開する方法はありませんでしょうか?
2017/05/08(月) 15:57:32.89ID:7swUnAyw0
>>388
>>273
2017/05/08(月) 16:04:50.67ID:sgEHR+K40
>> 389

ありがとうございました。
2017/05/08(月) 17:51:12.62ID:n+ysgQT20
https://autohotkey.com/boards/viewtopic.php?f=6&;t=6399
これ、面白いな
2017/05/09(火) 14:12:20.82ID:v0GmuPss0
AHKでやれよとおもったらAHKだったw

Vector 新着ソフトレビュー 「俺のキーボード」 - 「【BackSpace】+【Delete】で一行消し」などを行える“俺=作者”仕様のキーボード機能拡張ソフト
http://www.vector.co.jp/magazine/softnews/170509/n1705091.html

>【Win】+【A】で、アルファベットで打ってしまった文字を日本語で打ち直し
これはどういう実装なんだろうか
393名無しさん@お腹いっぱい。 (ワッチョイ 278e-Wm8h)
垢版 |
2017/05/09(火) 15:12:31.09ID:3+cE2t/J0
oi
misu
ってやつが
「おいミス」になるのかな
2017/05/09(火) 15:19:44.20ID:ep1GBXYg0
単純にアルファベット選択して変換キー押した動作と同じっぽい
2017/05/09(火) 15:35:42.26ID:YHfNFChO0
要らねえな
2017/05/09(火) 16:38:05.41ID:D6Yawi3g0
>>392
これLIB内の自動インクルード考慮しないでexe作っちゃってないか
IME_ON / IME_OFF の実態関数がないから機能しない
配布用exe作ったが本人はahkから実行してるから気づいてないってパターンぽい

まあスクリプトの方実行してもエラーになるけど
初期の頃のIME.ahkにしかない古い関数だから
さすがは俺環境ソフト
2017/05/09(火) 16:42:26.15ID:Zqe7Gozh0
作者ここの住人じゃないの
2017/05/09(火) 16:51:39.12ID:TqQ3ywXr0
AutoHotkeyの認知度に貢献してくれれば本望だな
2017/05/09(火) 19:28:38.09ID:uUNwpeuV0
とりあえずアドレスを貼るのみで、当スレからは立ち去りますが、
もし興味ある方は読まれて下さい。

(万人にプラスになる知識)
《神・転生の存在の科学的証明》
http://message21.web.fc2.com/index.htm

  
2017/05/09(火) 23:40:11.32ID:PXpMId0P0
>>392
>【Win】+【A】で、アルファベットで打ってしまった文字を日本語で打ち直し
↑はクリップボード使うみたいだけど、過去スレにそんな趣旨のスクリプト書かれてたがそれは「input」コマンド使用してるね
AutoHotkey スレッド part16
http://anago.2ch.net/test/read.cgi/software/1367725658/164-165
2017/05/09(火) 23:46:20.11ID:pWGqFUI10
+^left
^c
IMEオン
Sendでクリップボード出力

で大体似たようなことができる
2017/05/13(土) 03:30:17.50ID:Yj8xdb2h0
マウスを数秒間放置したらマウスカーソルを非表示にして、マウスを動かしたら
瞬時に表示されるようにするといったことはAHKで出来ますでしょうか?
もし可能ならばどんなコマンドを利用すればいいのかヒントだけでも頂けないでしょうか
2017/05/13(土) 04:42:46.58ID:G8PnK+ii0
>>402
日本語でも英語でもググルと載ってるよ
2017/05/13(土) 05:15:29.72ID:Yj8xdb2h0
>>403
ahk マウスカーソル 非表示
でググってみたけど目的のコマンドには辿り着けませんでした
もう少しヒントを頂けないでしょうか
まずはマウスカーソルを非表示にする方法さえ分かれば有難いのですが
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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