窗口透明度变化影响活动窗口

时间:2015-02-09 16:43:52

标签: autohotkey

我有一个用AutoHotKey隐藏窗口的代码:

NumpadEnter::
Trans:=255
Loop
{   
    WinSet, Transparent, %Trans%, A
    Sleep, 20
    Trans-=1
    if(Trans <= 0)
        Break
}
return

像魅力一样工作,但你可以看到这个功能的执行时间大约是4-5秒。在这4-5秒内我无法在其他窗口之间切换,因为其他窗口会受到WinSet功能的影响。

我需要在循环之前将窗口句柄保存到变量。并使用WinSet函数在线上使用它。

我该怎么做?

2 个答案:

答案 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