【AHK】鼠标调整窗口大小/移动窗口位置/窗口置顶/透明度

通过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)  ; 0x8WS_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%
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用AutoHotkey编写一个脚本来实现在Windows 10上使用热键来隐藏/显示桌面图标。以下是一个简单的示例脚本: #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% ; 隐藏桌面图标 ^!h:: DllCall("Shell32.dll\SHGetSetSettings", "ptr", , "ptr", x00000001, "ptr", , "uint", ) WinGetClass, ProgmanClass, Progman WinGetClass, WorkerWClass, WorkerW WinHide, ahk_class %ProgmanClass% WinHide, ahk_class %WorkerWClass% return ; 显示桌面图标 ^!s:: DllCall("Shell32.dll\SHGetSetSettings", "ptr", , "ptr", x00000002, "ptr", , "uint", ) WinGetClass, ProgmanClass, Progman WinGetClass, WorkerWClass, WorkerW WinShow, ahk_class %ProgmanClass% WinShow, ahk_class %WorkerWClass% return 在这个脚本中,我们使用了两个热键:Ctrl+Alt+H来隐藏桌面图标,Ctrl+Alt+S来显示桌面图标。当按下Ctrl+Alt+H时,脚本会调用Shell32.dll中的SHGetSetSettings函数来隐藏桌面图标,然后使用WinHide命令隐藏Progman和WorkerW窗口。当按下Ctrl+Alt+S时,脚本会调用SHGetSetSettings函数来显示桌面图标,然后使用WinShow命令显示Progman和WorkerW窗口。 请注意,这个脚本可能不适用于所有的Windows 10系统,因为不同的系统可能使用不同的窗口类名来表示桌面图标。如果你发现这个脚本不能正常工作,请尝试使用其他的窗口类名。 ### 回答2: 在Windows 10操作系统中,我们可以通过自定义热键来实现隐藏/显示桌面图标的功能。为此,我们需要先下载并安装AutoHotkey这一免费软件,然后新建一个AHK文件(后缀名为.ahk),在其中输入以下代码: #NoTrayIcon #Persistent #IfWinActive ahk_class Progman ^!d:: SendMessage 0x111, 0x7, 0, 0, , Progman Return 其中,“#NoTrayIcon”表示喊AutoHotkey将不会在系统托盘中显示图标,“#Persistent”则表示脚本将持续运行,“#IfWinActive ahk_class Progman”指定当桌面为当前活动窗口时才会生效。 然后,在代码中的“^!d::”后面,我们可以自定义所需的热键,这里的“^”表示Ctrl键,“!”表示Alt键,“d”表示D键,即组合键Ctrl+Alt+D。我们可以根据实际需求修改热键。发送消息“SendMessage 0x111, 0x7, 0, 0, , Progman”则实现了隐藏/显示桌面图标的功能。 当我们保存并运行该脚本后,在Windows 10操作系统中使用Ctrl+Alt+D组合键,即可实现隐藏/显示桌面图标的功能。需要注意的是,该脚本的效果不会立即生效,我们需要重新启动Windows Explorer程序或注销/重新登录才能看到效果。 总的来说,通过AutoHotkey软件自定义热键可以方便快捷地实现Windows 10系统中的各种功能,包括隐藏/显示桌面图标。但是需要注意的是,在操作时请确保准确按下组合键,以避免出现意外情况。 ### 回答3: 在Windows 10操作系统中,隐藏和显示桌面图标的方法有很多种,其中使用热键是一种方便快捷的方式。 首先,我们需要使用AutoHotkey(AHK)软件来定义一个热键。AutoHotkey是一款小巧而强大的脚本语言软件,它可以让我们自定义各种热键和脚本,实现更为高效的电脑操作。如果没有安装AutoHotkey,我们需要先下载和安装此软件。 接着,我们打开AutoHotkey软件,右键点击桌面,选择“新建AutoHotkey脚本”,在打开的编辑器中书写以下代码: ^!h:: WinGet, exStyle, Style, ahk_class Progman If (exStyle & 0x100) { WinSet, Style, -0x100, ahk_class Progman WinGet, ExStyle, Style, ahk_class WorkerW WinSet, Style, -0x20, ahk_class WorkerW } Else { WinSet, Style, +0x100, ahk_class Progman WinGet, ExStyle, Style, ahk_class WorkerW WinSet, Style, +0x20, ahk_class WorkerW } 上述代码的含义是:按下Ctrl+Alt+H的热键,可以隐藏或显示桌面图标。当桌面图标处于显示状态时,按下此热键会隐藏桌面图标;反之,当桌面图标处于隐藏状态时,按下此热键会显示桌面图标。 最后,我们保存脚本,并双击打开它。接着,我们就可以使用Ctrl+Alt+H的热键快捷地隐藏或显示桌面图标了。当然,如果需要修改热键,可以在脚本中将“^!h”更改为其他热键。 总之,使用热键可以让我们更方便快捷地隐藏和显示桌面图标,极大地提高了我们的工作效率和操作体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值