我正在为我的工作区使用基于Gui的工具,以提供简单的文本粘贴和WinMinimize / WinRestore功能。我面临的问题是最小/还原切换功能。
我正在使用的当前代码如下:
; Functions
; }-----------------------------------------------------------------------{
GuiToggle()
{
Sleep, 50
if WinActive("ServiceDeskAssist")
{
Gui, -AlwaysOnTop
WinMinimize, ServiceDeskAssist
WinWaitNotActive, ServiceDeskAssist
}
else
{
WinRestore, ServiceDeskAssist
WinActivate, ServiceDeskAssist
WinWaitActive, ServiceDeskAssist
Gui, +AlwaysOnTop
}
Sleep, 50
}
; Hotkeys
; }-----------------------------------------------------------------------{
^z::GuiToggle()
这个想法是根据Gui的当前状态来使切换最小化/恢复,但是如果Gui存在但仍然可见(即+ AlwaysOnTop),则它不是“活动的”,因此它将被还原而不是最小化。 有什么办法可以纠正此功能?
答案 0 :(得分:0)
除非ServiceDeskAssist
是超全局变量,否则if WinActive(ServiceDeskAssist)
是错误的。
WinMinimize, ServiceDeskAssist
使用ServiceDeskAssist
作为文字而不是字符串(我认为您打算对IF语句执行此操作)
WinRestore
不会自动激活
; Functions
; }-----------------------------------------------------------------------{
GuiToggle()
{
Sleep, 50
if WinActive("ServiceDeskAssist")
{
Gui, -AlwaysOnTop
WinMinimize, ServiceDeskAssist
WinWaitNotActive, ServiceDeskAssist
}
else
{
WinRestore, ServiceDeskAssist
WinActivate, ServiceDeskAssist
WinWaitActive, ServiceDeskAssist
Gui, +AlwaysOnTop
}
Sleep, 50
}
; Hotkeys
; }-----------------------------------------------------------------------{
^z::GuiToggle()
此外,为什么不将窗口标题传递给函数呢?这样,它就可以重复使用
; Functions
; }-----------------------------------------------------------------------{
GuiToggle(winTitle)
{
Sleep, 50
if WinActive(winTitle)
{
Gui, -AlwaysOnTop
WinMinimize, % winTitle
WinWaitNotActive, % winTitle
}
else
{
WinRestore, % winTitle
WinActivate, % winTitle
WinWaitActive, % winTitle
Gui, +AlwaysOnTop
}
Sleep, 50
}
; Hotkeys
; }-----------------------------------------------------------------------{
^z::GuiToggle("ahk_class Notepad")
答案 1 :(得分:0)
好的,所以看来WinGet-MinMax是前进的道路。 以下代码正常运行:
funr::get_script_path()