Window 透明度变化影响活动 windows
Window transparency changing affecting active windows
我有一个用 AutoHotKey 隐藏 window 的代码:
NumpadEnter::
Trans:=255
Loop
{
WinSet, Transparent, %Trans%, A
Sleep, 20
Trans-=1
if(Trans <= 0)
Break
}
return
效果很好,但是你可以看到这个函数的执行时间大约是 4-5 秒。我不能在这4-5秒内在其他windows之间切换,因为其他windows会受到WinSet功能的影响。
我需要在循环之前将 window 句柄保存到变量。并配合WinSet功能使用就行了
我该怎么做?
一种方法是使用带有 A 选项的 winexist() 函数作为 wintittle 参数,这将为您提供活动 window 的 ID,以便您可以使用它。
像这样
NumpadEnter::
hWnd := WinExist("A")
Trans:=255
Loop
{
WinSet, Transparent, %Trans%, Ahk_id %hWnd%
Sleep, 20
Trans-=1
if(Trans <= 0)
Break
}
return
希望对您有所帮助
编辑:
完整文档: http://www.autohotkey.com/board/topic/80577-how-to-animate-a-gui-window/
编辑 2:
你提到它对你不起作用。这是 工作示例 在 Windows 8 机器上使用 Ahk_L (又名。 Autohotkey_L 或 Autohotkey_Lexiko):
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
我有一个用 AutoHotKey 隐藏 window 的代码:
NumpadEnter::
Trans:=255
Loop
{
WinSet, Transparent, %Trans%, A
Sleep, 20
Trans-=1
if(Trans <= 0)
Break
}
return
效果很好,但是你可以看到这个函数的执行时间大约是 4-5 秒。我不能在这4-5秒内在其他windows之间切换,因为其他windows会受到WinSet功能的影响。
我需要在循环之前将 window 句柄保存到变量。并配合WinSet功能使用就行了
我该怎么做?
一种方法是使用带有 A 选项的 winexist() 函数作为 wintittle 参数,这将为您提供活动 window 的 ID,以便您可以使用它。
像这样
NumpadEnter::
hWnd := WinExist("A")
Trans:=255
Loop
{
WinSet, Transparent, %Trans%, Ahk_id %hWnd%
Sleep, 20
Trans-=1
if(Trans <= 0)
Break
}
return
希望对您有所帮助
编辑:
完整文档: http://www.autohotkey.com/board/topic/80577-how-to-animate-a-gui-window/
编辑 2:
你提到它对你不起作用。这是 工作示例 在 Windows 8 机器上使用 Ahk_L (又名。 Autohotkey_L 或 Autohotkey_Lexiko):
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