通过AHK,设置窗体大小或位置,首先是两种鼠标调节窗体方案,后面是快捷键,注意修改快捷键的位置有两个,仿照Ubuntu调节窗体的快捷键 Alt+F7、Alt+F8,个人感觉比要按着ALT调节的小工具要好用一点。
如果换成单个F7、F8触发,只需要将多出的GetKeyState删除即可,具体函数意思可百度。
调整窗体位置
墙裂推荐设置成鼠标的两个侧键,真的巨方便!!!
并限制了,移动顶部距离,调整窗口的最大高度
注:搭配这个使用,远程电脑时才可不影响远程端的该快捷键控制
#ifWinNotActive ahk_exe mstsc.exe
#ifWinNotActive
方案 1:鼠标侧键版 调窗体
xbutton2::
CoordMode, Mouse, Screen
MouseGetPos, mX0, mY0 , hwnd
IfWinExist, ahk_id %hwnd%
{
;获取初始窗口位置
WinGetPos, wX0, wY0
WinActivate, ahk_id %hwnd%
}
Else
Return
IfWinActive ahk_class WorkerW ;如果是桌面的话则不移动
Return
Loop{
GetKeyState, mState, xbutton2, P
if mState = U
{
ToolTip
break
}
SysGet, ScreenWidth, 61
MouseGetPos, mX, mY
SetWinDelay, -1
if (wY0+mY-mY0)<0{ ;如果到移动到顶部就不移动
if(mX)<ScreenWidth{ ;如果移动到扩展屏则不限制移动
WinMove, ahk_id %hwnd%, , wX0+mX-mX0, 0
}
else{
WinMove, ahk_id %hwnd%, , wX0+mX-mX0, wY0+mY-mY0
}
}
else{
WinMove, ahk_id %hwnd%, , wX0+mX-mX0, wY0+mY-mY0
}
}
Return
;========================================================
xbutton1::
setWinDelay,0
CoordMode,mouse,Screen
MouseGetPos,mx1,my1
WinGetPos,winx,winy,winw,winh,A
loop{
GetKeyState,vstate,xbutton1,p
if vstate=U
break
SysGet, ScreenHeight, 62
MouseGetPos,mx2,my2
xx=% winw + mx2 - mx1
yy=% winh + my2 - my1
tooltip 窗口y坐标%winy% 窗口原长度%winh% 窗口后长度%yy%
if(winy+yy)<(ScreenHeight){
winmove,A,,%winx%,%winy%,%xx%,%yy%
}else{
winmove,A,,%winx%,%winy%,%xx%,ScreenHeight-%winy%
}
sleep,10
}
Return
;========================================================
方案2 鼠标无侧键版 调窗体
使用方法就是:按着中键即可移动窗体,左右键一起按即可触发调整窗体,触发后可以松开左键,也可以不松开对窗口进行移动调节
mbutton::
ToolTip,
;设置鼠标坐标模式为相对屏幕
CoordMode, Mouse, Screen
MouseGetPos, mX0, mY0 , hwnd
IfWinExist, ahk_id %hwnd%
{
;获取初始窗口位置
WinGetPos, wX0, wY0
WinActivate, ahk_id %hwnd%
}
Else
Return
Loop{
;GetKeyState, state, LAlt, P
;if state = U
;{
; ToolTip
; break
;}
GetKeyState, mState, mbutton, P
if mState = U
{
ToolTip
break
}
;获取当前鼠标位置
MouseGetPos, mX, mY
SetWinDelay, -1
WinMove, ahk_id %hwnd%, , wX0+mX-mX0, wY0+mY-mY0
}
Return
;========================================================
~lbutton & rbutton::
setWinDelay,0
CoordMode,mouse,Screen
MouseGetPos,mx1,my1
WinGetPos,winx,winy,winw,winh,A
loop{
;GetKeyState,vstate,LAlt,p
GetKeyState,vstate,rbutton,p
if vstate=U
break
MouseGetPos,mx2,my2
xx=% winw + mx2 - mx1
yy=% winh + my2 - my1
winmove,A,,%winx%,%winy%,%xx%,%yy%
sleep,30
}
Return
方案3 快捷键版 调窗体
LAlt & F7::
ToolTip,
;设置鼠标坐标模式为相对屏幕
CoordMode, Mouse, Screen
MouseGetPos, mX0, mY0 , hwnd
IfWinExist, ahk_id %hwnd%
{
;获取初始窗口位置
WinGetPos, wX0, wY0
WinActivate, ahk_id %hwnd%
}
Else
Return
Loop{
GetKeyState, state, LAlt, P
if state = U
{
ToolTip
break
}
GetKeyState, mState, F7, P
if mState = U
{
ToolTip
break
}
;获取当前鼠标位置
MouseGetPos, mX, mY
SetWinDelay, -1
WinMove, ahk_id %hwnd%, , wX0+mX-mX0, wY0+mY-mY0
}
Return
;调整窗体大小
;========================================================
LAlt & F8::
SetWinDelay,0
CoordMode,mouse,Screen
MouseGetPos,mx1,my1
WinGetPos,winx,winy,winw,winh,A
loop{
GetKeyState,vstate,LAlt,p
GetKeyState,vstate,F8,p
//对照上面的方式2
if vstate=U
break
MouseGetPos,mx2,my2
xx=% winw + mx2 - mx1
yy=% winh + my2 - my1
winmove,A,,%winx%,%winy%,%xx%,%yy%
sleep,30
}
Return
快速调整窗体位置大小
#`::WinMove, A, , 700, 50,1280, 1300
#1::WinMove, A, , 10, 10,1700, 1700
#2::WinMove, A, , 100, 10,1200, 1700
#3::WinMove, A, , 1300, 0,1200, 1700
#4::WinMove, A, , 1300, 0,1280, 1700
窗体置顶
;这里设置了两个快捷键,左右两边
#Enter::
#CapsLock::
WinGet ow, id, A
WinTopToggle(ow)
return
WinTopToggle(w) {
WinGetTitle, oTitle, ahk_id %w%
Winset, AlwaysOnTop, Toggle, ahk_id %w%
WinGet, ExStyle, ExStyle, ahk_id %w%
if (ExStyle & 0x8) ; 0x8 为 WS_EX_TOPMOST.在WinGet的帮助中
oTop = 置顶
else
oTop = 取消置顶
tooltip %oTitle% %oTop%
SetTimer, RemoveToolTip, 5000
return
RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
}
窗体透明度调整
;窗口透明化增加或者减弱
#=::
WinGet, ow, id, A
WinTransplus(ow)
return
;窗口透明化增加或者减弱
#-::
WinGet, ow, id, A
WinTransMinus(ow)
return
WinTransplus(w){
WinGet, transparent, Transparent, ahk_id %w%
if transparent < 255
transparent := transparent+10
else
transparent =
if transparent
WinSet, Transparent, %transparent%, ahk_id %w%
else
WinSet, Transparent, off, ahk_id %w%
return
}
WinTransMinus(w){
WinGet, transparent, Transparent, ahk_id %w%
if transparent
transparent := transparent-10
else
transparent := 240
WinSet, Transparent, %transparent%, ahk_id %w%
return
}
获取当前鼠标位置
ToolTip, 鼠标位置:X=%wX0% Y=%wY0%