1 名前:ぬるぽ mailto:sage [2007/07/16(月) 12:30:27 ID:cd0T6xfs0] (テンプレ>>1 ) ■公式 www.autohotkey.com/ ■解説 AutoHotkeyを流行らせるページ lukewarm.s101.xrea.com/ ■過去スレ 1 pc7.2ch.net/test/read.cgi/software/1098531338/ 2 pc7.2ch.net/test/read.cgi/software/1129836713/ 3 pc11.2ch.net/test/read.cgi/software/1157043396/ 関連リンク>>2 以降も参照
202 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 16:17:31 ID:H3hKkc8G0] とある特定のソフトが定期的にポップアップを出してきます。 「更新完了、再起動が必要です。今すぐ再起動しますか? はい いいえ」 みたいな。 AHKを常駐しておいてそれが出てきたら即効でいいえを選んでくれるようなの作りたいのですが それを作るにはやっぱり5分に1回とか定期的にチェックさせるしか無いですかね? で、無限ループ構造で。 Loop { IfWinExist, 再起動ダイアログ { WinActivate, 再起動ダイアログ Sleep, 100 Send, {Alt Down}n{Alt Up} } } こんな感じに書いているのですがどうすればいいのかよく分からなくなってきました。
203 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 16:58:31 ID:h2DuVdvt0] Autohotokey.exe script.ahk -hoge とか Script.exe -hoge みたいに、ahkのままのスクリプトやExeにしたスクリプトに起動時に引数を渡したいんですが、 それをAutohotkey内で取得できるんでしょうか。 この場合、スクリプト内で-hogeが欲しいんですが。
204 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 17:03:56 ID:GGVO5h+R0] 書き方はいろいろあると思うけど いずれにせよ監視してなきゃ検知出来ないでソ 漏れなら特定のソフトを起動させるときにスクリプト経由で起動させて そのままそいつを常駐させて、そのソフトのプロセスがなくなったらそいつも終了するとか そんな感じにする
205 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 17:07:01 ID:GGVO5h+R0] >>203 ttp://lukewarm.s101.xrea.com/Variables.html
206 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 17:07:18 ID:syj/0K2a0] Loop, %0% { t := %A_Index% MsgBox, %t% }
207 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 19:15:37 ID:s7GpueSNO] >>202 SetTimer使え
208 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 20:00:10 ID:tzXgBz9P0] >>207 お前頭いいなー
209 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 20:13:56 ID:H3hKkc8G0] SetTimer使うにしてもLoopで定期的に実行させるにしても "Windowが現れた瞬間に(1秒後ぐらいに)即効でAlt+Nを送出していいえを選択させる" みたいな処理は出来ませんよねえ。やろうとしたら1秒か2秒感覚毎に監視しないといけないから かなり負荷が高そう。だからって5分毎に監視とかやると負荷は減るけど 5分たった>チェック=Windowなし、5分待機 ってなった次の1秒後ぐらいに Windowが現れたら、4分59秒後までチェックが行われないから最大で約5分程度そのWindowは 放置される事になる。これだとユーザの手で手動でいいえを選択してWindowを閉じちゃった方が 速いからスクリプト常駐している意味が無くなる。難しいなぁ〜。 フォルダ監視等の監視ソフトってどういうロジックで動かしているんだろう・・・。
210 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 20:17:16 ID:mqyHgS9Y0] グローバルフック でぐぐれ。
211 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 20:22:02 ID:h6nZAiyP0] WinWait
212 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 20:29:15 ID:H3hKkc8G0] >>210 情報ありがとうございます。 グローバルフックっていう"Windowsがアプリケーションへ送るメッセージを監視するもの"がある 事は分かりました。仮に>>211 のWinWaitもそういう類のものだとして、 利用者はそういうものがあるんだと思ってそれを使うだけで目的は達成できると思いますが、 そのグローバルフックのアルゴリズムってどうなってるんでしょうね? 内部でどういう処理をしているのか気になったりはしませんか? グローバルフックっていってもCで言う関数、Javaで言うメソッドみたいなものでしょうから 中は既存の物だけで作りこまれていると思うんですが・・・。
213 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 20:31:04 ID:H3hKkc8G0] すみません。スレ違いですね。 大体そんな事言ってたら じゃあ C言語の printfってどういう風な仕組みで画面にメッセージを表示しているの?っていう レベルからになりますし・・・。>>212 のレスは無視して下さい。すみません。
214 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 20:41:11 ID:CpiTaIJd0] >>212 何がいいたいのかよくわからないが、Global hook は OS の機能なんだから、 OS がメッセージ送信するときに Global hook chain に登録されている hook を呼び出してるだけだろ?
215 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 21:37:14 ID:x5n6TWnY0] 1秒2秒で廻してもそんなに負荷かからんけどな。 処理が発生するのは目的のダイアログがある時だけだし、あってもSend何発か投げるだけだし。 ちなみに自分の場合はこんな感じ init: SetTimer,tm_Diarog1,500 return tm_Diarog1: ;Beckyの メッセージアラートを自動Close IfWinActive ,Message from Becky!,この添付書類は、実行ファイル、 Send,y IfWinActive ,Message from Becky!,以下のURLが指すWebサイトに接続しようとしています。 Send,y return
216 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 22:12:44 ID:mqyHgS9Y0] ポーリングループは良くないアルゴリズム。
217 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 22:15:25 ID:CpiTaIJd0] >>216 その根拠は? kernel レベルや組み込み分野ではポーリング使うのは普通だぞ?
218 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 22:17:35 ID:+SM+fAsJ0] んなことより Diarog につっこめよ
219 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 23:29:29 ID:mqyHgS9Y0] そういう階層の話はしてないし。
220 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/30(月) 23:44:14 ID:x5n6TWnY0] Dia"l"ogですな orz
221 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 02:05:20 ID:6k+15W7Q0] AHKだけでグローバルフックとか無理じゃないのか?
222 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 02:35:52 ID:A7QlbhLb0] SetTimerでIfWinActiveをチェックするのなんてほとんど負荷なしに等しいよ。 最短の10msでもいいんじゃねぇ?
223 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 03:20:35 ID:ucO6fDJ80] >>219 脳内ソースかよ
224 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 10:56:57 ID:cqpB0ZDL0] アプリケーションのレベルでポーリングループが出てきたら ほぼ設計ミスと言って良い。8割方代替手段がある。 ポーリングループがパフォーマンスの観点で良くないのは常識だろ。 出来るだけ避けるべし。
225 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 12:29:22 ID:X6zGUH5K0] ループでもキーフックとの共存は可能だし、Sleep入れれば張り付きは避けられる でも同一スクリプト内で複数のループを平行して動かすことは出来ないし AHKではせっかくTimer用意してくれてるんだからそっち使うほうが楽じゃね?
226 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 15:35:32 ID:LQm7vXkr0] フリーのウイルス対策ソフトウェア Avast!の自動更新を有効にしている場合に しょっちゅう「再起動しますか?」とダイアログで聞かれるのを自動でいいえと答えて閉じる スクリプトが完成しました。 #Persistent ;スクリプトを常駐状態に SetTimer, Lbl, 2000 Lbl: IfWinExist, avast!: オペレーティング・システムの再起動が必要 { WinActivate, avast!: オペレーティング・システムの再起動が必要 WinWaitActive, avast!: オペレーティング・システムの再起動が必要 Sleep, 100 Send, {Alt Down}n{Alt Up} } こんな感じ。SetTimerを教えてくださった方ありがとうございました。 ところで、これ3行目(Lbl:の1行上)に制御を戻す事は不可能なのでしょうか? SetTimer, Lbl, 2000 MsgBox, 制御が戻った Lbl: ;処理を書く ↑こういうスクリプトがあったとしたら、無限に2秒毎にLbl:以下を実行し続け、2行目のMsgBoxが 1度も永久に実行される事が無いですよね?コレを実行させるにはどうすればいいのでしょうか?
227 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 16:09:49 ID:XKNncdyU0] WinWait Return
228 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 16:23:20 ID:gpaQklib0] AHKのスクリプトに精通している人はちょっと尊敬するわ。
229 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 18:25:06 ID:f8EcCtIoO] なんかいろいろわかってなさそうだが、とりあえずサブルーチンの前後にRetun入れろ 話しはそれからだ
230 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 19:38:17 ID:LQm7vXkr0] >>229 SetTimer, Lbl, 2000 MsgBox, 制御が戻った return Lbl: ;処理を書く return こういう事?
231 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 20:15:13 ID:6N1PNkmc0] >>205 ありがとう
232 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/07/31(火) 21:58:14 ID:gpaQklib0] こんな使い方も。 www.nikoli.com/ja/misc/autohotkey.html
233 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/14(火) 16:56:48 ID:qNJw2gH40] DllCall("WindowFromPoint", Int, x, Int, y, UInt)という関数で 相対座標で座標を指定したいのですが、どうやればいいんでしょうか?
234 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/14(火) 17:03:56 ID:0RlyL1gT0] >>233 そもそもそれじゃ引数が違うから呼び出せないんじゃ?
235 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/14(火) 20:12:17 ID:qNJw2gH40] >>234 サンクス!よく分からずXとYだけ変えて使ってました 絶対座標専用なんですね
236 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/14(火) 20:29:35 ID:0RlyL1gT0] あ、ごめん、WindowFromPoint は PPOINT 型じゃなくて、 POINT 型の引数なのか。 やっぱ >>233 で合ってるわ。 相対座標ってどこからの相対なのかわからないけど、 スクリーン座標系からクライアント座標系に変換するには、 hwnd = WindowFromPoint(pt); ScreenToClient(hwnd, &pt); みたいに書けばいいんじゃない?
237 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/14(火) 20:42:06 ID:ngoXC/ha0] 2kで個別のアプリのCPU使用率を取得する方法はないでしょうか? 流行らせるページのスクリプトはXP以降にしか対応してないみたいでダメでした。
238 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/14(火) 22:06:54 ID:qNJw2gH40] >>236 ありがとう! でもそこら辺にあるスクリプトを継ぎ接ぎしてるだけのおいらにはムズイw
239 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/15(水) 04:39:00 ID:4rjZGnCz0] 質問があります。 海外ソフトで使うスクリプトを作ってます。 ~キーを押す必要があるんですが日本語キーボードに対応してないので 日本語キーボードだと@キーを押すことになります。 こういう場合に英語キーボードで~を押したことにするにはどうしたらいいですか?
240 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/15(水) 15:52:17 ID:W8Jf/qg+0] >>239 日本語でおk
241 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/15(水) 17:59:37 ID:3haFl8pw0] ~キー出力は、JP106キーならShift+^、US101キーならShift+`なんだが…
242 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 00:03:43 ID:bw53sfnn0] なにいってんのかわかんないけど jp106キーボードでUSドライバ使ったりすると shift+半角で~出るよ。
243 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 02:35:52 ID:oDhmkhIm0] lukewarm.s101.xrea.com/commands/_InstallKeybdHook.html 上のページを読み、 「無条件でキーフックを有効にする」というのを有効にしたところ、 キーフック機能が常駐してしまい、無効にすることができなくなりました。 ExitAppを使えばよいと書いてありますが、 具体的な記述がわからず色々組み合わせてみましたが無理でした。 自分では打開できそうにありません。 誰か分かる人がいたら教えてくださいませ。
244 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 02:53:57 ID:yzJZJ0l/0] ワロタwwwwwwww
245 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 03:55:49 ID:Y//SIsXz0] >>243  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」 ―――――――――――――‐┬┘ | ____.____ | .__ PCを | | | | |\_\ 窓から | | ∧_∧ | | | |.◎.| 投げ捨てろ | |( ´∀`)つ ミ | | |.: | | |/ ⊃ ノ | | .\|.≡.|  ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ |  ̄
246 名前:243 mailto:sage [2007/08/16(木) 06:19:27 ID:oDhmkhIm0] 243なのですが、解決しました。 「特定のホットキーを登録していれば、自動的にフックは有効になる」 ということがlukewarm.s101.xrea.com/commands/KeyHistory.html こっちの方のページに書いてありますね、 それを見落としたばかりに、つい混乱してしまったみたいです。
247 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/16(木) 17:30:04 ID:koSg/3pj0] Diablo2.ahk誰か早く
248 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/21(火) 20:19:34 ID:EL1WKe0y0] スクリプト走らせる度にAutoHotkeyのプロセスが増えるんですが仕様ですか?
249 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/21(火) 20:36:24 ID:OI80Iptb0] 仕様です というか当然です
250 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/22(水) 00:07:32 ID:qOJxaKKH0] d
251 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/22(水) 04:09:23 ID:SD01+S/A0] 一つのプロセスで複数のスクリプトを別の名前空間で走らせられたら 他人の作ったスクリプト利用しやすくなりそう。
252 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/22(水) 05:08:44 ID:aQGermqT0] >>251 そこまでするなら、もう他のましな言語に載せ変えてほしい希ガス
253 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/23(木) 15:17:59 ID:bav1KONC0] モニタを追加したのですが 下のようにすると、もとのモニタ内でしか、ポインタが異動しません。 どうすれば、追加したモニタ内も動くようになるんですか? たとえば、画面の右端にポインタがくると、左端にきてしまいます。 h:: MouseMove, -20, 0, 0, R return
254 名前:名無しさん@お腹いっぱい。 [2007/08/23(木) 19:00:00 ID:R2hk6dcE0] キーのremapで悩んでいます。 テンキーのような配列のキーボードで、一つ一つを押すと 「Ctrl + Alt + A」「Ctrl + Alt + B」...のように、 「Ctrl + Alt +※」のような組み合わせでキーコードを発行するキーボードが 有るのですが、その「Ctrl + Alt + A」のキーを「Enter」に割り当てたい場合に ^!a::Enter としたときにkeyhookには、 down Ctrl down Alt down a down Enter up a up Enter up Ctrl up Alt down Ctrl up Ctrl のように出力されます。 実際にエディター等で、「Enter」のように機能しておりません。 「Ctrl + Alt + A」が押された後に「Enter」が押されています。 その関係で、ほとんどのキーが正常に反応しません。 何か良い方法、もしくは参考になるサイト等をご教示願えないでしょうか? ちなみにAHKなどのキーバインドソフトや、プログラムの経験はほとんど有りません。 サンプルのコードからどのような動作がなされているかくらいは分かると思います。
255 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/23(木) 19:33:42 ID:K3YxSJna0] >>254 その製品自体にはリマップツールは付いてないの? で、 ^!a:: Send, {Enter} は試した?
256 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/25(土) 19:07:02 ID:W+ItwZr20] 253をどなたかよろしく
257 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/26(日) 16:27:04 ID:a1hT3suL0] SysGetで複数モニタのステータスは取れるけど。 マウスポインタの指定の仕方はわかんね
258 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/27(月) 00:59:19 ID:aeiRSrmu0] 無変換+EDSFにマウスカーソル移動を(使い物になるレベルで)割り当てたいんだけど、 移動量や加速度の調整のうまいやり方ご存じないっすか? 一応昔書いたコードを晒しておきます。汚いですがスイマセン。 これだと見ての通りちょっと押し続けると思いっきり移動してしまう感じに。 理想はジョイスティックやトラックポインタみたいなものだけど、デジタル入力だと難しいでしょうか。 ;カーソル右移動 sc07B & F:: vol := 1 speed := 0 MouseMove, %vol%, 0, %speed%, R Sleep, 100 Loop { Sleep, 10 GetKeyState, s1, sc07B, P GetKeyState, s2, F, P If (s1 = "U" || s2 = "U") { break } Else If (s1 ="D" && s2 = "D") { vol += %A_Index% speed += %A_Index%/2 MouseMove, %vol%, 0, %speed%, R } }
259 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/27(月) 01:20:00 ID:VadSXBov0] A_INDEXを加算するんじゃなくて 2秒以上押してたらパラメーターを変化させるとか
260 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/27(月) 03:57:41 ID:g7zWi+FH0] %A_Index% に対する speed の 増加率をもっとゆるやかにしたらいいと思う。 speed += %A_Index%/2 だとspeedが二次関数なみに増加してってる。 あとは>>259 みたいにループ回数じゃなく時間にspeedを対応させるとか。
261 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 15:06:08 ID:KlpUKV/w0] AutoHotKeyでマウス3ボタン同時押しで何かをする、というのをやってみたいんだけど どうしたら出来ますか
262 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 15:54:15 ID:d/TyIHTq0] LbuttonとRbuttonでコンビネーションキーして もう一個のボタンの押下を待てば?
263 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 16:08:42 ID:KlpUKV/w0] >>262 待つ方法がよくわからなくて Inputを使えばいいのかと思うんですけど、 LbuttonかRbuttonが離れたらなにもしない、 という風にするにはどうしたらいいものでしょうか
264 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 18:16:34 ID:d/TyIHTq0] LR+[A]キーで実験してみたお ~LButton & RButton:: { Tooltip, ! Loop { GetKeyState, LB, Lbutton, P GetKeyState, RB, Rbutton, P GetKeyState, A, a If LB = U { Break } If RB = U { Break } If A = D { MsgBox, ! Break } } ToolTip Return }
265 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 18:43:12 ID:KlpUKV/w0] >>264 なるほどすばらしい動きですね ありがとうございます やり方としてはだいたい分かったと思うのですが、 このループは休みなく回り続けると思うのですが、 これはパフォーマンスに悪影響をおよぼしたりはしないものなのでしょうか
266 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 18:46:28 ID:ZM87iOTj0] どんだけしょぼいPC使ってんだよ PCつけてるだけでそれ以上のものが動いてるっつの
267 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 18:49:58 ID:KlpUKV/w0] >>266 他言語の開発経験では、 こういったビジーループはCPU使用率を100%近く使い切ってしまうものなので どういう仕組みでその辺を回避してるのか不思議なのです ループにSleepを入れなくて大丈夫なのはなぜなのだろうと
268 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 18:56:11 ID:DzJvLQge0] そのループに入るのはRL押してるときだけじゃないの。
269 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 19:25:04 ID:e2B4bxdm0] 各行ごとに10msのスリープが最初から入ってた気がする
270 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 19:45:02 ID:ZAbcaavv0] >>267 他の言語の開発経験があるならソース読もうよ…
271 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/29(水) 20:06:53 ID:KlpUKV/w0] すみません、再度質問させてください ~LButton & RButton:: Loop { GetKeyState, rb, Rbutton, P GetKeyState, lb, LButton, P GetKeyState, wUp, WheelUp, P ToolTip %wUp% if lb = U { break } if rb = U { break } if wUp = D { send {PgUp} MouseClick WheelUp,,,U wUp = U } } ToolTip return 二ボタンを同時に押しながら、WheelUp/Downに反応してPgUp/Downをさせたいと思っています GetKeyStateでWheelUpをとると起動後何もしない時の初期状態はUなのですが 一度WheelUpするとDになり、その後Upをしても元に戻りません WheelUpのKeyStateをUにする方法はないものでしょうか それか同時押し+Wheelをうまく動かす方法はないものでしょうか
272 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/30(木) 11:19:13 ID:zx+Yz7/90] ディアクティブなウィンドウをウィンドウタイトルで検索してディアクティブなままSend,することって出来ないの?
273 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/30(木) 11:38:24 ID:fGCl+Ibc0] ControlSend
274 名前:271 mailto:sage [2007/08/30(木) 11:40:20 ID:nlX0V4+q0] 自己解決しました ~LButton2 & RButton:: ToolTip loopStart HotKey WheelUp, WheelUpLabel HotKey WheelDown, WheelDownLabel HotKey WheelUp, On HotKey WheelDown, On Loop { GetKeyState rb, Rbutton, P GetKeyState lb, LButton, P if lb = U { break } if rb = U { break } } ToolTip loopend HotKey WheelUp, Off HotKey WheelDown, Off return
275 名前:271 mailto:sage [2007/08/30(木) 11:41:11 ID:nlX0V4+q0] WheelUpLabel: ToolTip WheelUp return WheelDownLabel: ToolTip WheelDown return HotKeyを動的に割り当てればいいようですね ありがとうございました
276 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/30(木) 14:33:26 ID:JCfA0ZE80] 自己解決してたか。昨日貼ろうとしたらネット使えなくなっちまって参った・・ほぼ同じコードだけど一応貼っておくよ ~WheelUp::tooltip, 準にゃんならおk ;WheelUp::tooltip, 準にゃ〜〜〜〜ん ~LButton & RButton:: Send, {LButton Up} ;キャンセルしないと不便だと思うので。 Hotkey, ~WheelUp, ~WheelUp, Off ;LRボタンが押されてる間無効化 Hotkey, WheelUp, LB_RB_WheelUp, On Hotkey, WheelDown, LB_RB_WheelDown, On Loop{ GetKeyState, rb, Rbutton, P GetKeyState, lb, LButton, P if((lb=="U") || (rb=="U")){ break } } ;通常時のホットキーの処理に戻す Hotkey, WheelUp, LB_RB_WheelUp, Off ;;WheelUpホットキーラベルが無い場合 ; Hotkey, WheelUp, WheelUp, On ;WheelUpホットキーラベルがある場合 Hotkey, WheelDown, LB_RB_WheelDown, Off Hotkey, ~WheelUp, ~WheelUp, On return LB_RB_WheelUp: tooltip, 寧ろ準にゃんじゃなきゃ嫌だ send {PgUp} ;LButton+RButton+WheelUP時の処理 return LB_RB_WheelDown: send {PgDn} ;LButton+RButton+WheelDown時の処理 return
277 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/30(木) 16:44:44 ID:nlX0V4+q0] デフォルトのホットキーのラベル名はキー名と同じなので、ラベルを戻す時は WheelUpラベルが定義されていればWheelUpに割り当てればいいし ~WheelUpが定義されていれば~WheelUpに割り当てればいいわけですね ラベルが定義されているかはIsLabel()で分かるみたいですね しかしもし動的に別のラベルが割り当てられている可能性があると ラベルを戻す時にデフォルトのWheelUpに戻していいか分からなくなりますよね そのホットキーに対してなんというラベルが割り当てられているか調べる方法はないでしょうか 3ボタン同時押しを関数化して再利用しようと思っているので(車輪の再発明でしょうけど) あらゆる可能性に備えときたいんですけど方法はありますかね >>269 デフォルトで10ms実行すると10ms休むみたいですね ttp://lukewarm.s101.xrea.com/commands/SetBatchLines.html
278 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/31(金) 01:10:59 ID:ipTtSRZ90] 三ボタン同時押しを簡単に実現できる関数を作りました 手元の環境ではなかなかうまいこと動いています 結構使いやすくまとまってるんじゃないかと思います www.uploda.org/uporg993571.zip.html 使っていただいて問題があったら教えていただけると幸いでございますよ
279 名前:278 mailto:sage [2007/08/31(金) 16:39:31 ID:ipTtSRZ90] ファイル消えちゃったんでホームページ作って上げました pmoky.ame-zaiku.com/ 使ってくれてる人はいるだろうか・・・
280 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/31(金) 17:32:47 ID:Ej00l/PP0] >>279 ゲームで使ってみる 今後ともがんばってくれ
281 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/31(金) 17:42:52 ID:JWf9VRD/0] 長野テクトロンのお気に入りキーボードと組み合わせて なんか面白いことやってる人いない?
282 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/31(金) 18:11:04 ID:ipTtSRZ90] なんとニッチな話題
283 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/31(金) 20:19:47 ID:KhuX3oNk0] どっかでみたと思ったらやねうらおと喧嘩してた人かな?
284 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/08/31(金) 21:44:54 ID:ipTtSRZ90] うわー、よく知ってますね あんま特定されるもの晒すもんじゃないですね・・・
285 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/03(月) 01:21:42 ID:lFHF97IF0] AutoHotKeyでnストロークキー、 ダブルクリック、トリプルクリック・・・n回クリックなんかを できるようにするライブラリを作りました pmoky.ame-zaiku.com/ マウスで右押しながら左、左を離してホイール回すとか 右押しながら左、右を離して右ダブルクリック といった風に自由にコマンドが割り当てられます よかったらどうぞ
286 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/03(月) 02:26:59 ID:fJ9mFThh0] [これはひどい]
287 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/03(月) 03:58:03 ID:lFHF97IF0] 何がひどいのか聞かせてもらいたい
288 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/03(月) 04:18:56 ID:bRMrbhHi0] やばいっしょ普通に考えて
289 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/03(月) 05:00:05 ID:lFHF97IF0] まあAutoHotKey歴三日でこれだけのものが作れてしまう才能は 普通に考えればやばいとしかいいようがないな
290 名前:名無しさん@お腹いっぱい。 [2007/09/03(月) 05:25:56 ID:Hj/BQYMI0]
291 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 10:05:06 ID:JamW/x630] まぁトリプル、n回タップスクリプトあたりは割とみんなAHK覚え始めて最初に作るよな。 だが結局使いにくい(まともに動作はするが操作がおっつかない、指がついてかない)ことが分かって、 マウスジェスチャやホイールリダイレクトあたりの無難なスクリプトに落ち着くんだけど
292 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 10:22:27 ID:mVqCjwNS0] 俺のはちゃんと動作するぞ
293 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 10:26:54 ID:mVqCjwNS0] 操作がおっつかないという話か いや、手軽に実行できていい感じだぞ 拡張ボタンは同時押しで動かす+ダブルで動かす という形が便利だ というかマウスジェスチャは根本的に使いにくい 遅い、疲れる、ミスが多い マウスコマンドが大量に割り当てられる環境があれば何のメリットもない
294 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 10:43:43 ID:fjDKy8bk0] 本日のNGID:mVqCjwNS0
295 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 10:48:14 ID:mVqCjwNS0] 俺はマウスジェスチャ批判してるだけだが 批判に耳を傾けない態度はどうかと思うね
296 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 13:07:34 ID:QI1dt7uw0] >>295 批判以前に耳を傾けて貰えない理由があるんじゃないの マウスジェスチャだって、たとえばブラウザの進む/戻るを←や→みたいにしてあるのは 直感的でいいと思うけどね。 ↓←で閉じるとか、こうやってこうやってこうするとこうなるとか、 もうファミ通に投稿しちゃうぞみたいなのはどうかと思うけど。 使いやすいとか使いにくいとか主観で言ってるだけじゃ批判にもならない。
297 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 13:12:18 ID:mVqCjwNS0] 右を押しながら左にドラッグするのと、 右ボタン押しながら左ボタン押すのでは どっちが早いか、どっちが疲れないか、どっちが間違いにくいか 答えは誰の目にも明らかじゃない 主観にも何にもなってない
298 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 13:22:33 ID:DJLOdr4W0] 大体複数タップごときでなんであんなに膨大なスクリプトになるんだよ 10行くらいで終わらないか?
299 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 13:37:31 ID:mVqCjwNS0] WheelはGetKeyStateではとれないから 動的にホットキー割り当てが必要になる ホットキーを一律にとめることが出来ないから 必要なもの以外で起こる可能性のあるホットキーを 一時的に全て止め、実行後に戻す必要がある スレッドの優先順位を上げるだけでは再帰的に適用できなくなるし その辺の処理がめんどい
300 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 15:07:23 ID:VHYBwhSk0] 腕はあっても自意識過剰じゃな
301 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 17:25:14 ID:I07haSN+0] なんで荒れてんの?
302 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/09/04(火) 17:27:21 ID:JamW/x630] >どっちが早いか、どっちが疲れないか、どっちが間違いにくいか それは完璧におまえの主観 ポインティングデバイスは環境によって全然使用感変わってくるよ 拡張ボタンはデフォじゃない、ノートだとホイールが特殊でMBottunすらついてないのもある。 何のボタンを先に押してから何を押すとかいくつも重なると覚えてらんない。 複合ダブルクリックなんてやった日には指がつる。 という意見の奴も少なくはないと思うが? それに、ダブルクリックチェックするなら本当はポインタの移動距離も見ないと 300msタイムアウトくらいだと結構誤作動すると思うぞ