找回密码
 加入
搜索
查看: 3848|回复: 4

[AU3基础] [已解决]求助,在切换网络运营商后.在label上更新IP信息

  [复制链接]
发表于 2011-8-11 00:07:05 | 显示全部楼层 |阅读模式
本帖最后由 xyhqqaa 于 2012-2-17 00:27 编辑
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include<PROCESS.AU3>
#include <ie.au3>
#include <Inet.au3>
#include<file.au3>
Opt("TrayMenuMode", 1);没有默认的(暂停脚本和退出)菜单.
Opt("trayOnEventMode", 1) ;应用 OnEvent 函数于系统托盘.
$Form1 = GUICreate("线路切换", 280, 165, 418, 125)
$IP = GUICtrlCreateGroup("IP查询", 0, 0, 201, 161)
$Label1 = GUICtrlCreateLabel("       点击获取IP信息", 8, 16, 179, 89)
$Button1 = GUICtrlCreateButton("切换到网通线路", 16, 112, 169, 41)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Icon1 = GUICtrlCreateIcon("D:\我的文档\Downloads\IE XP.ico", -1, 208, 24, 65, 65)
$Label2 = GUICtrlCreateLabel("窗口置顶", 216, 136, 52, 17)
TraySetIcon("", -1)
TraySetClick("9")
$PublicIP = _GetIP();获取IP
$about = TrayCreateItem("关于")
TrayItemSetOnEvent($about, "Tray")
TrayCreateItem("")
$quitout = TrayCreateItem("退出")
TrayItemSetOnEvent($quitout, "Tray")
TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "Tray") ;注册鼠标左键双击事件(只能在 TrayOnEventMode 设置为 1 时才能使用)
TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "Tray") ;注册鼠标右键双击事件(只能在 TrayOnEventMode 设置为 1 时才能使用)
TraySetState()
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        If GUICtrlRead($Button1) = "切换到电信线路" Then
                                
                                _RunDOS("route delete 0.0.0.0")
                                _RunDOS("route add 0.0.0.0 mask 0.0.0.0 192.168.21.253")
                                GUICtrlSetData($Label1, "       点击获取IP信息")
                                GUICtrlSetData($Button1, "切换到网通线路")
                        ElseIf GUICtrlRead($Button1) = "切换到网通线路" Then
                                
                                _RunDOS("route delete 0.0.0.0")
                                _RunDOS("route add 0.0.0.0 mask 0.0.0.0 192.168.138.254")
                                GUICtrlSetData($Label1, "       点击获取IP信息")
                                GUICtrlSetData($Button1, "切换到电信线路")
                        EndIf
                Case $Label1
                        read()
                Case $Label2
                        If GUICtrlRead($Label2) = "窗口置顶" Then
                                WinSetOnTop($Form1, "", 1)
                                GUICtrlSetData($Label2, "取消置顶")
                        ElseIf GUICtrlRead($Label2) = "取消置顶" Then
                                WinSetOnTop($Form1, "", 0)
                                GUICtrlSetData($Label2, "窗口置顶")
                        EndIf
                        
        EndSwitch
WEnd

Func read()
        $IP = StringRegExpReplace(_INetGetSource("http://api.liqwei.com/location/?ip=" & $PublicIP), "\d+.", "");
        GUICtrlSetData($Label1, $IP & @LF & @LF & @LF & $PublicIP)
EndFunc   ;==>read

Func Tray()
        Switch @TRAY_ID ;选择产生消息的 TrayItem 或其它特殊事件(如鼠标左键双击事件)
                Case $about
                        MsgBox(48, "提示", "(*^__^*) 嘻嘻……,有事详询电脑室”")
                Case $quitout
                        Exit
        EndSwitch
EndFunc   ;==>Tray
本人新手,由于本人电脑在切换网关的时候可以相应切换网络服务运营商,默认是电信.当我第一次点击Label可以正常获取IP信息,但是当我切换完网关,切换到网通的时候,在Label重新获取IP信息的时候,里面的IP信息没有得到更新,.曾询问一群友,说切换网关后还需要清除ARP信息..但是试过还是不行,只能重新启动程序才能获取切换后的IP信息(不知道会收费不,加个外链省的被骂http://dl.dbank.com/c0slsbp0uq)..                                                                                                                                                                                                                                                                                                                            另外在弱弱的问个小白问题.当我使用进度条的时候,我点击A按钮,进度条到100.但是我点击B按钮,如果让进度条再归零从新开始.需要什么参数吗.给个思路就行..别骂俺伸手党,,刚学不久

本帖子中包含更多资源

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

×
发表于 2011-8-11 01:52:51 | 显示全部楼层
本帖最后由 freedom 于 2011-8-11 01:54 编辑

我有个麻烦点的思路,你看看行不行?

                        Case $label1
                                If GUICtrlRead($Button1) = "切换到电信线路" Then
                                read()
                        EndIf
                        read2()


read2()
重新做个,让这个从IP138.com获取IP信息??

当按钮数据为  "切换到电信线路时"就从read获取IP信息
如果不是就从IP138.com去获取。。

评分

参与人数 1金钱 +10 收起 理由
xyhqqaa + 10 谢谢,真的很感谢。。我再慢慢消化下

查看全部评分

 楼主| 发表于 2011-8-11 18:40:24 | 显示全部楼层
恩恩。。。我还是试试看。。但是希望有更简单的方法。。或者告诉俺。。俺哪错了,。
发表于 2011-8-11 23:38:08 | 显示全部楼层
本帖最后由 arkhe 于 2011-8-12 12:06 编辑

进度条是progress,去找API即可,有函数可以设置的。

。。。。你的代码弄的也太乱了,而且不定义变量直接用,也不是好习惯。
所以没看你的代码,而且论坛可以贴代码的啊。。

而且,你这个程序并不是太大,建议用event模式好些,可以让自己的思路更清晰。

评分

参与人数 1金钱 +10 收起 理由
xyhqqaa + 10 恩恩。我会好好学习,会多注意下。。谢谢。 ...

查看全部评分

发表于 2011-8-16 19:19:03 | 显示全部楼层
回复 3# xyhqqaa

获取IP后,可以试试直接清除网站缓存
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 19:38 , Processed in 0.140760 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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