我有一个用AutoHotKey隐藏窗口的代码:
NumpadEnter::
Trans:=255
Loop
{
WinSet, Transparent, %Trans%, A
Sleep, 20
Trans-=1
if(Trans <= 0)
Break
}
return
像魅力一样工作,但你可以看到这个功能的执行时间大约是4-5秒。在这4-5秒内我无法在其他窗口之间切换,因为其他窗口会受到WinSet功能的影响。
我需要在循环之前将窗口句柄保存到变量。并使用WinSet函数在线上使用它。
我该怎么做?
答案 0 :(得分:1)
一种方法是使用winexist()函数和A选项作为wintittle参数,它将为您提供活动窗口的ID,以便您可以使用它。
像这样的东西
NumpadEnter::
hWnd := WinExist("A")
Trans:=255
Loop
{
WinSet, Transparent, %Trans%, Ahk_id %hWnd%
Sleep, 20
Trans-=1
if(Trans <= 0)
Break
}
return
希望有所帮助
答案 1 :(得分:1)
修改强>
完整文档: http://www.autohotkey.com/board/topic/80577-how-to-animate-a-gui-window/
编辑2:
你提到它不适合你。这是使用Ahk_L(又名Autohotkey_L或Autohotkey_Lexiko)的Windows 8计算机上的工作示例:
DetectHiddenWindows, On ;//Allow hidden windows to be detectable
SetWinDelay, -1 ;//Make Window update very fast (smooth animation)
FADE := 524288
SHOW := 131072
HIDE := 65536
FADE_SHOW := FADE+SHOW
FADE_HIDE := FADE+HIDE
SetFormat, Integer, Hex
FADE_SHOW+=0 ;//Converts to 0xa0000
FADE_HIDE+=0 ;//Converts to 0x90000
SetFormat, Integer, d
Gui, Font, w500 s35 Center, Verdana
Gui, Add, Text, , Hello! This Window will hide in 5 Seconds.
Gui, Show, NA Hide, Test Window ; //Create the Window hidden
Gui, +LastFound
GUI_ID := WinExist() ;//Get Window ID
Duration := 3000 ;//Speed of Window showing/hiding
DllCall("AnimateWindow","UInt",GUI_ID,"Int",Duration,"UInt", FADE_SHOW) ;//Fade in Window
Sleep, 5000 ;//Pause for 5 seconds
DllCall("AnimateWindow","UInt",GUI_ID,"Int",Duration,"UInt", FADE_HIDE) ;//Fade out Window
Return