[已解决]求助,在切换网络运营商后.在label上更新IP信息
本帖最后由 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按钮,如果让进度条再归零从新开始.需要什么参数吗.给个思路就行..别骂俺伸手党,,刚学不久 本帖最后由 freedom 于 2011-8-11 01:54 编辑
我有个麻烦点的思路,你看看行不行?
Case $label1
If GUICtrlRead($Button1) = "切换到电信线路" Then
read()
EndIf
read2()
read2()
重新做个,让这个从IP138.com获取IP信息??
当按钮数据为"切换到电信线路时"就从read获取IP信息
如果不是就从IP138.com去获取。。 恩恩。。。我还是试试看。。但是希望有更简单的方法。。或者告诉俺。。俺哪错了,。{:face (229):} 本帖最后由 arkhe 于 2011-8-12 12:06 编辑
进度条是progress,去找API即可,有函数可以设置的。
。。。。你的代码弄的也太乱了,而且不定义变量直接用,也不是好习惯。
所以没看你的代码,而且论坛可以贴代码的啊。。
而且,你这个程序并不是太大,建议用event模式好些,可以让自己的思路更清晰。 回复 3# xyhqqaa
获取IP后,可以试试直接清除网站缓存
页:
[1]