#include <GUIConstants.au3>
#Include <Constants.au3>
#include <XSkin.au3>
#include <File.au3>
#include <Process.au3>
Opt("TrayMenuMode",1)
$g_szVersion = "wljk"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
IF Not FileExists(@TempDir & "\skins") Then DirCreate(@TempDir & "\skins")
FileInstall("0.bmp",@TempDir & "\skins\0.bmp",1)
FileInstall("1.bmp",@TempDir & "\skins\1.bmp",1)
FileInstall("2.bmp",@TempDir & "\skins\2.bmp",1)
FileInstall("3.bmp",@TempDir & "\skins\3.bmp",1)
FileInstall("4.bmp",@TempDir & "\skins\4.bmp",1)
FileInstall("5.bmp",@TempDir & "\skins\5.bmp",1)
FileInstall("6.bmp",@TempDir & "\skins\6.bmp",1)
FileInstall("7.bmp",@TempDir & "\skins\7.bmp",1)
FileInstall("Standard1.bmp",@TempDir & "\skins\Standard1.bmp",1)
FileInstall("Standard2.bmp",@TempDir & "\skins\Standard2.bmp",1)
FileInstall("Skin.dat",@TempDir & "\skins\Skin.dat",1)
FileInstall("1.gif",@TempDir & "\skins\1.gif",1)
FileInstall("0.gif",@TempDir & "\skins\0.gif",1)
If Not FileExists(@ScriptDir&"\ipconfig.ini") Then
FileInstall("ipconfig.ini",@ScriptDir&"\ipconfig.ini")
$inigui=GUICreate("IP设置",250,105,(@DesktopWidth-250)/2,(@DesktopHeight-105)/2,$WS_POPUP,$WS_EX_TOOLWINDOW+$WS_EX_TOPMOST)
GUICtrlCreateLabel("网通:",5,7,40,20)
GUICtrlCreateLabel("电信:",5,27,40,20)
GUICtrlCreateLabel("网关:",5,47,40,20)
GUICtrlCreateLabel("延时:",5,67,40,20)
$cncbox=GUICtrlCreateInput("202.98.0.68",40,5,205,20)
GUICtrlSetTip(-1,"DNS或要监控的IP,添“0”为不监控.")
$telbox=GUICtrlCreateInput("219.149.194.55",40,25,205,20)
GUICtrlSetTip(-1,"DNS或要监控的IP,添“0”为不监控.")
$lanbox=GUICtrlCreateInput("192.168.0.254",40,45,205,20)
GUICtrlSetTip(-1,"内网网关,添“0”为不监控.")
$timebox=GUICtrlCreateInput("250",40,65,205,20)
GUICtrlSetTip(-1,"以毫秒为单位,默认是250毫秒.")
$queding=GUICtrlCreateButton("确定",105,85,40,20)
GUICtrlSetState(-1,$GUI_DEFBUTTON)
GUICtrlSetTip(-1,"")
GUISetState(@SW_SHOW,$inigui)
While 1
$msg = GUIGetMsg()
If $msg = $queding Then
IniWrite(@ScriptDir&"\ipconfig.ini","设置","网通DNS",GUICtrlRead($cncbox))
IniWrite(@ScriptDir&"\ipconfig.ini","设置","电信DNS",GUICtrlRead($telbox))
IniWrite(@ScriptDir&"\ipconfig.ini","设置","内网网关",GUICtrlRead($lanbox))
IniWrite(@ScriptDir&"\ipconfig.ini","设置","超时时间",GUICtrlRead($timebox))
GUIDelete($inigui)
ExitLoop
EndIf
Sleep(1)
WEnd
EndIf
Dim $cnc=IniRead(@ScriptDir&"\ipconfig.ini","设置","网通DNS","202.98.0.68")
Dim $tel=IniRead(@ScriptDir&"\ipconfig.ini","设置","电信DNS","219.149.194.55")
Dim $lan=IniRead(@ScriptDir&"\ipconfig.ini","设置","内网网关","192.168.0.254")
Dim $time=IniRead(@ScriptDir&"\ipconfig.ini","设置","超时时间","250")
Dim $c=0,$t=0,$l=0,$pc,$pt,$pl,$ct=0,$tt=0,$lt=0,$logs=0,$loggui,$logedit,$dellog,$relog
Dim $XskinID[2]
$Skin_Folder = @TempDir & "\Skins"
$Icon_Folder = @TempDir & "\Skins"
$XSkinGui = XSkinGUICreate( "网络状态监控 v1.0", 350, 230,$Skin_Folder)
$XIcon = XSkinIcon($XSkinGui, 2)
GUISetIcon ("0.ico")
$hide = GUICtrlCreateButton ("隐藏", 30,160,90,30, 0x00ff00)
$log = GUICtrlCreateButton ("查看日志",130,160,90,30,0x00ff00)
$Cancel = GUICtrlCreateButton ("退出", 230,160,90,30,0x00ff00)
GUICtrlCreateLabel("网通:",65,50,30,20)
GUICtrlCreateLabel("电信:",65,80,30,20)
GUICtrlCreateLabel("网关:",65,110,30,20)
$cncpic1= GUICtrlCreateAvi(@TempDir & "\Skins\1.gif","",100,49,15,15,$ACS_AUTOPLAY)
$cncpic2= GUICtrlCreateAvi(@TempDir & "\Skins\0.gif","",100,49,15,15)
GUICtrlSetState(-1,$GUI_HIDE)
$telpic1= GUICtrlCreateAvi(@TempDir & "\Skins\1.gif","",100,79,15,15,$ACS_AUTOPLAY)
$TELPIC2= GUICtrlCreateAvi(@TempDir & "\Skins\0.gif","",100,79,15,15)
GUICtrlSetState(-1,$GUI_HIDE)
$lanpic1= GUICtrlCreateAvi(@TempDir & "\Skins\1.gif","",100,109,15,15,$ACS_AUTOPLAY)
$lanPIC2= GUICtrlCreateAvi(@TempDir & "\Skins\0.gif","",100,109,15,15)
GUICtrlSetState(-1,$GUI_HIDE)
$cncz = GUICtrlCreateLabel("正常",125,50,30,20)
GUICtrlSetColor(-1,0x00BD00)
$telz = GUICtrlCreateLabel("正常",125,80,30,20)
GUICtrlSetColor(-1,0x00BD00)
$lanz = GUICtrlCreateLabel("正常",125,110,30,20)
GUICtrlSetColor(-1,0x00BD00)
GUICtrlCreateLabel("断线次数:",155,50,55,20)
GUICtrlCreateLabel("断线次数:",155,80,55,20)
GUICtrlCreateLabel("断线次数:",155,110,55,20)
$cnct = GUICtrlCreateLabel("0",210,50,30,20)
$telt = GUICtrlCreateLabel("0",210,80,30,20)
$lant = GUICtrlCreateLabel("0",210,110,30,20)
$cncj = GUICtrlCreateLabel("正在监控",240,50,50,20)
GUICtrlSetColor(-1,0x00BD00)
$telj = GUICtrlCreateLabel("正在监控",240,80,50,20)
GUICtrlSetColor(-1,0x00BD00)
$lanj = GUICtrlCreateLabel("正在监控",240,110,50,20)
GUICtrlSetColor(-1,0x00BD00)
If $cnc = 0 Then
GUICtrlSetData($cncj,"暂停监控")
GUICtrlSetData($cncz,"...")
GUICtrlSetColor($cncj,0xFF0000)
GUICtrlSetState($cncpic1,$GUI_HIDE)
EndIf
If $tel = 0 Then
GUICtrlSetData($telj,"暂停监控")
GUICtrlSetData($telz,"...")
GUICtrlSetColor($telj,0xFF0000)
GUICtrlSetState($telpic1,$GUI_HIDE)
EndIf
If $lan = 0 Then
GUICtrlSetData($lanj,"暂停监控")
GUICtrlSetData($lanz,"...")
GUICtrlSetColor($lanj,0xFF0000)
GUICtrlSetState($lanpic1,$GUI_HIDE)
EndIf
GUISetState(@SW_SHOW,$XSkinGui)
While 1
$msg = GUIGetMsg()
$tmsg=TrayGetMsg ()
If $msg = $XIcon[1] Then
DirRemove(@TempDir & "\Skins",1)
Exit
EndIf
If $msg = $XIcon[2] Then GUISetState(@SW_MINIMIZE,$XSkinGui)
Select
Case $tmsg = $TRAY_EVENT_PRIMARYDOUBLE
GUISetState(@SW_SHOW,$XSkinGui)
Case $msg = $hide
hide()
Case $msg =$Cancel
DirRemove(@TempDir & "\Skins",1)
exit
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $log
If $logs=1 Then
hidelog()
Else
seclog()
EndIf
EndSelect
If $msg = $dellog And $logs = 1 Then
dellog()
ElseIf $msg = $relog And $logs = 1 Then
relog()
EndIf
;-------------CNC-----------------
If $cnc <> "0" Then
If Ping($cnc,$time) Then
$pc = 0
Else
$pc = 1
EndIf
EndIf
If $pc = 1 And $c = 0 Then
$ct = $ct + 1
$ci = $ct
$pic1 = $cncpic1
$pic2 = $cncpic2
$Label = $cncz
$Label1 = $cnct
$n = "网通"
$c = 1
timeout()
EndIf
If $pc = 0 And $c = 1 Then
$nn = "网通"
$npic2=$cncpic2
$npic1=$cncpic1
$nLabel = $cncz
$c = 0
timein()
EndIf
;-------------TEL-----------------
If $tel <> "0" Then
If Ping($tel,$time) Then
$pt = 0
Else
$pt = 1
EndIf
EndIf
If $pt = 1 And $t = 0 Then
$tt = $tt + 1
$ci = $tt
$pic1 = $telpic1
$pic2 = $telpic2
$Label = $telz
$Label1 = $telt
$n = "电信"
$t = 1
timeout()
EndIf
If $pt = 0 And $t = 1 Then
$nn = "电信"
$npic2=$telpic2
$npic1=$telpic1
$nLabel = $telz
$t = 0
timein()
EndIf
;-------------LAN-----------------
If $lan <> "0" Then
If Ping($lan,$time) Then
$pl = 0
Else
$pl = 1
EndIf
EndIf
If $pl = 1 And $l = 0 Then
$lt = $lt + 1
$ci = $lt
$pic1 = $lanpic1
$pic2 = $lanpic2
$Label = $lanz
$Label1 = $lant
$name = "cnc"
$n = "网关"
$l = 1
timeout()
EndIf
If $pl =0 And $l = 1 Then
$nn = "网关"
$npic2=$lanpic2
$npic1=$lanpic1
$nLabel = $lanz
$l = 0
timein()
EndIf
;---------------------------------
Sleep(1)
WEnd
Func hide()
GUISetState(@SW_HIDE,$XSkinGui)
TrayTip("隐藏界面","程序界面已隐藏,双击我显示界面.",2)
If WinExists("日志") Then
hidelog()
EndIf
EndFunc
Func seclog()
$logs= 1
GUICtrlSetData($log,"隐藏日志")
$zsizi=WinGetPos("")
$loggui=GUICreate( "日志", 350, 230,$zsizi[0],$zsizi[1]+230,$WS_POPUP,$WS_EX_TOOLWINDOW)
$logedit=GUICtrlCreateEdit("",0,0,350,210,$ES_AUTOVSCROLL+$WS_VSCROLL)
$dellog=GUICtrlCreateButton("删除日志",0,210,175,20)
$relog=GUICtrlCreateButton("刷新日志",175,210,175,20)
readlog()
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $loggui, "int", 500, "long", 0x00000004)
GUISetState(@SW_SHOW,$loggui)
EndFunc
Func hidelog()
$logs=0
GUICtrlSetData($log,"查看日志")
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $loggui, "int", 500, "long", 0x00090000)
GUIDelete($loggui)
EndFunc
Func timeout()
TrayTip("注意",$n&"掉线了!!!",10,2)
GUICtrlSetState($pic1,$GUI_HIDE)
GUICtrlSetState($pic2,$GUI_SHOW+$GUI_AVISTART)
GUICtrlSetData($Label,"断线")
GUICtrlSetColor($Label,0xFF0000)
GUICtrlSetData($Label1,$ci)
;~ jc()
_FileWriteLog ( "c:\log.log", $n&"掉线." )
Beep(2000,200)
Beep(2000,100)
Beep(2000,200)
EndFunc
Func timein()
TrayTip("注意",$nn&"正常了!!!",10,2)
GUICtrlSetState($npic2,$GUI_HIDE)
GUICtrlSetState($npic1,$GUI_SHOW+$GUI_AVISTART)
GUICtrlSetData($nLabel,"正常")
GUICtrlSetColor($Label,0x00BD00)
;~ jc()
_FileWriteLog ( "c:\log.log", $nn&"正常." )
EndFunc
Func readlog()
jc()
$file=FileOpen("c:\log.log",0)
$h=0
While 1
FileReadLine($file)
If @error = -1 Then ExitLoop
$h=$h+1
WEnd
While $h >0
$logz=FileReadLine($file,$h)
GUICtrlSetData($logedit,$logz&@CRLF,1)
$h=$h-1
WEnd
FileClose($file)
EndFunc
Func dellog()
GUICtrlSetData($logedit,"")
FileDelete("c:\log.log")
EndFunc
Func relog()
GUICtrlSetData($logedit,"")
readlog()
EndFunc
Func jc()
If Not FileExists("c:\log.log") Then
FileInstall("log.log","c:\log.log")
EndIf
EndFunc