AutoHotKey

;//////////////////////////////////////////////////////////
; 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 ; テスト用

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年07月05日 02:49