在大家的帮助下,进一步调整了代码。修正了黑框,增加了IP校验,基本达到最初设想的效果:)
感觉写得很乱,没有章法,请各位多多指点,帮助我学到更好的算法,谢谢!
下边是修正后的代码:- ;引用申明
- #RequireAdmin
- #NoTrayIcon
- #include <ButtonConstants.au3>
- #include <ComboConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #include <File.au3>
- #include <Array.au3>
- #include <Process.au3>
- ;
- ;GUI生成
- Global $dxk[4], $an[5] ;$dxk存储单选框控件,$an存储按钮控件
- #Region ### START Koda GUI section ### Form=
- $Form1 = GUICreate("Lab.302出品", 659, 256, 417, 205)
- GUISetFont(18, 400, 0, "微软雅黑")
- GUISetBkColor(0x99B4D1)
- $Label1 = GUICtrlCreateLabel("3 3 8 9 远 程 助 手", 216, 16, 236, 34)
- GUICtrlSetFont(-1, 22, 800, 0, "华文隶书")
- $Label2 = GUICtrlCreateLabel("请输入服务器IP:", 24, 64, 198, 39)
- GUICtrlSetFont(-1, 20, 400, 0, "微软雅黑")
- $srk = GUICtrlCreateCombo("", 232, 56, 313, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
- $an[1] = GUICtrlCreateButton("连接", 560, 48, 65, 49)
- GUICtrlSetFont(-1, 20, 400, 0, "微软雅黑")
- GUICtrlSetBkColor(-1, 0x008000)
- $an[2] = GUICtrlCreateButton("重新输入", 48, 167, 113, 57)
- GUICtrlSetBkColor(-1, 0xA6CAF0)
- $an[3] = GUICtrlCreateButton("保存设置", 273, 167, 113, 57)
- GUICtrlSetBkColor(-1, 0xA6CAF0)
- $an[4] = GUICtrlCreateButton("退出程序", 494, 167, 113, 57)
- GUICtrlSetBkColor(-1, 0xA6CAF0)
- $dxk[1] = GUICtrlCreateRadio("记忆", 232, 120, 57, 33)
- GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
- $dxk[2] = GUICtrlCreateRadio("删除", 304, 120, 57, 33)
- GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
- $dxk[3] = GUICtrlCreateRadio("清空", 371, 121, 57, 33)
- GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
- $bz = GUICtrlCreateIcon(@ScriptDir & "\ico\help.ico", -1, 624, 0, 33, 33)
- #EndRegion ### END Koda GUI section ###
- ;
- ;定义函数,检查值是否为IP地址
- Func _jiancha($ipdizhi)
- Local $a_ip, $cuowu, $n = 1
- $a_ip = StringSplit($ipdizhi, ".")
- If $a_ip[0] = 4 Then
- For $n = 1 To 4
- Switch $n
- Case 1
- If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] > 0 And $a_ip[$n] < 255 Then
- $cuowu = 0
- Else
- $cuowu = 1
- Return SetError(1)
- ExitLoop
- EndIf
- Case 2
- If $cuowu = 0 Then
- If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] >= 0 And $a_ip[$n] < 255 Then
- $cuowu = 0
- Else
- $cuowu = 1
- Return SetError(1)
- ExitLoop
- EndIf
- Else
- Return SetError(1)
- ExitLoop
- EndIf
- Case 3
- If $cuowu = 0 Then
- If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] >= 0 And $a_ip[$n] < 255 Then
- $cuowu = 0
- Else
- $cuowu = 1
- Return SetError(1)
- ExitLoop
- EndIf
- Else
- Return SetError(1)
- ExitLoop
- EndIf
- Case 4
- If $cuowu = 0 Then
- If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] > 0 And $a_ip[$n] < 255 Then
- Return SetError(0)
- Else
- Return SetError(1)
- ExitLoop
- EndIf
- Else
- Return SetError(1)
- ExitLoop
- EndIf
- EndSwitch
- Next
- Else
- Return SetError(1)
- EndIf
- EndFunc ;==>_jiancha
- ;
- ;定义函数记录IP
- Func _addip(ByRef $ip)
- Local $tmp, $i, $t
- Local $a[] = [""]
- $tmp = GUICtrlRead($srk)
- _jiancha($tmp)
- If @error = 0 Then _ArrayAdd($ip, $tmp)
- $ip = _ArrayUnique($ip)
- For $i = 1 To UBound($ip, 1) - 1
- _jiancha($ip[$i])
- If @error = 0 Then
- _ArrayAdd($a, $ip[$i])
- EndIf
- Next
- $ip = $a
- For $i = 1 To UBound($ip, 1) - 1
- $t &= $ip[$i] & "|"
- Next
- GUICtrlSetData($srk, "")
- Return $t
- EndFunc ;==>_addip
- ;
- ;定义函数删除IP
- Func _delip(ByRef $ip)
- Local $t, $n, $i
- $t = GUICtrlRead($srk)
- $n = UBound($ip, 1)
- For $i = 1 To $n - 1
- If $ip[$i] = $t Then
- _ArrayDelete($ip, $i)
- $t = ""
- ExitLoop
- EndIf
- Next
- For $i = 1 To UBound($ip, 1) - 1
- $t &= $ip[$i] & "|"
- Next
- GUICtrlSetData($srk, "")
- Return $t
- EndFunc ;==>_delip
- ;
- ;定义函数判断保存设置应执行的内容
- Func _bcsz(ByRef $ip)
- Select
- Case GUICtrlRead($dxk[1]) = 1
- GUICtrlSetData($srk, _addip($ip))
- Case GUICtrlRead($dxk[2]) = 1
- GUICtrlSetData($srk, _delip($ip))
- Case GUICtrlRead($dxk[3]) = 1
- ReDim $ip[1]
- $ip[0] = ""
- GUICtrlSetData($srk, $ip[0])
- EndSelect
- EndFunc ;==>_bcsz
- ;
- ;定义函数将IP记录成文件
- Func _xwj($ip)
- Local $n, $i
- _RunDos(@ComSpec & " /c" & "echo. >" & @WorkingDir & "\Data.db")
- For $n = 1 To UBound($ip, 1) - 1
- FileWrite(@WorkingDir & "\Data.db", $ip[$n] & @CRLF)
- Next
- EndFunc ;==>_xwj
- ;
- ;定义主函数
- Func _main()
- GUISetState(@SW_SHOW) ;激活GUI
- Local $t, $ip = [""]
- Switch FileExists(@WorkingDir & "\Data.db")
- Case 0
- FileWrite(@WorkingDir & "\Data.db", "" & @CRLF)
- Case 1
- _FileReadToArray(@WorkingDir & "\Data.db", $ip)
- EndSwitch
- GUICtrlSetData($srk, _addip($ip))
- ;建立消息会话
- While 1
- $nMsg = GUIGetMsg()
- Switch $nMsg
- Case $GUI_EVENT_CLOSE
- _xwj($ip)
- Exit
- Case $GUI_EVENT_MINIMIZE
- ;GUISetState(@SW_HIDE, $Form1)
- ;Opt("TrayIconHide", 0)
- Case $srk
-
- Case $an[1]
- $t = GUICtrlRead($srk)
- Ping ($t, 300)
- If @error = 0 Then
- Run("mstsc /admin /v:" & $t)
- GUICtrlSetData($srk, _addip($ip))
- Else
- MsgBox(48, "错误!", "IP不可达或该服务器不存在!", 5)
- EndIf
- Case $an[2]
- GUICtrlSetData($srk, $ip[0])
- GUICtrlSetData($srk, _addip($ip))
- Case $an[3]
- _bcsz($ip)
- Case $an[4]
- _xwj($ip)
- Exit
- Case $bz
- MsgBox(0, "感谢IT天空各位朋友的帮助", " 鸣 谢" & @CRLF & @CRLF & _
- " Skyfree wang754782072" & @CRLF & @CRLF & _
- " fujimidai Mr.SU" & @CRLF & @CRLF, 5)
- EndSwitch
- WEnd
- EndFunc ;==>_main
- ;
- ;执行主函数
- _main()
- Exit
复制代码
|