3.3.1.6 WinActivate有时可以让隐藏的窗口显示出来
#csWinActivate 激活指定的窗口,使其成为活动窗口,即使在窗口最小化的情况下仍能正常工作
补:某些情况下也可以使 隐藏且最小化 的窗体显示出来
但这种情况下显示出来的窗体不能响应窗体上控件的 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]