「マニュアル/Tips一覧/AutoHotKey/描画色・透明色を2つのキーに割り当て」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
スクリプト名 :HkSaiTransparency
用途 :1キートグル仕様の「描画色/透明色」の切替を2つのキーに分割して設定できます
動作環境 : / Win7x64 / SAI 1.1.0 / AutoHotKey Version 1.0.48.05 / Wacom Intuos2 Driver 6.1.2-4
ファイル名:HkSaiSlider.ahk
#highlight(lisp){{
;//////////////////////////////////////////////////////////
; HkSaiTransparency
; 1キートグル仕様の通常/透過モードを2つのキーに分割して設定できます
;
; 無保証・再配布・改変自由
;
; 動作 AutoHotKey 1.0.48.05
; SAI 1.1.0
;
;
; 使用法
; スクリプトを起動したら、
; 1.ツールパレットを表示させ
; 2.適当なブラシを選択し
; 3.開いているSAIファイルのキャンバスの上にマウスカーソルを乗せてください
; 4.スクリプトがブラシのマウスカーソルを認識し、動作を開始します
;
; Z 通常ブラシ
; C 透明ブラシ
;
; このソースの最下部にある、キー設定の部分を変更すれば
; お好みのキーに割り当てられます。
;
; 2009-12-26
; ツールパネル消してても動作するように(マウスカーソル判定)
; 2009-12-22
; 初版
;
;//////////////////////////////////////////////////////////
; 設定 ///////////////////////////////////////////////////
;//////////////////////////////////////////////////////////
; デバッグモード
; 設定:
; 0 ... オフ
; 1 ... オン
DebugMode=0
;//////////////////////////////////////////////////////////
;設定ここまで ////////////////////////////////////////////
;//////////////////////////////////////////////////////////
#MaxThreads 1
#MaxThreadsPerHotkey 1
#HotkeyInterval 1000 ; This is the default value (milliseconds).
#MaxHotkeysPerInterval 50 ; This is the default value.
;初期化
Loop{
TA_SAI:="SAI ahk_class sfl_window_class"
hSAI:=WinExist(TA_SAI)
If WinActive(TA_SAI){
If(CheckChecker()){
ControlSend,, -, SAI ahk_class sfl_window_class
}
hNomalCursor:=GetCursor(hSAI)
if (hNomalCursor>1000){
if DebugMode
tooltip, hSAI%hSAI% 通常%hNomalCursor%
break
}
}
sleep,1000
}
return
GetCursor(HWND){
mytid:=DllCall("kernel32.dll\GetCurrentThreadId","UInt")
targettid:=DllCall("user32.dll\GetWindowThreadProcessId","UInt",HWND,"UInt",0,"UInt")
if(mytid==targettid){
hcursor:=DllCall("user32.dll\GetCursor","Short")
}else{
DllCall("user32.dll\AttachThreadInput","UInt",targettid,"UInt",mytid,"Int",-1)
hcursor:=DllCall("user32.dll\GetCursor","Short")
DllCall("user32.dll\AttachThreadInput","UInt",targettid,"UInt",mytid,"Int",0)
}
return hcursor
}
CheckChecker(){
;ツールウィンドウの位置
WinGetPos, ToolX, ToolY, , , ツール ahk_class sfl_window_class
;ウィンドウある?
if(!ToolX && !ToolY){
;tooltip, ツールウィンドウがないよ!
;sleep, 1000
;tooltip
return -1
}
;座標モード変更
CoordMode Pixel,Screen
CoordMode Tooltip,Screen
;選択色ボックスの位置
ControlGetPos, X, Y, , , sfl_window_class1, ツール
;透過状況表示箱の位置
GetX:=ToolX+X+2
GetY:=ToolY+Y+34
;sleep, 250
;色取得
PixelGetColor, CheckerColor, GetX, GetY
if (CheckerColor=0xFFE0E0)
return 1
if (CheckerColor=0xFAFAFA)
return 0
}
ToggleTrans(GoTo){
Global DebugMode,hSAI,hNomalCursor
Loop,1{
;sleep, 250
;色取得
;PixelGetColor, CheckerColor, GetX, GetY
EnableTrans:=CheckChecker()
;FFE0E0 erase
if (GoTo=0) { ;通常にする
If (EnableTrans=1) { ;通常にする
ControlSend,, -, SAI ahk_class sfl_window_class
if DebugMode
Tooltip, %CheckerColor% 通常にする %GoTo% E %ErrorLevel%, GetX,GetY
}
If (EnableTrans=0) { ;もう通常
if DebugMode
Tooltip, %CheckerColor% もう通常 %GoTo% E %ErrorLevel%, GetX,GetY
}
If (EnableTrans=-1) { ;カーソル判別モード
hCursor:=GetCursor(hSAI)
if DebugMode
tooltip, 通常にする 今の%hCursor% 通常%hNomalCursor%
if (hCursor>hNomalCursor)
ControlSend,, -, SAI ahk_class sfl_window_class
}
}
if (GoTo=1){ ;透明にする
If (EnableTrans=0) { ;透明にする
ControlSend,, -, SAI ahk_class sfl_window_class
if DebugMode
Tooltip, %CheckerColor% 透明にする %GoTo% E %ErrorLevel%, GetX,GetY
}
If (EnableTrans=1) { ;もう透明
if DebugMode
Tooltip, %CheckerColor% もう透明 %GoTo% E %ErrorLevel%, GetX,GetY
}
If (EnableTrans=-1) { ;カーソル判別モード
hCursor:=GetCursor(hSAI)
if DebugMode
tooltip, 透明にする 今の%hCursor% 通常%hNomalCursor%
if (hNomalCursor=hCursor)
ControlSend,, -, SAI ahk_class sfl_window_class
}
}
}
return
}
;//////////////////////////////////////////////////////////
;キー設定
;//////////////////////////////////////////////////////////
#IfWinActive, SAI -
;通常
Z::ToggleTrans(0)
;透明
C::ToggleTrans(1)
;Space::ToggleTrans(1)
;//////////////////////////////////////////////////////////
#IfWinActive
;Esc::exitapp ; テスト用
}}
- 自分用に作ったので載せておきます -- 名無し (2009-12-22 12:13:26)
- GetCursorでやろうとしたけど、SAIのカーソルはハンドルが毎回変わるので無理でした。カーソルハンドル値は、消しゴム>通常なので、今の方法と組み合わせれば使えるかも。 -- 名無し (2009-12-22 12:24:15)
- パネル類を非表示にしていても動作するようにした -- 名無し (2009-12-26 07:25:39)
#comment(,disableurl)
スクリプト名 :HkSaiTransparency
用途 :1キートグル仕様の「描画色/透明色」の切替を2つのキーに分割して設定できます
動作環境 : / Win7x64 / SAI 1.1.0 / AutoHotKey Version 1.0.48.05 / Wacom Intuos2 Driver 6.1.2-4
ファイル名:HkSaiSlider.ahk
#highlight(lisp){{
;//////////////////////////////////////////////////////////
; HkSaiTransparency
; 1キートグル仕様の通常/透過モードを2つのキーに分割して設定できます
;
; 無保証・再配布・改変自由
;
; 動作 AutoHotKey 1.0.48.05
; SAI 1.1.0
;
;
; 使用法
; スクリプトを起動したら、
; 1.ツールパレットを表示させ
; 2.適当なブラシを選択し
; 3.開いているSAIファイルのキャンバスの上にマウスカーソルを乗せてください
; 4.スクリプトがブラシのマウスカーソルを認識し、動作を開始します
;
; Z 通常ブラシ
; C 透明ブラシ
;
; このソースの最下部にある、キー設定の部分を変更すれば
; お好みのキーに割り当てられます。
;
; 2010-01-10 起動時カーソル確認待機
; 2009-12-26
; ツールパネル消してても動作するように(マウスカーソル判定)
; 2009-12-22
; 初版
;
;//////////////////////////////////////////////////////////
; 設定 ///////////////////////////////////////////////////
;//////////////////////////////////////////////////////////
; デバッグモード
; 設定:
; 0 ... オフ
; 1 ... オン
DebugMode=0
;//////////////////////////////////////////////////////////
;設定ここまで ////////////////////////////////////////////
;//////////////////////////////////////////////////////////
#MaxThreads 1
#MaxThreadsPerHotkey 1
#HotkeyInterval 1000 ; This is the default value (milliseconds).
#MaxHotkeysPerInterval 50 ; This is the default value.
;初期化
MsgBox, 4160, , SAIを起動してブラシを選択し、キャンバスの上にカーソルを乗せてください。
sleep, 1000
Loop{
TA_SAI:="SAI ahk_class sfl_window_class"
hSAI:=WinExist(TA_SAI)
If WinActive(TA_SAI){
If(CheckChecker()){
ControlSend,, -, SAI ahk_class sfl_window_class
}
hNomalCursor:=GetCursor(hSAI)
if (hNomalCursor>1000){
tooltip, hSAI%hSAI% 通常%hNomalCursor%
break
}
}
sleep,1000
}
sleep,3000
tooltip,
return
GetCursor(HWND){
mytid:=DllCall("kernel32.dll\GetCurrentThreadId","UInt")
targettid:=DllCall("user32.dll\GetWindowThreadProcessId","UInt",HWND,"UInt",0,"UInt")
if(mytid==targettid){
hcursor:=DllCall("user32.dll\GetCursor","Short")
}else{
DllCall("user32.dll\AttachThreadInput","UInt",targettid,"UInt",mytid,"Int",-1)
hcursor:=DllCall("user32.dll\GetCursor","Short")
DllCall("user32.dll\AttachThreadInput","UInt",targettid,"UInt",mytid,"Int",0)
}
return hcursor
}
CheckChecker(){
;ツールウィンドウの位置
WinGetPos, ToolX, ToolY, , , ツール ahk_class sfl_window_class
;ウィンドウある?
if(!ToolX && !ToolY){
;tooltip, ツールウィンドウがないよ!
;sleep, 1000
;tooltip
return -1
}
;座標モード変更
CoordMode Pixel,Screen
CoordMode Tooltip,Screen
;選択色ボックスの位置
ControlGetPos, X, Y, , , sfl_window_class1, ツール
;透過状況表示箱の位置
GetX:=ToolX+X+2
GetY:=ToolY+Y+34
;sleep, 250
;色取得
PixelGetColor, CheckerColor, GetX, GetY
if (CheckerColor=0xFFE0E0)
return 1
if (CheckerColor=0xFAFAFA)
return 0
}
ToggleTrans(GoTo){
Global DebugMode,hSAI,hNomalCursor
Loop,1{
;sleep, 250
;色取得
;PixelGetColor, CheckerColor, GetX, GetY
EnableTrans:=CheckChecker()
;FFE0E0 erase
if (GoTo=0) { ;通常にする
If (EnableTrans=1) { ;通常にする
ControlSend,, -, SAI ahk_class sfl_window_class
if DebugMode
Tooltip, %CheckerColor% 通常にする %GoTo% E %ErrorLevel%, GetX,GetY
}
If (EnableTrans=0) { ;もう通常
if DebugMode
Tooltip, %CheckerColor% もう通常 %GoTo% E %ErrorLevel%, GetX,GetY
}
If (EnableTrans=-1) { ;カーソル判別モード
hCursor:=GetCursor(hSAI)
if DebugMode
tooltip, 通常にする 今の%hCursor% 通常%hNomalCursor%
if (hCursor!=hNomalCursor)
ControlSend,, -, SAI ahk_class sfl_window_class
}
}
if (GoTo=1){ ;透明にする
If (EnableTrans=0) { ;透明にする
ControlSend,, -, SAI ahk_class sfl_window_class
if DebugMode
Tooltip, %CheckerColor% 透明にする %GoTo% E %ErrorLevel%, GetX,GetY
}
If (EnableTrans=1) { ;もう透明
if DebugMode
Tooltip, %CheckerColor% もう透明 %GoTo% E %ErrorLevel%, GetX,GetY
}
If (EnableTrans=-1) { ;カーソル判別モード
hCursor:=GetCursor(hSAI)
if DebugMode
tooltip, 透明にする 今の%hCursor% 通常%hNomalCursor%
if (hNomalCursor=hCursor)
ControlSend,, -, SAI ahk_class sfl_window_class
}
}
}
return
}
;//////////////////////////////////////////////////////////
;キー設定
;//////////////////////////////////////////////////////////
#IfWinActive, SAI -
;通常
Z::ToggleTrans(0)
;透明
C::ToggleTrans(1)
;Space::ToggleTrans(1)
;//////////////////////////////////////////////////////////
#IfWinActive
;Esc::exitapp ; テスト用
}}
- 自分用に作ったので載せておきます -- 名無し (2009-12-22 12:13:26)
- GetCursorでやろうとしたけど、SAIのカーソルはハンドルが毎回変わるので無理でした。カーソルハンドル値は、消しゴム>通常なので、今の方法と組み合わせれば使えるかも。 -- 名無し (2009-12-22 12:24:15)
- パネル類を非表示にしていても動作するようにした -- 名無し (2009-12-26 07:25:39)
#comment(,disableurl)