win7一鍵拖動生成快速啓動欄

一鍵拖動生成快速啓動工具欄

^#x:: ;自動添加快速啓動工具欄
if had_added()
	ExitApp

ql_add()
Sleep,200
if (is_locked())
{
	lock_unlock()
}
Sleep,200
clear()
Sleep,200
control_move()
control_set()
Sleep,200
lock_unlock()
blockinput,off


;=====================================================

ql_add()
{

	winactivate,ahk_class Shell_TrayWnd
	WinGetPos, x, y, w, h, ahk_class Shell_TrayWnd
	ControlClick, % "x" 0 " y" h, ahk_class Shell_TrayWnd,, R
blockinput,on
	while(!menu1_hwnd := waitmenu(click_x, click_y))
		Sleep, 200
	ControlSend, ahk_parent, t, ahk_id %menu1_hwnd%
	ControlSend, ahk_parent, {Right}, ahk_id %menu1_hwnd%
	WinGetPos, m1x, m1y, m1w, m1h, ahk_id %menu1_hwnd%
	while(!menu2_hwnd := waitmenu(m1x+m1w, m1y, menu1_hwnd))
		Sleep, 200
	ControlSend, ahk_parent,n, ahk_id %menu2_hwnd%
	WinWait, 新工具欄 - 選擇文件夾
	ControlClick, Edit1, 新工具欄 - 選擇文件夾,, L
	ControlSetText, Edit1, %APPDATA%\Microsoft\Internet Explorer\Quick Launch, 新工具欄 - 選擇文件夾
	ControlSend, Edit1, {Enter}, 新工具欄 - 選擇文件夾
	ControlClick, Button1, 新工具欄 - 選擇文件夾
	ControlGetPos,xs,ys,,,Button1,新工具欄 - 選擇文件夾

	Loop
	{

		IfWinExist, 新工具欄 - 選擇文件夾
		{
			WinActivate,新工具欄 - 選擇文件夾
			MouseMove,xs+5,ys+5,0
			Send {LButton}
		}
		else
		{
			break
		}
		Sleep, 200
	}
}



is_locked()
{
	RegRead, Status, HKCU, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, TaskbarSizeMove
	return !Status
}

lock_unlock()
{
	WinGetPos, x, y, w, h, ahk_class Shell_TrayWnd
	ControlClick,% "x" x " y" y+h, ahk_class Shell_TrayWnd,, R
	while(!Menu_hwnd := waitmenu(Click_x, Click_y))
	Sleep, 200
	ControlSend, ahk_parent, l, ahk_id %Menu_hwnd%
}
clear()
{
	WinGet, ctr_list, ControlList, ahk_class Shell_TrayWnd
	Loop, Parse, ctr_list, `n, `r
	{
		if InStr(A_LoopField,"ToolbarWindow32")
		{
			ControlGetText, txt, % A_LoopField, ahk_class Shell_TrayWnd
			if (txt="Quick Launch")
			{
				ql_ctr := A_LoopField
				break
			}
		}
	}
	if ql_ctr
	{
		ControlGet, ql_ctr_hwnd, Hwnd, , % ql_ctr, ahk_class Shell_TrayWnd
		WinGetPos, x, y, w, h, ahk_id %ql_ctr_hwnd%
		ControlClick, % "x" 0 " y" h, ahk_id %ql_ctr_hwnd%,, R
		while(!Menu1_hwnd := waitmenu(x, y+h))
		Sleep, 200
		ControlSend, ahk_parent, v, ahk_id %Menu1_hwnd%
		ControlSend, ahk_parent, {Right}, ahk_id %Menu1_hwnd%
		WinGetPos, m1x, m1y, m1w, m1h, ahk_id %Menu1_hwnd%
		while(!Menu2_hwnd := waitmenu(m1x+m1w, m1y, Menu1_hwnd))
		Sleep, 200
		ControlSend, ahk_parent, g, ahk_id %Menu2_hwnd%
		WinWaitClose, ahk_id %Menu2_hwnd%

		WinGetPos, x, y, w, h, ahk_id %ql_ctr_hwnd%
		ControlClick, % "x" 0 " y" h, ahk_id %ql_ctr_hwnd%,, R
		while(!Menu3_hwnd := waitmenu(x, y+h))
		Sleep, 200
		ControlSend, ahk_parent, x, ahk_id %Menu3_hwnd%
		WinWaitClose, ahk_id %Menu3_hwnd%

		WinGetPos, x, y, w, h, ahk_id %ql_ctr_hwnd%
		ControlClick, % "x" 0 " y" h, ahk_id %ql_ctr_hwnd%,, R
		while(!Menu4_hwnd := waitmenu(x, y+h))
		Sleep, 200
		ControlSend, ahk_parent, w, ahk_id %Menu4_hwnd%
		WinWaitClose, ahk_id %Menu4_hwnd%
	}
}

control_move()
{
	Loop,5
	{
		ControlGetPos,x2,y2,,,MSTaskListWClass1,ahk_class Shell_TrayWnd
		ControlGetPos,x,y,,,ToolbarWindow323,ahk_class Shell_TrayWnd
		if (x>x2)
{
		WinActivate,ahk_class Shell_TrayWnd
		MouseMove,x-5,y+5,0
		Send {LButton down}
		Sleep,350
		MouseMove,0,y+5,8
		Send {LButton up}
}
else
{
break
}
	}
}

control_set()
{
	blockinput,on
	WinActivate,ahk_class Shell_TrayWnd
	ControlGetPos,x,y,w,h,ToolbarWindow323,ahk_class Shell_TrayWnd
	ControlGetPos,x2,y2,,,MSTaskListWClass1,ahk_class Shell_TrayWnd
	MouseMove,x+w+(x2-x-w)*2/3,h/2,0
	Send {LButton down}
	Sleep,200
	ControlGetPos,,,w0,h,ToolbarWindow323,ahk_class Shell_TrayWnd
wc:=w0/2
mousemove,-wc,0,5,r
con:=0
loop
{
	if (wc<1)
	{
		break
	}
	wc:=wc/2
	ControlGetPos,,,w,h,ToolbarWindow323,ahk_class Shell_TrayWnd
	if ((w0-wc*2>w)and(con=0))
{
	con:=1

}
else if ((w0-wc*2=w)and(con=0))
{
	con:=0
}
else if ((w0+wc*2<w)and(con=1))
{
	con:=0

}
else if ((w0-wc*2=w)and(con=1))
{
con:=1
}

if (con=0)
{
w0:=w
mousemove,-wc,0,5,r
}
else
{
		w0:=w
		mousemove,wc,0,5,r
}


}
	Send {LButton up}
blockinput,off
}

had_added(){
	WinGet, ctr_list, ControlList, ahk_class Shell_TrayWnd
	Loop, Parse, ctr_list, `n, `r
	{
		if InStr(A_LoopField,"ToolbarWindow32")
		{
			ControlGetText, txt, % A_LoopField, ahk_class Shell_TrayWnd
			if (txt="Quick Launch")
			{
				ql_ctr := A_LoopField
				break
			}
		}
	}
	if ql_ctr
		return 1
}


waitmenu(click_x, click_y, ex_hwnd:="")
{
	WinGet, wins, List
	a := ""
	Loop % wins
	{
		win := wins%A_index%
		WinGetPos, x, y, w, h, ahk_id %win%
		WinGetTitle, title, ahk_id %win%
		if (!title && (Abs(Click_y-y)<8 || Abs(Click_y-(y+h))<8) && w<300 && w>80 && h>20 && (ex_hwnd ? win<>ex_hwnd : 1))
{
			return win
}
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章