找回密码
 加入
搜索
查看: 1342|回复: 8

鼠标经过自动启用按钮控件的BUG??

[复制链接]
发表于 2009-4-7 14:07:43 | 显示全部楼层 |阅读模式
我参考论坛的资料,结合本单位实际情况写了一个IP管理的软件,可以将本程序运行过的电脑的IP等相关资料采集到本程序的配置文件IP0中,并从IP0中调出当前运行电脑的资料将运行副本安装到当前计算机中,功能是只允许使用者在配置好的两种IP地址中选用,而不能擅自改为其它IP地址。
完成后我发现一个奇怪的BUG,就是在没有输入管理员密码的情况下被禁用的两个按钮Button19(读取外网IP)和Button20(读取内网IP),只要鼠标一经过,即自动恢复为可用状态了。其它按钮又是正常被禁用的,我检查多次,应该我的代码没有问题。请高手参详参详,是否是一个BUG?
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiIPAddress.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <process.au3>

Dim $yzmm, $yanzhengmm, $srxmm, $qrxmm, $dqmm, $dqjxjmc, $dqmac, $jsjms, $dqjsjms, $IPAddress, $12345, $ip0, $pzjs, $pzm, $jcwj
Dim $xrip, $xrym, $xrwg, $xrdns1, $xrdns2
Dim $jcwjj
$yzmm = "ipymwgdns"

#Region ### START Koda GUI section ### Form=d:\我的文档\form1.kxf
$Form1_1 = GUICreate("IP地址管理器", 295, 295, -1, -1)
$Button3 = GUICtrlCreateButton("访问外网", 8, 45, 75, 25, 0)
$Button55 = GUICtrlCreateButton("访问内网", 8, 70, 75, 25, 0)
$Button19 = GUICtrlCreateButton("读取外网IP", 8, 95, 75, 25, 0)
$Button20 = GUICtrlCreateButton("读取内网IP", 8, 120, 75, 25, 0)
$Button7 = GUICtrlCreateButton("重置外网IP", 8, 145, 75, 25, 0)
$Button8 = GUICtrlCreateButton("重置内网IP", 8, 170, 75, 25, 0)
$Button9 = GUICtrlCreateButton("输入密码", 8, 195, 75, 25, 0)
$Button10 = GUICtrlCreateButton("安装副本", 8, 220, 75, 25, 0)
$Button11 = GUICtrlCreateButton("退    出", 8, 245, 75, 25, 0)
$Label1 = GUICtrlCreateLabel("成都市★★★★★★★★★★局", 115, 278, 160, 17)
GUICtrlSetFont(-1, 9, 400, 4, "宋体")
GUICtrlSetColor(-1, 0xa355dd)
$jsjmc = GUICtrlCreateLabel("计算机名称:", 10, 5, 160, 20)
$IPAddress1 = _GUICtrlIpAddress_Create($Form1_1, 152, 39, 130, 21)
_GUICtrlIpAddress_Set($IPAddress1, "0.0.0.0")
$IPAddress2 = _GUICtrlIpAddress_Create($Form1_1, 152, 63, 130, 21)
_GUICtrlIpAddress_Set($IPAddress2, "0.0.0.0")
$IPAddress3 = _GUICtrlIpAddress_Create($Form1_1, 152, 87, 130, 21)
_GUICtrlIpAddress_Set($IPAddress3, "0.0.0.0")
$IPAddress4 = _GUICtrlIpAddress_Create($Form1_1, 152, 111, 130, 21)
_GUICtrlIpAddress_Set($IPAddress4, "0.0.0.0")
$IPAddress5 = _GUICtrlIpAddress_Create($Form1_1, 152, 135, 130, 21)
_GUICtrlIpAddress_Set($IPAddress5, "0.0.0.0")
$Label3 = GUICtrlCreateLabel("I P 地址", 96, 45, 52, 17)
$Label4 = GUICtrlCreateLabel("子网掩码", 96, 70, 52, 17)
$Label5 = GUICtrlCreateLabel("默认网关", 96, 94, 52, 17)
$Label6 = GUICtrlCreateLabel("常用 DNS", 96, 118, 51, 17)
$Label7 = GUICtrlCreateLabel("备用 DNS", 96, 141, 51, 17)
$Button4 = GUICtrlCreateButton("读取外网IP", 8, 95, 75, 25, 0)
$Button5 = GUICtrlCreateButton("读取内网IP", 8, 120, 75, 25, 0)
GUICtrlCreateInput("", 88, 177, 194, 17, 0x0020, 0x00000220)
GUICtrlCreateLabel("MAC 地址", 96, 162, 51, 17)
GUICtrlCreateLabel("计算机描述:", 10, 23, 80, 17)
GUICtrlCreateInput($dqjsjms, 88, 19, 194, 17)
$Button25 = GUICtrlCreateButton("备用1", 88, 195, 62, 25, 0)
$Button26 = GUICtrlCreateButton("备用2", 154, 195, 62, 25, 0)
$Button27 = GUICtrlCreateButton("备用3", 220, 195, 62, 25, 0)
$Button28 = GUICtrlCreateButton("备用4", 88, 220, 62, 25, 0)
$Button29 = GUICtrlCreateButton("备用5", 154, 220, 62, 25, 0)
$Button30 = GUICtrlCreateButton("备用6", 220, 220, 62, 25, 0)
$Button31 = GUICtrlCreateButton("备用7", 88, 245, 62, 25, 0)
$Button32 = GUICtrlCreateButton("备用8", 154, 245, 62, 25, 0)
$Button33 = GUICtrlCreateButton("备用9", 220, 245, 62, 25, 0)
GUISetState(@SW_SHOW)
Call("jy")
FileCopy("c:\windows\ip.ini", "c:\program files\ahphs\", 1)
FileSetAttrib("c:\program files\ahphs\ip.ini", "+RH")
$dqjsjmc = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName", "ComputerName")
Call("dqip")
GUICtrlCreateLabel($dqjsjmc, 88, 1, 160, 16)
GUICtrlSetFont(-1, 14, 400, 0, "华文中宋")
GUICtrlSetColor(-1, 0x0000ff)
GUICtrlCreateLabel($dqmac, 165, 161, 130, 17)
GUICtrlSetColor(-1, 0xff0000)
Call("yxini")
#EndRegion ### END Koda GUI section ###

Func yxini();甄别本机是否已在配置文件中注册,若否则预配置本机。
        $n = 01
        $ip0 = IniReadSectionNames("ip0.ini")
        For $i = 1 To $ip0[0]
                If $ip0[$i] = $dqmac Then
                        $n = 100
                Else
                        $n = 1
                EndIf
        Next
        If $n = 1 Then
                MsgBox(0, "", "发现新网卡,MAC地址为:" & $dqmac & ",已自动注册,请预置IP地址。")
                For $n = 01 To 15
                        IniWrite("ip0.ini", $dqmac, $n, "")
                Next
                IniWrite("ip0.ini", $dqmac, 1, "★★★★★★★★★★★★")
                IniWrite("ip0.ini", $dqmac, 2, $dqjsjmc)
                IniWrite("ip0.ini", $dqmac, 4, $dqmac)
        Else
                MsgBox(0, "", "您的网卡已注册!", 1)
        EndIf

EndFunc   ;==>yxini



Func jy();禁用控件
        GUICtrlSetState(7, $GUI_DISABLE)
        GUICtrlSetState(8, $GUI_DISABLE)
        GUICtrlSetState(10, $GUI_DISABLE)
        GUICtrlSetState(19, $GUI_DISABLE)
        GUICtrlSetState(20, $GUI_DISABLE)
        GUICtrlSetState(21, $GUI_DISABLE)
        GUICtrlSetState(25, $GUI_DISABLE)
        GUICtrlSetState(26, $GUI_DISABLE)
        GUICtrlSetState(27, $GUI_DISABLE)
        GUICtrlSetState(28, $GUI_DISABLE)
        GUICtrlSetState(29, $GUI_DISABLE)
        GUICtrlSetState(30, $GUI_DISABLE)
        GUICtrlSetState(31, $GUI_DISABLE)
        GUICtrlSetState(32, $GUI_DISABLE)
        GUICtrlSetState(33, $GUI_DISABLE)
EndFunc   ;==>jy
Func qy();启用控件
        GUICtrlSetState(7, $GUI_ENABLE)
        GUICtrlSetState(8, $GUI_ENABLE)
        GUICtrlSetState(10, $GUI_ENABLE)
        GUICtrlSetState(19, $GUI_ENABLE)
        GUICtrlSetState(20, $GUI_ENABLE)
        ;GUICtrlSetState(25, $GUI_ENABLE)
        ;GUICtrlSetState(26, $GUI_ENABLE)
        ;GUICtrlSetState(27, $GUI_ENABLE)
        ;GUICtrlSetState(28, $GUI_ENABLE)
        ;GUICtrlSetState(29, $GUI_ENABLE)
        ;GUICtrlSetState(30, $GUI_ENABLE)
        ;GUICtrlSetState(31, $GUI_ENABLE)
        ;GUICtrlSetState(32, $GUI_ENABLE)
        ;GUICtrlSetState(33, $GUI_ENABLE)
EndFunc   ;==>qy

Func unclock()
        _RunDOS("regsvr32/s netcfgx.dll")
        _RunDOS("regsvr32/s netshell.dll")
        _RunDOS("regsvr32/s netman.dll")
EndFunc   ;==>unclock
Func clock()
        _RunDOS("regsvr32/u /s netcfgx.dll")
        _RunDOS("regsvr32/u /s netshell.dll")
        _RunDOS("regsvr32/u /s netman.dll")
        Call("jy")
EndFunc   ;==>clock
Func dqip();读取IP
        $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
        $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE", "WQL", 0x10 + 0x20)
        $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
        For $objItem In $colItems
                $LocalIP = $objItem.IPAddress(0);IP
                _GUICtrlIpAddress_Set($IPAddress1, $LocalIP)
                $LocalSubnetmask = $objItem.IPSubnet(0);掩码
                _GUICtrlIpAddress_Set($IPAddress2, $LocalSubnetmask)
                $LocalGateway = $objItem.DefaultIPGateway(0);网关
                _GUICtrlIpAddress_Set($IPAddress3, $LocalGateway)
                $LocalDns1 = $objItem.DNSServerSearchOrder(0);DNS1
                _GUICtrlIpAddress_Set($IPAddress4, $LocalDns1)
                $LocalDns2 = $objItem.DNSServerSearchOrder(1);DNS2
                _GUICtrlIpAddress_Set($IPAddress5, $LocalDns2)
                $dqmac = $objItem.MACAddress(0)
                $dqmac = StringReplace($dqmac, ":", "-")
                $jcwj = FileExists("C:\WINDOWS\ip.ini")
                If $jcwj = 0 Then
                        $dqjsjms = IniRead("ip0.ini", $dqmac, 3, "")
                Else
                        $dqjsjms = IniRead("C:\WINDOWS\ip.ini", $dqmac, 3, "")
                EndIf
                GUICtrlSetData(24, $dqjsjms)
        Next
EndFunc   ;==>dqip
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                ;;Case $GUI_EVENT_CLOSE
                ;Exit
                Case $Button3
                        $jcwj = FileExists("C:\WINDOWS\ip.ini")
                        If $jcwj = 0 Then
                                MsgBox(0, "", "Sorry,本机尚未配置!")
                        Else
                                ToolTip("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★" & @LF & @LF & "正在自动切换您的IP地址,请稍候,切换完毕后本程序将自动退出!" & @LF & @LF & "★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★", 512, 360, "提示:", 1, 2)
                                MouseMove(660, 525)
                                Call("unclock")
                                $xrip = IniRead("C:\WINDOWS\ip.ini", $dqmac, "6", "")
                                $xrym = IniRead("C:\WINDOWS\ip.ini", $dqmac, "7", "")
                                $xrwg = IniRead("C:\WINDOWS\ip.ini", $dqmac, "8", "")
                                $xrdns1 = IniRead("C:\WINDOWS\ip.ini", $dqmac, "9", "")
                                $xrdns2 = IniRead("C:\WINDOWS\ip.ini", $dqmac, "10", "")
                                _GUICtrlIpAddress_Set($IPAddress1, $xrip)
                                _GUICtrlIpAddress_Set($IPAddress2, $xrym)
                                _GUICtrlIpAddress_Set($IPAddress3, $xrwg)
                                _GUICtrlIpAddress_Set($IPAddress4, $xrdns1)
                                _GUICtrlIpAddress_Set($IPAddress5, $xrdns2)
                                Dim $SetDns[2], $SetIPAddress[1], $SetSubnetmask[1], $SetGateway[1]
                                $HostName = $dqjsjmc
                                $SetDns[0] = $xrdns1
                                $SetDns[1] = $xrdns2
                                $SetIPAddress[0] = $xrip
                                $SetSubnetmask[0] = $xrym
                                $SetGateway[0] = $xrwg
                                $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
                                $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE", "WQL", 0x10 + 0x20)
                                $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
                                $objNetworkSettings = $objWMIService.Get("Win32_NetworkAdapterConfiguration")
                                For $objNetAdapter In $colComputers
                                        $objNetAdapter.Rename($HostName)
                                Next
                                If IsObj($colItems) Then
                                        For $objNetAdapter In $colItems
                                                $objNetAdapter.EnableStatic($SetIPAddress, $SetSubnetmask)
                                                $objNetAdapter.SetGateways($SetGateway)
                                                $objNetAdapter.SetDNSServerSearchOrder($SetDns)
                                        Next
                                EndIf
                                ;msgbox(1,"",$xrip&@lf&$xrym&@lf&$xrwg&@lf&$xrdns1&@lf&$xrdns2)
                                ;_rundos('set eth="本地连接"')
                                ;_rundos('set ip= '&$xrip)
                                ;RunWait(@ComSpec & ' /C netsh -c interface ip set address "本地连接" static ' & $xrip & " " & $xrym & " " & $xrwg,"",@SW_HIDE)
                                ;RunWait(@ComSpec & " /c " & 'netsh interface ip set dns name="本地连接" source=static addr=' & $xrdns1 & 'register=PRIMARY', "", @SW_HIDE)
                                ;RunWait(@ComSpec & " /c " & 'netsh interface ip add dns name="本地连接" addr=' & $xrdns2 & '', "", @SW_HIDE)
                                Call("clock")
                                Exit
                        EndIf
                Case $Button55
                        $jcwj = FileExists("C:\WINDOWS\ip.ini")
                        If $jcwj = 0 Then
                                MsgBox(0, "", "Sorry,本机尚未配置!")
                        Else
                                ToolTip("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★" & @LF & @LF & "正在自动切换您的IP地址,请稍候,切换完毕后本程序将自动退出!" & @LF & @LF & "★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★", 512, 360, "提示:", 1, 2)
                                MouseMove(660, 525)
                                Call("unclock")
                                $xrip = IniRead("C:\WINDOWS\ip.ini", $dqmac, "11", "")
                                $xrym = IniRead("C:\WINDOWS\ip.ini", $dqmac, "12", "")
                                $xrwg = IniRead("C:\WINDOWS\ip.ini", $dqmac, "13", "")
                                $xrdns1 = IniRead("C:\WINDOWS\ip.ini", $dqmac, "14", "")
                                $xrdns2 = IniRead("C:\WINDOWS\ip.ini", $dqmac, "15", "")
                                _GUICtrlIpAddress_Set($IPAddress1, $xrip)
                                _GUICtrlIpAddress_Set($IPAddress2, $xrym)
                                _GUICtrlIpAddress_Set($IPAddress3, $xrwg)
                                _GUICtrlIpAddress_Set($IPAddress4, $xrdns1)
                                _GUICtrlIpAddress_Set($IPAddress5, $xrdns2)
                                Dim $SetDns[2], $SetIPAddress[1], $SetSubnetmask[1], $SetGateway[1]
                                $HostName = $dqjsjmc
                                $SetDns[0] = $xrdns1
                                $SetDns[1] = $xrdns2
                                $SetIPAddress[0] = $xrip
                                $SetSubnetmask[0] = $xrym
                                $SetGateway[0] = $xrwg
                                $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
                                $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE", "WQL", 0x10 + 0x20)
                                $colComputers = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
                                $objNetworkSettings = $objWMIService.Get("Win32_NetworkAdapterConfiguration")
                                For $objNetAdapter In $colComputers
                                        $objNetAdapter.Rename($HostName)
                                Next
                                If IsObj($colItems) Then
                                        For $objNetAdapter In $colItems
                                                $objNetAdapter.EnableStatic($SetIPAddress, $SetSubnetmask)
                                                $objNetAdapter.SetGateways($SetGateway)
                                                $objNetAdapter.SetDNSServerSearchOrder($SetDns)
                                        Next
                                EndIf
                                ;RunWait(@ComSpec & ' /c netsh -c interface ip set address "本地连接" static ' & $xrip & $xrym & $xrwg & '1', "", @SW_HIDE)
                                ;RunWait(@ComSpec & " /c " & 'netsh interface ip set dns name="本地连接" source=static addr=' & $xrdns1 & 'register=PRIMARY', "", @SW_HIDE)
                                ;RunWait(@ComSpec & " /c " & 'netsh interface ip add dns name="本地连接" addr=' & $xrdns2 & '', "", @SW_HIDE)
                                Call("clock")
                                Exit
                        EndIf
                Case $Button7
                        IniWrite("ip0.ini", $dqmac, 1, "★★★★★★★★★★★★★★★")
                        IniWrite("ip0.ini", $dqmac, 2, $dqjsjmc)
                        $dqjsjms = GUICtrlRead(24)
                        IniWrite("ip0.ini", $dqmac, 3, $dqjsjms)
                        IniWrite("ip0.ini", $dqmac, 4, $dqmac)
                        ;IniWrite("ip0.ini", $dqmac, 5, $12345)
                        $n = 06
                        $n0 = 1
                        $n00 = 0
                        For $n = 06 To 10
                                Select
                                        Case $n0 = 1
                                                $n00 = $IPAddress1
                                        Case $n0 = 2
                                                $n00 = $IPAddress2
                                        Case $n0 = 3
                                                $n00 = $IPAddress3
                                        Case $n0 = 4
                                                $n00 = $IPAddress4
                                        Case $n0 = 5
                                                $n00 = $IPAddress5
                                EndSelect
                                $12345 = _GUICtrlIpAddress_Get($n00)
                                IniWrite("ip0.ini", $dqmac, $n, $12345)
                                $n0 = $n0 + 1
                        Next
                        MsgBox(0, "", "重置外网IP成功!")
                Case $Button8
                        $n = 11
                        $n0 = 1
                        $n00 = 0
                        For $n = 11 To 15
                                Select
                                        Case $n0 = 1
                                                $n00 = $IPAddress1
                                        Case $n0 = 2
                                                $n00 = $IPAddress2
                                        Case $n0 = 3
                                                $n00 = $IPAddress3
                                        Case $n0 = 4
                                                $n00 = $IPAddress4
                                        Case $n0 = 5
                                                $n00 = $IPAddress5
                                EndSelect
                                $12345 = _GUICtrlIpAddress_Get($n00)
                                IniWrite("ip0.ini", $dqmac, $n, $12345)
                                $n0 = $n0 + 1
                        Next
                        MsgBox(0, "", "重置内网IP成功!")
                        #cs
                                Case $button20
                                $dqmm = IniRead("ip0.ini", "配置信息", "MD5", $yzmm)
                                
                        #ce




                Case $Button19
                        $dqip = IniRead("ip0.ini", $dqmac, "6", "")
                        $dqym = IniRead("ip0.ini", $dqmac, "7", "")
                        $dqwg = IniRead("ip0.ini", $dqmac, "8", "")
                        $dqdns1 = IniRead("ip0.ini", $dqmac, "9", "")
                        $dqdns2 = IniRead("ip0.ini", $dqmac, "10", "")
                        $dqjsjms = IniRead("ip0.ini", $dqmac, 3, "")
                        _GUICtrlIpAddress_Set($IPAddress1, $dqip)
                        _GUICtrlIpAddress_Set($IPAddress2, $dqym)
                        _GUICtrlIpAddress_Set($IPAddress3, $dqwg)
                        _GUICtrlIpAddress_Set($IPAddress4, $dqdns1)
                        _GUICtrlIpAddress_Set($IPAddress5, $dqdns2)
                        IniWrite("ip.ini", $dqmac, 1, "★★★★★★★★★★★★★★★")
                        IniWrite("ip.ini", $dqmac, 2, $dqjsjmc)
                        IniWrite("ip.ini", $dqmac, 3, $dqjsjms)
                        IniWrite("ip.ini", $dqmac, 4, $dqmac)
                        IniWrite("ip.ini", $dqmac, 5, "")
                        IniWrite("ip.ini", $dqmac, 6, $dqip)
                        IniWrite("ip.ini", $dqmac, 7, $dqym)
                        IniWrite("ip.ini", $dqmac, 8, $dqwg)
                        IniWrite("ip.ini", $dqmac, 9, $dqdns1)
                        IniWrite("ip.ini", $dqmac, 10, $dqdns2)
                        MsgBox(0, "", "读取外网IP成功,已写入本地连接!")
                Case $Button20
                        $dqip = IniRead("ip0.ini", $dqmac, "11", "")
                        $dqym = IniRead("ip0.ini", $dqmac, "12", "")
                        $dqwg = IniRead("ip0.ini", $dqmac, "13", "")
                        $dqdns1 = IniRead("ip0.ini", $dqmac, "14", "")
                        $dqdns2 = IniRead("ip0.ini", $dqmac, "15", "")
                        $dqjsjms = IniRead("ip0.ini", $dqmac, 3, "")
                        _GUICtrlIpAddress_Set($IPAddress1, $dqip)
                        _GUICtrlIpAddress_Set($IPAddress2, $dqym)
                        _GUICtrlIpAddress_Set($IPAddress3, $dqwg)
                        _GUICtrlIpAddress_Set($IPAddress4, $dqdns1)
                        _GUICtrlIpAddress_Set($IPAddress5, $dqdns2)
                        IniWrite("ip.ini", $dqmac, 11, $dqip)
                        IniWrite("ip.ini", $dqmac, 12, $dqym)
                        IniWrite("ip.ini", $dqmac, 13, $dqwg)
                        IniWrite("ip.ini", $dqmac, 14, $dqdns1)
                        IniWrite("ip.ini", $dqmac, 15, $dqdns2)
                        MsgBox(0, "", "读取内网IP成功,已写入本地连接!")
                Case $Button10
                        MsgBox(0, "", "正在安装副本到您的计算机,请稍候......", 3)
                        $jcwjj = FileExists("C:\program files\ahphs\");检查目录是否存在
                        If $jcwjj = 0 Then
                                DirCreate("C:\program files\ahphs\");创建目录
                        Else
                        EndIf
                        FileCopy("ip.exe", "C:\program files\ahphs\", 1)
                        Sleep(100)
                        FileMove("ip.ini", "C:\windows\", 1)
                        Sleep(100)
                        FileCreateShortcut("C:\program files\ahphs\ip.exe", "C:\Documents and Settings\Administrator\Application Data\Microsoft\Internet Explorer\Quick Launch\IP地址管理器.ink")
                        FileCreateShortcut("C:\program files\ahphs\ip.exe", "C:\Documents and Settings\Administrator\桌面\IP地址管理器.ink")
                        FileCreateShortcut("C:\program files\ahphs\ip.exe", "C:\Documents and Settings\Administrator\「开始」菜单\IP地址管理器.ink")
                        MsgBox(0, "", "安装成功!")
                Case $Button11
                        ;FileSetAttrib("c:\program files\ahphs\ip.ini", "-RH")
                        ;FileDelete("c:\program files\ahphs\ip.ini")
                        Exit
                Case $Button9;============================
                        $bu9txt = ControlGetText("", "", 9);读取按钮文本
                        Select
                                Case $bu9txt = "输入密码"
                                        GUICtrlSetState(21, $GUI_ENABLE);解锁控件
                                        GUICtrlSetData(9, "确认密码");更改按钮文本
                                        GUICtrlSetData(21, "");更改控件数据
                                        ControlFocus("", "", 21);焦点集中到控件
                                Case $bu9txt = "确认密码"
                                        $yanzhengmm = GUICtrlRead(21);读取控件内容
                                        If $yanzhengmm = $yzmm Then
                                                GUICtrlSetData(21, "");更改控件数据
                                                GUICtrlSetState(21, $GUI_DISABLE);加锁控件
                                                GUICtrlSetData(9, "封    闭");更改按钮文本
                                                MsgBox(0, "", "密码验证成功!")
                                                Call("qy")
                                                Call("unclock")
                                        Else
                                                GUICtrlSetData(9, "输入密码");更改按钮文本
                                                GUICtrlSetData(21, "");更改控件数据
                                                GUICtrlSetState(21, $GUI_DISABLE);加锁控件
                                                MsgBox(0, "", "非法操作,请确认您的权限!")
                                        EndIf
                                Case $bu9txt = "封    闭"
                                        Call("jy")
                                        Call("clock")
                                        GUICtrlSetData(9, "输入密码");更改按钮文本
                        EndSelect
        EndSwitch
WEnd;### Tidy Error -> func is never closed in your script.


[ 本帖最后由 ahphsautoit 于 2009-4-8 18:43 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-4-7 14:22:37 | 显示全部楼层
俺一运行就退出

D:\Backup\????\cc.au3 (75) : ==> ???????????.:
For $i = 1 To $ip0[0]
For $i = 1 To $ip0^ ERROR
 楼主| 发表于 2009-4-7 14:36:17 | 显示全部楼层

回复 2# 顽固不化 的帖子

.au3代码和IP0.ini(压缩)已添加到附件,您再试试。
发表于 2009-4-7 22:19:12 | 显示全部楼层
GUICtrlSetState(26, $GUI_DISABLE) 这样的写法。。。
GUICtrlSetState(controlID, state) 都说了用控件ID,就是GUICtrlCreate...返回的变量,你还要直接用数字,不出问题才怪。
发表于 2009-4-8 03:30:38 | 显示全部楼层
应该是个bug 虽然控件id的值是那个数字 但是就是不能用数字
GUICtrlSetState($Button19, $GUI_DISABLE)
 GUICtrlSetState($Button20, $GUI_DISABLE)

把$Button19 用$Button19的值来代替 就会出现楼主的情况
 楼主| 发表于 2009-4-8 07:14:01 | 显示全部楼层
哦!!!原来是这个原因,非常感谢各位的释疑,又多了一层领悟!
 楼主| 发表于 2009-4-8 07:21:39 | 显示全部楼层
刚刚准备把“提问”改为“已解决”,但是发现一个严重的问题。我太疏忽了,导致出现这个不是BUG的BUG。
各位大哥居然都没有发现!!!
刚刚细读了一遍代码,发现两行:
$Button19 = GUICtrlCreateButton("读取外网IP", 8, 95, 75, 25, 0)
$Button20 = GUICtrlCreateButton("读取内网IP", 8, 120, 75, 25, 0)

$Button4 = GUICtrlCreateButton("读取外网IP", 8, 95, 75, 25, 0)
$Button5 = GUICtrlCreateButton("读取内网IP", 8, 120, 75, 25, 0)

其中,button4/5应该是我最早画GUI的时候写的,后来作了调整,改为现在的button19/20。只是我在改动的时候,居然没有把原来的button4/5给删掉,才出现此错误的。虽然我还没有试验,但是发现这个问题了,可以肯定问题在这啦!
发表于 2009-4-8 15:25:25 | 显示全部楼层
没错,控件ID用变量还是直接用数值并不是关键。关键是,你用了数值,DEBUG或以后修改时会很痛苦。昨天本来复制了你的代码准备看看的,结果一搜索$Button19,才找到2个,然后才发现你是直接用数值的,只能放弃。
变量与数值,就相当于域名与IP地址。用域名的好处是容易理解记忆,用变量也是。$GUI_ENABLE 一看就知道表示启用GUI部件,直接写个64只会增加后期代码维护工作量。
 楼主| 发表于 2009-4-8 18:43:00 | 显示全部楼层
\(^o^)/YES!以后我会注意了,不会再出同样的错误了。谢谢大家!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-6 04:42 , Processed in 0.077859 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表