itljl 发表于 2010-7-27 12:31:06

这个托盘菜单为什么会卡住?

奇怪的是,当嵌入了IE后,托盘图标,经常性点击会卡住,菜单出来是空白,甚至GUI也卡住了,是什么原因呢?#Region ;**** 参数创建于 ACNWrapper_GUI ****
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>;托盘菜单
;~ Opt("GUIOnEventMode", 1)

Global $Title = "Form1"

;---------------------------------------------------
;托盘菜单
Opt("TrayMenuMode", 2 + 1) ;没有默认的(暂停脚本和退出)菜单.
Opt("trayOnEventMode", 1) ;应用 OnEvent 函数于系统托盘.

$TrayMenu1 = TrayCreateItem("显示界面") ;创建第一个菜单项
TrayItemSetOnEvent(-1, "TrayMsg") ;注册第一个菜单项的(被点下)事件
$TrayMenu2 = TrayCreateItem("隐藏界面") ;创建第二个菜单项
TrayItemSetOnEvent(-1, "TrayMsg") ;注册第二个菜单项的(被点下)事件
TrayCreateItem("") ;

$TrayMenu4 = TrayCreateItem("关于(&A)") ;创建第三个菜单项
TrayItemSetOnEvent(-1, "TrayMsg") ;注册第二个菜单项的(被点下)事件
$TrayMenu3 = TrayCreateItem("退出(&Q)") ;创建第三个菜单项
TrayItemSetOnEvent(-1, "TrayMsg") ;注册第二个菜单项的(被点下)事件

TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "TrayMsg") ;注册鼠标左键双击事件(只能在 TrayOnEventMode 设置为 1 时才能使用)
;~ TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "TrayMsg") ;注册鼠标右键双击事件(只能在 TrayOnEventMode 设置为 1 时才能使用)
TraySetState()

;---------------------------------------------------
;加载WEB
$url = "http://www.google.cn/music/top100/player_page?id=S015c8052fec27fc9&type=song&autoplay=true"
$Form1 = GUICreate("test", 445, 205, Default, Default, Default, Default)
$1 = ObjCreate("Shell.Explorer.2")
$2 = GUICtrlCreateObj($1, -155, -120, 780, 1024)
$1.navigate($url)
GUISetState(@SW_SHOW)

;---------------------------------------------------
;主循环
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        If MsgBox(32 + 1, "提示", "确定要退出?") = 1 Then
                                Exit
                        EndIf
                Case $GUI_EVENT_MINIMIZE ;关闭,最小化
                        GUISetState(@SW_HIDE, $Form1)
        EndSwitch
WEnd

;---------------------------------------------------
;托盘函数
Func TrayMsg()
        Switch @TRAY_ID ;选择产生消息的 TrayItem 或其它特殊事件(如鼠标左键双击事件)
                Case $TRAY_EVENT_PRIMARYDOUBLE
                        If WinGetState($Form1) <> 2 Then ;2,可见
                                GUISetState(@SW_SHOW, $Form1) ;显示窗口
                                GUISetState(@SW_RESTORE, $Form1);还原窗口
                        Else
                                GUISetState(@SW_HIDE, $Form1) ;显示窗口
                        EndIf
                        WinActivate($Form1);激活窗口
                Case $TrayMenu2
                        GUISetState(@SW_HIDE, $Form1)
                Case $TrayMenu3
                        If MsgBox(32 + 1, "22", "22?") = 1 Then
                                Exit
                        EndIf
                Case $TrayMenu4
                        MsgBox(64 + 1, "11", "11")
        EndSwitch
EndFunc   ;==>TrayMsg

Ziya 发表于 2010-7-27 12:40:40

因为IE失去响应了?

itljl 发表于 2010-7-27 13:04:04

回复 2# Ziya


谢谢回复。
但实际上IE是很正常的。只要一点托盘图标就卡住了。不点就完全正常。

3mile 发表于 2010-7-27 13:40:03

winxp sp3下测试无楼主所描述的情况。

itljl 发表于 2010-7-27 17:07:51

winxp sp3下测试无楼主所描述的情况。
3mile 发表于 2010-7-27 13:40 http://www.autoitx.com/images/common/back.gif


    兄弟你多点两下托盘图标。。

3mile 发表于 2010-7-27 19:03:17

回复 5# itljl
vista sp2下测试无问题。
点了无数次,代码无问题

nmgwddj 发表于 2010-7-28 01:18:15

看来是人品问题了{:face (411):}

seniors 发表于 2010-7-28 06:55:25

xp sp3没出现楼主的情况

ceoguang 发表于 2010-7-28 05:04:31

还真没问题.

itljl 发表于 2010-8-10 18:41:19

SP2有这种情况。。
页: [1]
查看完整版本: 这个托盘菜单为什么会卡住?