win7一键拖动生成快速启动栏

本文介绍了一种使用AutoHotkey脚本一键为Windows系统添加快速启动工具栏的方法。该脚本能够自动创建并配置任务栏上的快速启动区域,让用户轻松访问常用应用程序。

一键拖动生成快速启动工具栏

^#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
}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值