fongshun 发表于 2009-12-4 13:47:30

3.3.1.6 WinActivate有时可以让隐藏的窗口显示出来

#cs
WinActivate 激活指定的窗口,使其成为活动窗口,即使在窗口最小化的情况下仍能正常工作
补:某些情况下也可以使 隐藏且最小化 的窗体显示出来
    但这种情况下显示出来的窗体不能响应窗体上控件的 OnEvent 事件(可以放个button试下)
运行环境:
    Win Server 2003 sp2 ee
   autoIt 3.3.1.6 --论坛的汉化版
#ce

;附上2个例子:#include <WindowsConstants.au3>
$Form1 = GUICreate("ffformmm", 241, 233, -1, -1)
GUICtrlSetCursor(-1, 0)
GUISetState()
;运行到这里前把窗口最小化可以让 WinActivate 有@sw_show的功能
Sleep(3210)
GUISetState(@SW_HIDE)
WinActivate("ffformmm")
MsgBox(0,"","现在窗口有无出现?","",$Form1);第二个例子---证明显示出来的窗体不能响应窗体上控件的 OnEvent 事件(可以自己放个button试下)
#NoTrayIcon
Opt("guiOnEventMode", 1)
Opt("trayMenuMode", 1)
Opt("trayOnEventMode", 1)
#include <ButtonConstants.au3>
#include<Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("关于Winactivate", 241, 233)
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "TrayMsg")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Something")
GUISetOnEvent($GUI_EVENT_CLOSE, "Something")
GUISetState()
TraySetState()
TraySetToolTip("isItBug?")

While 1
   Sleep(99999)
WEnd

Func Something()
        Select
                Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
                        GUISetState(@SW_HIDE)
                Case @GUI_CtrlId = $GUI_EVENT_CLOSE
                        Exit
        EndSelect
EndFunc   ;==>Something

Func TrayMsg()
        Switch @TRAY_ID
                Case $TRAY_EVENT_PRIMARYDOWN
                        If not WinExists("关于Winactivate") Then
                                MsgBox(0,"","没有“关于Winactivate”窗口","",$Form1)
                        Else
                                MsgBox(0,"","存在“关于Winactivate”窗口","",$Form1)
                                ;上行代码改成“ MsgBox(0,"","存在“关于Winactivate”窗口") ”就可以让 Form1 显示了
                                WinActivate("关于Winactivate")
                        EndIf
        EndSwitch
EndFunc   ;==>TrayMsg
页: [1]
查看完整版本: 3.3.1.6 WinActivate有时可以让隐藏的窗口显示出来