V2设置快捷键怎样才能不作用于桌面和任务栏 Topic is solved

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

Machine
Posts: 2
Joined: 04 Jan 2024, 20:26

V2设置快捷键怎样才能不作用于桌面和任务栏

Post by Machine » 04 Jan 2024, 20:44

照着网上参考写了个窗口最大化和最小化的快捷键,代码如下

Code: Select all

;alt+Esc键最小化当前窗口
!Escape:: WinMinimize("A")
!`:: ;alt+`键最大化或还原当前窗口
{
    CoordMode("Mouse")			;获取鼠标所在位置	
	MouseGetPos(, , &window)	;将鼠标当前所在窗口的类型赋给 "window" 参数
	WinActivate(window)			;激活该窗口类型
	if WinGetMinMax(window) 	;如果当前活动窗口为最大化状态
		WinRestore(window) 		;则恢复当前窗口
	else
		WinMaximize(window) 	;否则最大化当前窗口
}
对窗口运行起来到是一点问题没有,就是使用时发现当鼠标指针位于任务栏时,会将任务栏也缩小,因为有使用桌面软件,鼠标指针在桌面时实际是指向这个软件的进程,所以桌面也受影响,像图示这样
Image
也做过尝试来屏蔽掉桌面和任务栏,用WinHotIfNotActive不起作用,甚至这个桌面软件的进程用WInExist来检测都检测不到,返回值为0,明明用Windows spy能检测到的,因为是初学者,瞎折腾了一圈也没解决,请教下大手子要如何才能使这个快捷键屏蔽掉桌面和任务栏

User avatar
andymbody
Posts: 904
Joined: 02 Jul 2017, 23:47

Re: V2设置快捷键怎样才能不作用于桌面和任务栏  Topic is solved

Post by andymbody » 04 Jan 2024, 23:04

尝试这个。

我不知道您是否想在将鼠标悬停在桌面/任务栏上时避免使用热键,或者是否想在窗口处于活动状态时避免使用热键。所以我把这两个都列出来供大家选择。

您可能还需要将类名称更改为您的语言。

Code: Select all

#Requires autohotkey v2.0
#SingleInstance force
SetTitleMatchMode 2
CoordMode("Mouse", "screen")

!Escape::
{
	MouseGetPos(,, &window)
	cls := WinGetClass("ahk_id" window)
	if (cls="WorkerW" || cls="Shell_TrayWnd" || cls="Progman")
		return
	
	if (WinActive("ahk_class WorkerW") || WinActive("ahk_class Shell_TrayWnd") || WinActive("ahk_class Progman"))
		return

	WinMinimize("A")
}

!`::
{
	MouseGetPos(,, &window)
	cls := WinGetClass("ahk_id" window)
	if (cls="WorkerW" || cls="Shell_TrayWnd" || cls="Progman")
		return
	
	if (WinActive("ahk_class WorkerW") || WinActive("ahk_class Shell_TrayWnd") || WinActive("ahk_class Progman"))
		return

	WinActivate(window)
	if WinGetMinMax(window)
		WinRestore(window)
	else
		WinMaximize(window)
}

Machine
Posts: 2
Joined: 04 Jan 2024, 20:26

Re: V2设置快捷键怎样才能不作用于桌面和任务栏

Post by Machine » 08 Jan 2024, 21:28

@andymbody
您的回复和帮助特别管用,非常感谢

Post Reply

Return to “请求帮助”