;//////////////////////////////////////////////////////////
; HkSaiSlider(Simple)
; 無保証・再配布・改変自由
;
; 動作 AutoHotKey 1.0.48.05
; 推奨 SAI 1.1.0
;
; 使用法
; ズームイン(変換) vk1Csc079
; ズームアウト(無変換) vk1Dsc07B
; このソースの最下部にある、キー設定の部分を変更すれば
; お好みのキーに割り当てられます。
;
; 注意
; misc.ini TabletMouseSimulation = 1 にしないと、
; カーソルがSAIウィンドウの上にある時誤動作する。
;
; 2009-12-23
; カイゼン活動
;//////////////////////////////////////////////////////////
#MaxThreads 1
#MaxThreadsPerHotkey 1
#HotkeyInterval 1000 ; This is the default value (milliseconds).
#MaxHotkeysPerInterval 50 ; This is the default value.
;//////////////////////////////////////////////////////////
; 設定 ///////////////////////////////////////////////////
;//////////////////////////////////////////////////////////
;
; ナビゲータは独立ウィンドウか
; 設定:
; 0 ... メインウィンドウと統合
; 1 ... 独立(SAI1.1.0~使用可)
;
IsNavigatorIndependent = 1
; 表示倍率 or 回転角度
; 設定:
; 0 ... 表示倍率
; 1 ... 回転角度
;
TargetSlider = 0
;
;//////////////////////////////////////////////////////////
;設定ここまで ////////////////////////////////////////////
;//////////////////////////////////////////////////////////
Target_Wintit=SAI
if IsNavigatorIndependent=1
Target_Wintit=ナビゲータ
if TargetSlider=0
{
Target_Class=sfl_window_class3
if IsNavigatorIndependent=1
Target_Class=sfl_window_class2
Target_Text=表示倍率
}
if TargetSlider=1
{
Target_Class=sfl_window_class7
if IsNavigatorIndependent=1
Target_Class=sfl_window_class6
Target_Text=回転角度
}
;//////////////////////////////////////////////////////////
;スライダ位置の検出
ControlGetPos, x, y, w, h, %Target_Class%, %Target_Wintit%, %Target_Text%
X:=x+(w/2)
;//////////////////////////////////////////////////////////
SendMode Play
return
;//////////////////////////////////////////////////////////
;メイン
; SliderX … スライダのX位置
; SliderY … スライダのY位置
; PLM … 加算の横方向
; TClass … ターゲットのクラス
; TWintit … ターゲットのウィンドウタイトル
; Ttext … ターゲットのテキスト
NavDrag(SliderX,SliderY,PLM,TClass,TWintit,Ttext) {
;押されたホットキーを保存
PushThishotkey=%A_Thishotkey%
;トラップ(ちょい待機してキー押してなかったらreturn)
sleep, 25
if PLM = -1
{
GetKeyState, stateZoomOut, %PushThishotkey%,P
if stateZoomOut = U
return
}
if PLM = +1
{
GetKeyState, stateZoomIn, %PushThishotkey%, P
if stateZoomIn = U
return
}
;入力禁止
BlockInput, MouseMove
;On
nowX:=SliderX ;スライド操作初期位置
minADD:=PLM*0.5 ;増加単位
;シフトDOWN
Send {Shift Down}
;左ボタンDOWN
clickLParam := nowX | (SliderY << 16)
SendMessage, 0x201, 0x0001, ClickLParam ,%TClass%, %TWintit%, %Ttext%
;キーDOWN中の処理
Loop
{
;座標加算
nowX := nowX + minADD
;スライド処理
moveLParam := nowX | (SliderY << 16)
SendMessage, 0x200, 0x0001, moveLParam ,%TClass%, %TWintit%, %Ttext%
;脱出処理
if PLM = -1
{
GetKeyState, stateZoomOut, %PushThishotkey%,P
if stateZoomOut = U
break
}
if PLM = +1
{
GetKeyState, stateZoomIn, %PushThishotkey%, P
if stateZoomIn = U
break
}
}
;左ボタンUP
outLParam := nowX | (SliderY << 16)
SendMessage, 0x202, 0x0001, outLParam ,%TClass%, %TWintit%, %Ttext%
;シフトUP
Send {Shift Up}
;入力禁止解除
BlockInput, MouseMoveOff
return
}
;//////////////////////////////////////////////////////////
;//////////////////////////////////////////////////////////
;//////////////////////////////////////////////////////////
#IfWinActive, SAI - ahk_class sfl_window_class
;//////////////////////////////////////////////////////////
;ズームアウト(無変換) vk1Dsc07B
vk1Dsc07B::NavDrag(X,Y,-1,Target_Class,Target_Wintit,Target_Text)
;ズームイン(変換) vk1Csc079
vk1Csc079::NavDrag(X,Y,+1,Target_Class,Target_Wintit,Target_Text)
#IfWinActive
;Esc::exitapp ; テスト用