AutoHotkey スレッド part5

このエントリーをはてなブックマークに追加
952名無しさん@お腹いっぱい。:2008/08/13(水) 16:38:34 ID:lprpRZnq0
まぁ、ウィンドウ指定でのホットキーはスクリプトロード時に決まるわけで、
autoexec section に記載しないと動かんわな。

何らかのサブルーチン内でウィンドウ探すときに
SetTitleMatchMode を変更して探索するのとは違うしな。

まぁ、言語仕様がアレなんで。
953名無しさん@お腹いっぱい。:2008/08/13(水) 19:51:48 ID:5xF6GluX0
フォーラム見てたらこんなの発見した。

AutoHotkey_L
ttp://www.autohotkey.com/forum/viewtopic.php?t=34070

有志のカスタマイズ版みたい。

個人的には #if expression と while の実装が大当たり。
AutoHotkeySC.binもあるからexe化も問題なかったし。
ToDo見たら「Full unicode build.」とかもあった。
あんま時間取れないって書いてるから、期待しすぎは良くなさそうだけど。
954名無しさん@お腹いっぱい。:2008/08/14(木) 08:35:06 ID:2yMmcCqm0
> ToDo見たら「Full unicode build.」とかもあった。
ktkr
955名無しさん@お腹いっぱい。:2008/08/14(木) 09:25:34 ID:jGlRY/Go0
ということは、文字化けと無縁になるのか!?
956名無しさん@お腹いっぱい。:2008/08/14(木) 09:30:17 ID:oPGTwpWy0
>>953
>個人的には #if expression と while の実装が大当たり。

こう書かれても、素人の俺には理解できないので、
なんでもいいので使い方サンプルみたいなの晒してもらえませんか?
957名無しさん@お腹いっぱい。:2008/08/14(木) 10:35:03 ID:igRf18B/0
>>956
ぱっと思いついた範囲で。
Whileは基本的にLoopと似たような動作をするんだけど、
Loopの場合、抜けるまでの回数を数値か変数でしか指定できない。
省略すると無限ループになるけど、抜けるための条件をIfで書かないといけない。
例えばテンキーの0を押している間、aとbを交互に連続して入力するのを
LoopとWhileの場合で書いてみる。

Loopの場合
Loop
{
  If GetKeyState("Numpad0")
  {
    If Mod(A_Index,2) = 1
    {
      Send, a
    }
    else
    {
      Send, b
    }
    Sleep, 10
  }
}
958名無しさん@お腹いっぱい。:2008/08/14(木) 10:35:32 ID:igRf18B/0
つづき
Whileの場合
While GetKeyState("Numpad0")
{
  If Mod(A_Index,2) = 1
  {
    Send, a
  }
  else
  {
    Send, b
  }
  Sleep, 10
}

Whileの場合のほうが、"テンキーの0が押されている間ループする"
って理解しやすいよね。
959名無しさん@お腹いっぱい。:2008/08/14(木) 10:42:28 ID:igRf18B/0
さらにつづき
書き忘れちゃったけど、Whileは抜けるための条件を式を使って書ける、
ってのがLoopと違うとこ。

で次は#if expressionね。これも式を指定できるんだけど、
ホットキーの動作をウィンドウごとに切り替えるための#IfWinActive〜と
同じようなもの。これも式を指定できるようになってる。

例としてフルスクリーン時にホットキーを動作させない設定を。
これは実際に俺も使ってる。

#if !CheckActiveWindowFullScreen()
a::b 等のホットキー定義、複数記述可能
#if

今まで1つ1つのホットキー定義にIf入れてたから、スクリプトがスッキリしたよ。
長くなってすまん。
960名無しさん@お腹いっぱい。:2008/08/14(木) 10:50:39 ID:igRf18B/0
あーもう、急いで書き込むと色々破綻してるな。

>>957
自己レスだけどこれじゃループ抜けないじゃん…
以下修正
Loop
{
  If GetKeyState("Numpad0")
  {
    〜中略〜
  }
  else
  {
    Break
  }
}
まぁこんな感じにできるってことで、適当に脳内補完してくれ。
961名無しさん@お腹いっぱい。:2008/08/14(木) 11:08:54 ID:oPGTwpWy0
なるほど、丁寧な解説ありがとう。
コードがスッキリするとデバッグもしやすくなるし、やる気も出るよね。

そんな俺のコードはifとloopとbreakばっかりだわ
962名無しさん@お腹いっぱい。:2008/08/14(木) 11:19:10 ID:Nf29kKhA0
unicode版は常駐量が増えるとかでマルチバイト圏外の人には疎まれそうだが
whileはぜひとも本家の方にもマージしてほしい機能だな
963名無しさん@お腹いっぱい。:2008/08/14(木) 19:11:22 ID:IHqwnWkQ0
キーボードでIEやJaneをほんの少しスクロールさせたいのですがAHKでできるでしょうか?
少しというのはスクロールバーをドラッグしてちょこっと動かす程度です。
964名無しさん@お腹いっぱい。:2008/08/14(木) 19:47:36 ID:m69VUO8d0
カーソルキーのDownをエミュレートすればいい
965名無しさん@お腹いっぱい。:2008/08/14(木) 19:52:44 ID:IHqwnWkQ0
>>964
カーソルキーのDownだとスクロール量が多すぎるんです。
スクロールバーをドラッグして数ドット動かすくらいと言うか。
最小単位でスクロールさせたいんです。
966名無しさん@お腹いっぱい。:2008/08/14(木) 20:45:02 ID:orFA7PcM0
SendMessage
WM_VSCROLL
967名無しさん@お腹いっぱい。:2008/08/14(木) 21:30:34 ID:IHqwnWkQ0
>>966
ググったんですが、DownやPageDownと同じではないでしょうか?
968名無しさん@お腹いっぱい。:2008/08/15(金) 01:29:58 ID:3MR6kBXG0
説明がめんどくせー

はやらせるページのホイール関係のところの互換スクロールあたりを読むと良い。
969名無しさん@お腹いっぱい。:2008/08/15(金) 01:49:59 ID:QuXAVy5j0
ThinkPadのTrackPointの真ん中ボタンによるスクロールは対応できませんか?
どうもフックで検出するツールだと拾えないみたいです。
TrackPointのドライバは仕様が変わっていて、
Foreground Windowにスクロールバーが存在すると
その窓にWM_V/HSCROLLメッセージが行く様です。
970名無しさん@お腹いっぱい。:2008/08/15(金) 02:00:56 ID:QuXAVy5j0
そして、真ん中ボタンを押したまま、乳首の傾きの強弱をつけると
WM_VSCROLL
SB_LINEUP 軽く↑
SB_LINEDOWN 軽く↓
SB_PAGEUP 強く↑
SB_PAGEDOWN 強く↓

WM_HSCROLL
SB_LINEUP 軽く←
SB_LINEDOWN 軽く→
SB_PAGEUP 強く←
SB_PAGEDOWN (強く→

のイベントが発生します。(デフォルトの動作らしいです)
971名無しさん@お腹いっぱい。:2008/08/15(金) 03:13:42 ID:G9mnnse30
>>968
すみません。
どこに互換スクロールのついて書かれているページがあるんでしょうか?
流行らせるページで探したんですが見つかりませんでした。
972名無しさん@お腹いっぱい。:2008/08/15(金) 09:02:13 ID:fZAloXw10
Down → カーソルの移動(カーソルが最終行付近にいないとスクロールしない)
PageDown → 1ページだか半ページだかの単位でスクロール
WM_MOUSEWHELL、WM_VSCROLL → 2、3行ごとにスクロール

これより細かくスクロールさせる方法はシラネ

>>969
自分も前に試してみたけどよくわからなかった。
OnMessage()では外部のメッセージまでは拾えないみたいだし
DllCall()とかでゴニョゴニョすれば何とかなるのかも知れない。

流行らせるページ管理人氏が ThumbRemapでマウスドライバ弄ってるね
ドライバのライブラリさえあればAHKでもかなりの改造ができるみたいだな。
973名無しさん@お腹いっぱい。:2008/08/16(土) 02:58:00 ID:eFgfhHqr0
Aを押したらアクティブウィンドウを最小化、
Shift+Aを押したら直前に最小化したウィンドウを元の大きさに戻す。
というのはどうしたらいいでしょうか?

普通のウィンドウならできるんですが、
最小化時にタスクトレイに入るソフトだと分かりません。
974名無しさん@お腹いっぱい。:2008/08/16(土) 11:26:21 ID:sGqytH9G0
最小化する前にウィンドウサイズを記憶しておいて
Restoreで戻らないならその数値からWinMoveする
975名無しさん@お腹いっぱい。:2008/08/16(土) 11:57:54 ID:qqrRioFD0
このツールって何するものなの?
説明読んでもよくわからにゃいよ
976名無しさん@お腹いっぱい。:2008/08/16(土) 12:05:51 ID:t9u3PjNO0
>>975
ゆとりを排除するもの
977名無しさん@お腹いっぱい。:2008/08/16(土) 15:03:37 ID:xq2q+cNQ0
>>975
そうだなぁ、ツールとして考えるよりもパーツとか材料の寄せ集めとして考えると分かりやすいかもしれないな
何をする為の道具かではなく、用意された部品や材料を使って何を作りたいかってことだな
978名無しさん@お腹いっぱい。:2008/08/16(土) 23:11:34 ID:dkvzdNlQ0
このソフトおもしろい
プログラミング全然知らなくてもリファレンス通りやれば様になるね
Guiで摂氏と華氏を変換するプログラム作ってみた
うまくできた
自信がついた
979名無しさん@お腹いっぱい。:2008/08/17(日) 13:29:34 ID:3dYC4BCw0
まだThumbRemapの不具合は直ってない?
タッチパッドから指を離してても
ずっとタッチパッド押されたままと認識する状態が時々ある。
980名無しさん@お腹いっぱい。:2008/08/17(日) 14:56:49 ID:Nb9UUn4s0
スクリプトにほころびがなくても
他に重い処理を裏でやってたりすると
押しっぱなしになるとかはよくあるよ
981名無しさん@お腹いっぱい。:2008/08/18(月) 20:11:27 ID:F50J/3C90
Ctrlと数値でブラウザー等を指定の場所並び大きさで
移動させているのですが、此れを各ソフトのパスで
起動時に適応したいのですが、可能なようでしたら
記載方法を教えて頂け無いでしょうか宜しくお願いします。

#NoTrayIcon
^1::WinMove, A, , 40, 100, 1200, 900
^2::WinMove, A, , 0, 90, 1280, 934
^3::WinMove, A, , 0, 58, 1280, 966
^4::ExitApp
#Include Opera MouseGesture.ahk
982名無しさん@お腹いっぱい。:2008/08/18(月) 20:46:57 ID:fl/NDlbO0
日本語、日本語
983名無しさん@お腹いっぱい。:2008/08/18(月) 21:08:58 ID:VaVhnvhl0
今はソフトを起動してから各キーでウィンドウサイズなどを変えているが、これを
ソフトの置いてあるフォルダで判別して、ソフト起動時に自動的にウィンドウサイズを変えたい
ってことじゃない?
984名無しさん@お腹いっぱい。:2008/08/18(月) 21:45:42 ID:F50J/3C90
>>982
説明が下手で申し訳御座いません。
>>983
全くその通りです。現状の設定も残しつつ追加記載したいのですが
どうぞ宜しくお願いします。
985名無しさん@お腹いっぱい。:2008/08/18(月) 22:02:46 ID:VaVhnvhl0
^1::
Run,"***.exe" ;ソフト起動する
Sleep,500 ;ちょっと待つ
WinMove, A, , 40, 100, 1200, 900 ;サイズ等変える

キーでソフト起動しつつサイズ変える、って方法でいいなら
簡単にだけどこんな感じ?
これでダメなら待ち方変えたりWinMoveでソフト指定したり。

ソフトは別の方法で起動して、
ソフトが起動されるのを監視してサイズ変える、
となると全然違う感じになるかな。
そういうのはわからないや。
986名無しさん@お腹いっぱい。:2008/08/18(月) 22:05:43 ID:2iXNPZt50
>>984
起動を監視して調整するより、次のようにしてみたらどうかな?
起動時に何かしたいときはいつもこんな感じでやってるよ。

1 スクリプト書いたAHKファイルを作る
2 そのアプリのフォルダにブAHKファイルを入れとく
3 AHKのショートカットをデスクトップにでも置く


Run,Jane2ch.exe
WinWaitActive,Jane Doe Style
WinMove, A, , 0, 58, 1280, 966
Return
987名無しさん@お腹いっぱい。:2008/08/18(月) 22:07:48 ID:2iXNPZt50
あら。。書いてたらかぶっちゃった。失礼いたしました。
988名無しさん@お腹いっぱい。:2008/08/18(月) 22:40:12 ID:F50J/3C90
Runで起動後にSleepで無く起動完了を検地は出来ないのでしょうか
通常は問題無くても不安定なソフト、(Firefox 3)等が問題に
なりそうです。やはり>>986氏の方法が安全かもです。
989名無しさん@お腹いっぱい。:2008/08/18(月) 22:46:08 ID:9gnDk5aUP
検地したいなら秀吉に頼んでみたら?
990名無しさん@お腹いっぱい。:2008/08/18(月) 23:31:29 ID:LMuNVlnU0
>>988
WinWait又はWinWaitActive
991名無しさん@お腹いっぱい。:2008/08/19(火) 16:20:09 ID:MeIIkzyf0
さすがに990で建ってないとマズいかなと

AutoHotkey スレッド part6
ttp://pc11.2ch.net/test/read.cgi/software/1219130051/
992名無しさん@お腹いっぱい。:2008/08/20(水) 18:20:41 ID:RG8plfSe0
埋めた方が良くね?
993名無しさん@お腹いっぱい。:2008/08/20(水) 18:55:08 ID:gf8grxIK0
産め
994名無しさん@お腹いっぱい。:2008/08/20(水) 18:56:16 ID:Q0G+ZGu10
そうだな、埋め
995名無しさん@お腹いっぱい。:2008/08/20(水) 19:29:20 ID:+Ox3RcU20
埋め
996名無しさん@お腹いっぱい。:2008/08/20(水) 20:17:29 ID:iu65xIpb0
997名無しさん@お腹いっぱい。:2008/08/21(木) 09:57:21 ID:rpicDJpv0
埋め
998名無しさん@お腹いっぱい。:2008/08/21(木) 10:00:19 ID:rpicDJpv0
埋め
999名無しさん@お腹いっぱい。:2008/08/21(木) 10:02:47 ID:rpicDJpv0
埋め
1000名無しさん@お腹いっぱい。:2008/08/21(木) 10:08:39 ID:rpicDJpv0
埋め
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。