AutoHotkey スレッド part16

このエントリーをはてなブックマークに追加
952名無しさん@お腹いっぱい。:2013/10/31(木) 22:14:18.06 ID:Lex8sW3D0
>>950-951
サンクス。
大変参考になりました。
953名無しさん@お腹いっぱい。:2013/10/31(木) 23:16:52.92 ID:rANQyHVJ0
>>948
LButtonを最初に持ってくるのが良くないんじゃね
ホイール動作は、Ctrl+Tab や Ctrl+Alt+Tab 、音量調整とかに使うのが一般的だと思う
ウィンドウ最小化は通常のジェスチャーに組み込めばいいじゃん
自分は8方向だから少数派だと思うけど、右+/down でウィンドウ最小化
右+/up で最大化・元に戻すのトグル、右左+/down で全てのウィンドウを最小化って感じ
954名無しさん@お腹いっぱい。:2013/11/01(金) 01:07:53.02 ID:2/bHBSXe0
>>948
コンビネーションキーの場合、一つ目のキー自体のもともとの機能は無効化される。
4.2 コンビネーションキー ttp://ahkwiki.net/Hotkeys

通常の修飾キー以外とWheel系を組み合わせるのはやめた方がいいかも
GetKeyStateで入力がうまく取れないから(自分の環境だけ?)
↓動くけどスクロールが若干ぎこちないかも。

WheelDown::
If GetKeyState("LButton","P")
   Send,#d
Else
   Send,{WheelDown}
Sleep,40 ;キーリピート調整
Return

※インデント全角スペースなので注意
955名無しさん@お腹いっぱい。:2013/11/01(金) 01:08:35.46 ID:5bgy22O10
~LButton & WheelDown::
956名無しさん@お腹いっぱい。:2013/11/01(金) 01:10:48.39 ID:2/bHBSXe0
>>955
なるほどw
余計なことしてたw
957名無しさん@お腹いっぱい。:2013/11/01(金) 07:04:41.18 ID:4I5JmmKl0
>>953, 954, 955
皆様ありがとうございました。
>>955さんの書き方で解決できそうです。
~とか、こんなに使える修飾を今初めて知りました・・・w
958名無しさん@お腹いっぱい。:2013/11/01(金) 15:16:50.78 ID:t/Q7qez30
MGL.ahkで「マウス下のウィンドウにスクロールを送る」という機能を
実現するにはどうすればいいですか

今まではWheelAccel使ってましたが加速は要らないので・・・
959名無しさん@お腹いっぱい。:2013/11/01(金) 15:44:52.37 ID:5bgy22O10
WheelAccelの加速部削って移植したらいいんじゃね

簡易でいいならPostMessageでWM_MOUSEWHELLをマウス下のコントロールに投げればいい
FireFoxとか制御が独特のアプリでは動かなくなるけど

流行らせるページ跡地 WheelRedirect
http://ahk.xrea.jp/myscripts/WheelRedirect.zip
960名無しさん@お腹いっぱい。:2013/11/01(金) 17:23:03.56 ID:t/Q7qez30
>>959
ありがとうございます
WheelRedirectがWheelAccelの加速部なし版と考えていいんですね
961名無しさん@お腹いっぱい。:2013/11/01(金) 17:35:11.17 ID:5bgy22O10
違うけど
拡張全部そぎ落として一番のコア部分がそれ
先に書いたように行儀の悪い一部のソフトで動かなかったりマルチディスプレイで問題が出たりする
962名無しさん@お腹いっぱい。:2013/11/01(金) 17:41:07.36 ID:t/Q7qez30
行儀の悪い一部のソフトでもマルチディスプレイでもちゃんと動くようにするなら
WheelAccelをカスタマイズするのがいいんですかね
963名無しさん@お腹いっぱい。:2013/11/01(金) 17:45:17.69 ID:htAm90tE0
>>960
つか、MGLのヘルプの4.3.3に載ってるんだが…
もっとも、この方法も跡地のスクリプトも、どっちも満足できなかったけどね。環境のせいかもしれんが
スクリプト書けないから何を修正すればいいかはさっぱり分からんのだけどさw
ホイールリダイレクトのソフトはたくさんあるけど、結構複雑なんだろうなーという感想しか出ないw
964名無しさん@お腹いっぱい。:2013/11/01(金) 19:56:28.95 ID:vxpVQSIX0
ahk付属のテキストエディタSciTEは他のエディタ使うより何かと便利なので重宝してるんだけど、
InternalAHK.exeとかいう曲者のせいか起動が非常に遅く、たまにイラッと来ること有る。

そこで、このInternalAHKをSciTEから切り離したい。
と言うか、とにかくこの起動の遅さを何とかしたいんだけど、何か手はある?
965名無しさん@お腹いっぱい。:2013/11/01(金) 21:02:25.65 ID:vxpVQSIX0
>>964に追加
今、ahkでツールチップだけ表示するスクリプトをexe化してInternalAHK.exeと入れ替えてみたんだが、
起動のスピードはさほど変わらなかった…この遅さは何が原因なんだろ?
966名無しさん@お腹いっぱい。:2013/11/01(金) 21:31:01.67 ID:t/Q7qez30
>>963
ありがとうございます。
やはり専用ソフトでホイールリダイレクトしたほうがいいと思うのですが
ウィンドウごとの細かいカスタマイズができるAHKはやはり便利ですよね
優れたAHKスクリプトが公開されるといいのですが・・・
967名無しさん@お腹いっぱい。:2013/11/01(金) 22:13:28.41 ID:2/bHBSXe0
>>966
無いものは作ればいい
むしろ作る事が楽しいと思うのだがw
968名無しさん@お腹いっぱい。:2013/11/01(金) 22:39:09.30 ID:l5KuKhvC0
>>966
ヘルプの3.14の中に設定があるよ
ホイール操作をターゲットコントロールにリダイレクト
969名無しさん@お腹いっぱい。:2013/11/01(金) 22:42:02.29 ID:hMrIP4Lx0
サイト見ながら作ってみたんですがインプットボックスでキャンセル押してもwikiに飛んでしまいます
どこが間違ってるのか教えて頂けないでしょうか

vk1Dsc07B & W
InputBox, UserInput, Wikipedia Search, Please enter a keyword, , 200, 100
If ErrorLevel<>0
Run, "C:\Program Files (x86)\Firefox\firefox.exe" "http://ja.wikipedia.org/wiki/Special:Search?sourceid=Mozilla-search&search=%UserInput%" ;ブラウザを起動する
else
MsgBox, CANCEL was pressed
return
970名無しさん@お腹いっぱい。:2013/11/01(金) 22:47:39.32 ID:HD8Tm7iI0
キャンセル押されるとErrorLevelに「1」が格納されるから
971名無しさん@お腹いっぱい。:2013/11/01(金) 22:53:45.63 ID:hMrIP4Lx0
>>970
ありがとうございます 理解できました
972名無しさん@お腹いっぱい。:2013/11/01(金) 23:04:13.77 ID:t/Q7qez30
>>967-968
やってみたらできました・・本当にありがとうございます
Firefoxも問題なくスクロールできています
973名無しさん@お腹いっぱい。:2013/11/02(土) 06:23:36.59 ID:KVXP/kwo0
マウス直下にあるウィンドウに
Windows7のショートカット(縦に最大化 Win + Shift + ↑)を
送る処理を書いたのですがうまく動きません。

MouseGetPos, , , WinHdl, ,
ControlSend, , #+{Up}, ahk_id %WinHdl%

どうも#キーとの同時押しができないみたいです。
上記の場合、{Up} キーが送信できていません。

#+{Up} を +{Up} にした場合、正常に動作します。
この動作はAHKの仕様でしょうか?
974名無しさん@お腹いっぱい。:2013/11/02(土) 08:13:43.26 ID:V1fxFKiH0
>>973
>937
975名無しさん@お腹いっぱい。:2013/11/02(土) 11:59:03.82 ID:LgZDMlJy0
sub_hoge:
 for 〜
  for 〜
   if hage
    return
   }
  }
 }
return

こんな感じでforで二重にループしてる中で
条件hageによりループ途中でreturnしてるんだけど、
問題有るとしたら、どんなことがあり得るんでしょう?
今のところ問題なく動いてるから知らんぷりしても良い?
976名無しさん@お腹いっぱい。:2013/11/02(土) 12:09:14.58 ID:FXSymEzZ0
昔の言語だとスタックが溜まりっぱなしなことがあったけど、
いまはガベージとして破棄するとかで大丈夫なんじゃね?

途中で抜ける関数を100万回くらい呼ぶサンプルコードを作って、
メモリ消費量が右肩上がりで増えるかどうかを確認してみたら?

俺も結果を知りたいからテストしたら結果を書いてもらえると助かる。
977名無しさん@お腹いっぱい。:2013/11/02(土) 12:54:50.62 ID:5tGSb6nO0
Gui, Buttonについてお聞きします。
ボタンにSendを割り当てたとして、GUIボタンをクリック押し込みするとキーは送信されず
クリックを離した時点でキーを送信しますが
クリック押し込み状態でも、キーを押した状態とするにはどのような処理をすれば良いでしょうか?
よろしくお願いします。
978名無しさん@お腹いっぱい。:2013/11/02(土) 13:03:14.70 ID:LgZDMlJy0
レスありがとう。
大丈夫と言う意見戴きました。

うう、サンプルコード…
素人にはそっちの方が大変だ。期待に添えなくて申し訳ないっす。

とりあえず今動かしてる分にはメモリ使用量が突然高くなるなどの
現象は起きてないようなのでこのまま様子を見るつもりす。
979名無しさん@お腹いっぱい。:2013/11/02(土) 13:19:46.93 ID:zylXQwGu0
>>975
別に問題ないよ
returnの代わりにgotoでサブルーチン外に出て戻ってこないとかだと問題だが
980名無しさん@お腹いっぱい。:2013/11/02(土) 14:08:57.59 ID:LgZDMlJy0
979氏、レスありがとう。
問題ないと言う、976氏と同意見なのでとても安心っす。
981名無しさん@お腹いっぱい。:2013/11/02(土) 14:28:21.72 ID:9EsYuvl00
MouseGestureLの無効にしたい対象「Disable」に登録しても
http://s22.postimg.org/63joypl0x/MGL.png のような画面が出てしまい
はい・いいえ どちらを押してもキー入力が不安定になります
対象のNGアプリだったらすぐに処理を終了するように特別にカスタマイズできないでしょうか?
982名無しさん@お腹いっぱい。:2013/11/02(土) 14:38:58.69 ID:JUvNDV+80
>>981
種別を色々変えてもそうなるの?
ウィンドウクラスでダメなら実行ファイル名にするとか
983名無しさん@お腹いっぱい。:2013/11/02(土) 15:32:34.00 ID:p/ZhsekP0
>>977

Button だとおそらく無理なので Text や Picture などでボタンを作ればいい
今回は画像用意するのめんどくさいのでText

F1::
Gui,Add,Text,w100 h38 Center Border gTextButton,`nButton
Gui,Show
Return

TextButton:
ToolTip
ToolTip % A_GuiEvent
If A_GuiEvent = DoubleClick
ToolTip % A_GuiEvent
Return
984名無しさん@お腹いっぱい。:2013/11/02(土) 15:55:25.14 ID:V1fxFKiH0
MouseGestureLの設定方法に関してはマウスジェスチャスレのほうでやってもらったほうが良くないか
ここに作者いないしサポート求められても正直困る

自分でプラグイン書きたい人のコード添削なんかはここでいいと思うけど
985名無しさん@お腹いっぱい。:2013/11/02(土) 16:41:35.99 ID:5tGSb6nO0
>>983
なるほど、ボタンでは出来ないんですね。
サンプルコードまで書いて頂きまして有難うございました。
986名無しさん@お腹いっぱい。:2013/11/02(土) 17:33:06.35 ID:h5sjW8CN0
>>981
他のマウス系ツールと併用していてたりしない?
例えばトラックボール+Wheel Ball+Autohotkeyスクリプト
という組み合わせの時に擬似マウスホイール操作
(トラックボールのボタンを押しながらボールを回転)すると
頻繁にそのエラーが出てたので

#HotkeyInterval 6000
#MaxHotkeysPerInterval 300

というように設定してた。
エラーの状況からして #MaxHotkeysPerInterval の値を
もっと増やさないといけないだろうけど。

ちなみに現在はTW.ahk(本来はトラックポイント用)を改造して
Wheel Ballと同等な操作感にしたものを使っているけど
#HotkeyInterval と #MaxHotkeysPerInterval を記述しなくていいようになった。
987名無しさん@お腹いっぱい。:2013/11/02(土) 18:36:05.67 ID:9EsYuvl00
>>982
実行ファイル名で登録しても駄目です
notepadなどでもテストしてみて問題なく登録は出来ていると思います。

>>986
#HotkeyInterval 6000
#MaxHotkeysPerInterval 300
にしても変わりませんでした

常駐ソフトも全部終了させてMouseGestureLだけにしても同じです。

問題が起きるソフトとはWhiteBrowserだけです
このアプリでサムネイル上で右クリックすると、こうなります。
このソフト、なんか他にも挙動がおかしい部分があり、たぶんこのソフトに原因があると思いますが・・
988名無しさん@お腹いっぱい。:2013/11/02(土) 18:54:28.60 ID:h5sjW8CN0
>>987
>>5のQ4はどう?

それと #MaxHotkeysPerInterval を3000〜20000くらいにしてみたら?
(負荷的にどうなのかわからんけど、たまに99999指定しているスクリプト見かけるたりする)

それでもダメそうならWhiteBrowserの開発者さんに聞いたほうがいいかもね


ついでに次スレ
AutoHotkey スレッド part17
http://anago.2ch.net/test/read.cgi/software/1383384464/
989名無しさん@お腹いっぱい。:2013/11/02(土) 19:23:23.11 ID:9EsYuvl00
>>988
サンクスです。
#UseHook
#HotkeyInterval 6000
#MaxHotkeysPerInterval 20000
にしてみました
5回中3回は2秒ぐらい遅れますが右クリック成功
後の2回は>>981と同じ症状が出る感じで安定しません

この対象アプリだけ右クリック(RB_)を感知したらすぐにスレッドを終了させるようにすれば行けるかも?
と思ったのですがどこを弄ればいいのか分かりません。
MG_Abort()
MG_Cancel()
をこのアプリに割り当てても駄目です
990名無しさん@お腹いっぱい。:2013/11/02(土) 19:33:36.85 ID:h5sjW8CN0
>>981は0.374秒の間に2001回の異常なキー入力が有ったので中断しているってこと。
つまり、WhiteBrowserを右クリックするとWhiteBrowserが異常な仮想キー操作を行っている可能性がある。
なので作者さんに聞いた方が解決するんじゃないかな。
991名無しさん@お腹いっぱい。:2013/11/02(土) 19:41:03.65 ID:p/ZhsekP0
ここはAutoHotkeyのスレであって
アプリ(MouseGestureL)の質問されても困るのだが・・・。
ここの住人が全員使ってるわけでもないし。
992名無しさん@お腹いっぱい。:2013/11/02(土) 19:43:39.54 ID:h5sjW8CN0
全く関係ないわけじゃないし別にいいんじゃないの?
2,3日で1スレ埋まるようなスレでもないし
993名無しさん@お腹いっぱい。:2013/11/02(土) 20:49:08.08 ID:9EsYuvl00
>>990
微妙にスレ違いですみません サンクスです。
MouseGestureLを切ると 右クリックも問題ないため
MouseGestureLだけで解決できるかと思っていましたが難しそうですね
作者氏に聞くかWhiteBrowser使用を止めたいと思います。
他にも挙動がおかしな所がありますし
994名無しさん@お腹いっぱい。:2013/11/03(日) 06:25:40.98 ID:tEX6SY+g0
>>974
ありがとうございます。
アドバイスを参考に似たコードで試してみました

F13 & z::
 SetKeyDelay, 1000, 1000
 MouseGetPos, , , window
 ControlSend, , {Ctrl Down}{p Down}{p Up}{Ctrl Up}, ahk_id %window%
return

やはり動きません。
Ctrlは押されて離されるのですが、Pが送信できていないようです。
AHKのKeyHistoryを確認してみましたが、ログがありませんでした。
(ControlSendの入力はログに残らない?)
995名無しさん@お腹いっぱい。:2013/11/03(日) 09:10:44.68 ID:yX//yUux0
>>994
違うショートカットキーを試して何をしたいのかよくわからんけど
setkeydelayのそれぞれの値は50〜100くらいにすれば概ね動くようになるよ
1000(1秒)とかにしたら動作がもたつくだけ

それはおいといて縦に最大化させたいだけなら↓でもいける

MouseGetPos, , , window
wingetpos, x, , w, , ahk_id %window%
winmove, ahk_id %window%, , x, 0, w, A_ScreenHeight
996名無しさん@お腹いっぱい。:2013/11/03(日) 15:44:07.49 ID:AXvXkEvx0
AHKでアプリごとに設定したショートカットがいい加減覚えきれなくなってきたんだけど
.ahkファイルを読み取ってショートカットやコメントを読みやすい
HTMLの一覧表にコンバートしてくれるツールってないですか?
997名無しさん@お腹いっぱい。:2013/11/03(日) 15:56:55.38 ID:r/31SuUG0
ahkで自作したまえ
RegExもFileRead/Apendもサポートされている
998名無しさん@お腹いっぱい。:2013/11/03(日) 18:37:54.55 ID:Scj1Pn+G0
>>994
ControlSendの入力はControlに直接送っているのでログに残らない

ショートカットに関しては根本的なところが間違っている
Windows7のショートカット(縦に最大化 Win + Shift + ↑)
これはOSの機能であって対象Controlの機能ではない
直接対象に入力しても送り先が間違っているので機能するわけがない。

ショートカットを実行したいだけなら Send,#+{Up}
マウス下のウインドを対象にしたいなら >>995 のように機能自体を書く
999名無しさん@お腹いっぱい。:2013/11/04(月) 10:35:59.65 ID:WpkoLKWY0
MGL使ってるんだけど、pluginのscript内で「menu, tray, icon, 〜」したiconを
MGL本体のtray iconとは別に独立したtray iconとして表示させる事出来ます?
(プロセスがMGLの一つに対し、tray iconを二つにする、という意味)

今の状態だと、MGL本体のtray iconがpluginのscriptで
記述したiconに変わってしまうので宜しくないんですよ。
1000名無しさん@お腹いっぱい。:2013/11/04(月) 10:39:31.60 ID:WpkoLKWY0
あああ、もうこのスレも終了なので新スレの方でもう一度質問書かせて下さい。

どうぞ皆様お願いします。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。