AutoHotKey Thread

このエントリーをはてなブックマークに追加
297名無しさん@お腹いっぱい。
Tww = WindowsForms10.Window.8.app45;ウィンドウクラス名
Twc = WindowsForms10.SysTabControl32.app451;タブのクラス名

$WheelUp::
IfWinActive,ahk_class %Tww%
MouseGetPos,,,,cn
IfEqual, cn, %twc%
Send,{F2}
return
return

$WheelDown::
IfWinActive,ahk_class %Tww%
MouseGetPos,,,,cn
IfEqual, cn, %twc%
Send,{F3}
return
return

2chブラウザのtwintail2でホイールによるタブ切り替えを実装するために上のようなコードを
書いたんだけど、この条件を満たさないときにWheelUp&Downをそのまま送る様にするには
どんなコードを追加すれば良いのん?
一応環境書いておきます。 XP Pro sp1 AHK 1.0.29
298名無しさん@お腹いっぱい。:05/03/03 19:05:20 ID:kvG2gIbi
IfWinActive,ank_class %Tww%
hoge
else
Send,{WheelDown}
return
299297:05/03/03 20:05:42 ID:un1waaJf
>>298
レスd
自分もそれと似たようなコードを書いて、elseに対応するifが無いぞというエラーが出るので
どうしたもんかと思ってたんですが、どうやら原因はreturnを入れすぎていたことみたいっす。
if文の後には必ず書かなきゃいけないと思い込んでました。
ということで、正常に実行できたスクリプトも後学のために貼っておきます。
もっと効率の良い書き方があったら教えて下され。

Tww = WindowsForms10.Window.8.app45
Twc = WindowsForms10.SysTabControl32.app451

$WheelUp::
IfWinActive, ahk_class %Tww%
MouseGetPos,,,,cn
IfEqual, cn, %Twc%
Send,{F2}
else IfWinNotActive Or IfNotEqual
Send,{WheelUp}
return

$WheelDown::
IfWinActive, ahk_class %Tww%
MouseGetPos,,,,cn
IfEqual, cn, %Twc%
Send,{F3}
else IfWinNotActive Or IfNotEqual
Send,{WheelDown}
return
300名無しさん@お腹いっぱい。:05/03/03 20:19:53 ID:kvG2gIbi
if を重ねる場合、
{} で囲んだほうが見通しがよくなりそうです。

あと return は if に必要なのではなくて、
WheelDown:: <-この Hotkeys というサブルーチンに必要らしい。
http://lukewarm.s101.xrea.com/Hotkeys.htm
私も今日から始めたばかりでまだよくわかってないのですが。
301名無しさん@お腹いっぱい。:05/03/03 23:09:49 ID:pNhpP8Ks
>299
>IfWinActive, ahk_class %Tww%
>MouseGetPos,,,,cn
>IfEqual, cn, %Twc%
>Send,{F2}
この書き方だと アクティブウィンドウがツインテールじゃないときも
IfEqual, cn, %Twc% 以下を実行してしまうので{}で括ったほうがよい

WheelUp::
WheelDown::
  /* フォーカスがツインテールのタブ上にある時は特殊処理 */
  IfWinActive, ahk_class %Tww%
  {
    MouseGetPos,,,,cn
    IfEqual, cn, %Twc%
    {
      ifEqual A_Thishotkey, WheelUp,  Send,{F2}
      Else                   Send,{F3}
      return
    }
  }

  /* それ以外は普通にホイール */
  Send,{%A_Thishotkey%}
return


>else IfWinNotActive Or IfNotEqual
これはちょっとわからん、つかこんな書き方ってできるんだ? エラーにならんのか