iori2882 发表于 2012-4-18 22:21:36

一个界面,在3.7几有问题,在3.3.6.1就没有,麻烦大家帮忙测试下

本帖最后由 iori2882 于 2012-4-18 22:42 编辑

下面的代码,,在3.7几的版本有个问题,点$Button2可以刷新界面,在点回$Button1也可以刷新界面,但是 点到$Button3在点回Button2就切换不回去了点击界面的叉退出也退出不了。但是在3.3.6.1就完全好用,,,麻烦大家用3.7几版本的,帮忙测试一下,看是我机器问题还是版本问题。
    而且我大量的用到了GUISetState(@SW_SHOW, $zhu_gui)之类的语句,导致在页面切换到时候有的时候会卡,有别的办法么?

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#region ### START Koda GUI section ### Form=
Global $zhu_gui = GUICreate("界面预览", 600, 400, -1, -1)
GUISetBkColor(0x4682B4)
$Button1 = GUICtrlCreateButton("Button1", 24, 24, 83, 57)
$Button2 = GUICtrlCreateButton("Button2", 232, 32, 75, 49)
$Button3 = GUICtrlCreateButton("Button3", 432, 32, 75, 49)
$ne_gui1 = GUICreate("", 600 - 20, 260, 10, 110, $WS_POPUP, $WS_EX_MDICHILD, $zhu_gui)
$Button4 = GUICtrlCreateButton("Button4", 64, 168, 75, 25)
$Input1 = GUICtrlCreateInput("Input1", 176, 192, 145, 21)
$Edit1 = GUICtrlCreateEdit("", 400, 208, 121, 105)
GUICtrlSetData(-1, "Edit1")
$MonthCal1 = GUICtrlCreateMonthCal("2012/04/16", 184, 120, 267, 153)
$ne_gui2 = GUICreate("", 600 - 20, 260, 10, 110, $WS_POPUP, $WS_EX_MDICHILD, $zhu_gui)
$Button5 = GUICtrlCreateButton("Button5", 64, 168, 75, 25)
$List1 = GUICtrlCreateList("", 224, 208, 121, 97)
$Combo1 = GUICtrlCreateCombo("Combo1", 416, 168, 145, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
$Progress1 = GUICtrlCreateProgress(424, 288, 150, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Local $oIE = _IECreateEmbedded()
$ne_gui3=GUICreate("", 580, 260, 10, 110,$WS_POPUP,$WS_EX_MDICHILD,$zhu_gui)
GUICtrlCreateObj($oIE, 1, 1, 580, 260)
Local $GUI_Button_Back = GUICtrlCreateButton("Back", 10, 420, 100, 30)
Local $GUI_Button_Forward = GUICtrlCreateButton("Forward", 120, 420, 100, 30)
Local $GUI_Button_Home = GUICtrlCreateButton("Home", 230, 420, 100, 30)
Local $GUI_Button_Stop = GUICtrlCreateButton("Stop", 340, 420, 100, 30)
GUICtrlSetColor(-1, 0x0860a8)
GUISetState(@SW_SHOW, $zhu_gui)
GUISetState(@SW_SHOW, $ne_gui1)
#endregion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        ExitLoop
                Case $Button1
                           GUISetState(@SW_SHOW, $zhu_gui)
                           GUISetState(@SW_SHOW, $ne_gui1)
                           GUISetState(@SW_HIDE, $ne_gui2)
                  GUISetState(@SW_HIDE, $ne_gui3)
                Case $Button2
                        GUIDelete($Button3 )

                        GUISetState(@SW_SHOW, $zhu_gui)
                        GUISetState(@SW_HIDE, $ne_gui1)
                        GUISetState(@SW_SHOW, $ne_gui2)
             GUISetState(@SW_HIDE, $ne_gui3)
               Case $Button3
                       GUISetState(@SW_HIDE, $ne_gui1)
                           GUISetState(@SW_HIDE, $ne_gui2)
                           GUISetState(@SW_SHOW, $zhu_gui)
               
                           GUISetState(@SW_SHOW, $ne_gui3)

                       _IENavigate($oIE, "http://www.163.com")
                       
                Case $Button4
                        MsgBox(0, 0, 4)
                Case $Button5
                        MsgBox(0, 0, 5)
        EndSwitch
WEnd
GUIDelete()

user3000 发表于 2012-4-18 23:04:23

回复 1# iori2882
你代码里相应位置改为以下的:
_IENavigate($oIE, "http://www.163.com", 0)

这已经是'常识', 论坛上已有不少这方面的提问和交流的帖子!
在一些AU3版本中, 用IE..au3打开链接时, 如果是默认要等待的话, 经常要等很久!
我尝试过等十几分钟后能返回.
所以, 如果是我, 绝对会用 0 让它立即返回!
如果还要继续进行网页操作, 则下一步要加上相应的 Sleep 延迟!

lixiaolong 发表于 2012-4-18 23:07:17

回复 1# iori2882

应该跟版本没关系,因为IENavigate没加载完毕,所以不能切换.
点击$Button3后多等一会儿试试,或者让_IENavigate立即返回试试.

_IENavigate ( ByRef $o_object, $s_url [, $f_wait = 1] )

[可选参数]: 指定在返回前是否等待窗口加载完毕
0 = 立即返回,不等待窗口加载
1 = (默认)等待窗口加载完毕后返回

502762378 发表于 2012-4-18 23:17:48

哎,我最怕的是写不出代码,而不是排查问题,你的系统没换,只是AU3换了个版本,怎么也不是GUISetState得问题吧,你换版本但是 点到$Button3在点回Button2就切换不回去了,你是要检查$Button3的事件吧,明显是_IENavigate($oIE, "http://www.163.com")捣的鬼,随便翻翻_IENavigate的帮助文档,有试过这样吗你:
_IENavigate ($oIE, "http://www.autoitscript.com",0)
一直没换版本么法帮你测

502762378 发表于 2012-4-18 23:19:54

湿了,知道已有人解决偶就不掺和了。

风行者 发表于 2012-4-19 00:47:54

在3.7.x 版本出现时已发现这问题,直到3.9已经修正了

lixiaolong 发表于 2012-4-19 12:24:04

回复 6# 风行者

我用3.3.7.21测试的,没发现有这个问题啊??

下面两个代码都没问题的...
_IENavigate($oIE, "http://www.163.com")
_IENavigate($oIE, "http://www.163.com", 0)

menfan1 发表于 2012-4-19 12:44:13

3.3.9.4正常。

iori2882 发表于 2012-4-20 13:56:36

恩 谢谢大家了 昨天有事没上.....
_IENavigate($oIE, "http://www.163.com", 0)
后面加上0确实是能行了
但是在3.3.6.1里面 不加0也是好用的....3.7里面 那网页确实加载完毕了 也不行
好像不是返回没返回完的事情,,,应该是个小BUG吧.....

iori2882 发表于 2012-4-20 14:00:50

回复风行者

我用3.3.7.21测试的,没发现有这个问题啊??

下面两个代码都没问题的...
_IENavigat ...
lixiaolong 发表于 2012-4-19 12:24 http://www.autoitx.com/images/common/back.gif

我的版本是3.3.7.15

ooxxgod 发表于 2012-5-12 15:57:20

可以正常切 3.3.9.4

xms77 发表于 2012-5-12 20:54:45

回复 1# iori2882
我的也是3.3.7.15,不能返回,但是加了0后就能立即返回了。
页: [1]
查看完整版本: 一个界面,在3.7几有问题,在3.3.6.1就没有,麻烦大家帮忙测试下