IT天空

 找回密码
 加入我们
搜索

[原创] 自己做的一个3389辅助工具

[复制链接]
tarcer 发表于 2017-6-8 16:26:38 | 显示全部楼层 |阅读模式

本帖最后由 tarcer 于 2017-6-8 17:38 编辑

弄了几天终于做出来了:)
非常感谢各位朋友的帮助,需要的就拿去吧。
也有几个小问题没弄好,希望各位前辈帮忙看看
1.往硬盘写文件时总会闪一个黑框,怎么才可以去掉?
2.每次从文件获取数据是总有很多空行,实在没法了弄了个函数来删除。请问空数据是怎么产生的?如何去掉?
源码如下:
  1. ;引用申明
  2. #RequireAdmin
  3. #NoTrayIcon
  4. #include <ButtonConstants.au3>
  5. #include <ComboConstants.au3>
  6. #include <GUIConstantsEx.au3>
  7. #include <StaticConstants.au3>
  8. #include <WindowsConstants.au3>
  9. #Include <File.au3>
  10. #include<Array.au3>
  11. ;
  12. ;GUI生成
  13. Global $dxk[4], $an[5] ;$dxk存储单选框控件,$an存储按钮控件
  14. #Region ### START Koda GUI section ### Form=
  15. $Form1 = GUICreate("Lab.302出品", 659, 256, 417, 205)
  16. GUISetFont(18, 400, 0, "微软雅黑")
  17. GUISetBkColor(0x99B4D1)
  18. $Label1 = GUICtrlCreateLabel("3 3 8 9 远 程 助 手", 216, 16, 236, 34)
  19. GUICtrlSetFont(-1, 22, 800, 0, "华文隶书")
  20. $Label2 = GUICtrlCreateLabel("请输入服务器IP:", 24, 64, 198, 39)
  21. GUICtrlSetFont(-1, 20, 400, 0, "微软雅黑")
  22. $srk = GUICtrlCreateCombo("", 232, 56, 313, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
  23. $an[1] = GUICtrlCreateButton("连接", 560, 48, 65, 49)
  24. GUICtrlSetFont(-1, 20, 400, 0, "微软雅黑")
  25. GUICtrlSetBkColor(-1, 0x008000)
  26. $an[2] = GUICtrlCreateButton("重新输入", 48, 167, 113, 57)
  27. GUICtrlSetBkColor(-1, 0xA6CAF0)
  28. $an[3] = GUICtrlCreateButton("保存设置", 273, 167, 113, 57)
  29. GUICtrlSetBkColor(-1, 0xA6CAF0)
  30. $an[4] = GUICtrlCreateButton("退出程序", 494, 167, 113, 57)
  31. GUICtrlSetBkColor(-1, 0xA6CAF0)
  32. $dxk[1] = GUICtrlCreateRadio("记忆", 232, 120, 57, 33)
  33. GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
  34. $dxk[2] = GUICtrlCreateRadio("删除", 304, 120, 57, 33)
  35. GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
  36. $dxk[3] = GUICtrlCreateRadio("清空", 371, 121, 57, 33)
  37. GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
  38. $bz = GUICtrlCreateIcon(@ScriptDir & "\ico\help.ico", -1, 624, 0, 33, 33)
  39. #EndRegion ### END Koda GUI section ###
  40. ;
  41. ;定义函数记录IP
  42. Func _addip(ByRef $ip)
  43.         Local $n, $t, $i
  44.         $n = UBound($ip, 1)
  45.         ReDim $ip[$n + 1]
  46.         $ip[$n] = GUICtrlRead($srk)
  47.         If $ip[$n] = $ip[0] Then
  48.                 ReDim $ip[$n]
  49.         Else
  50.                 For $i = 1 To $n - 1
  51.                         If $ip[$i] = $ip[$n] Then
  52.                                 ReDim $ip[$n]
  53.                                 ExitLoop
  54.                         EndIf
  55.                 Next
  56.         EndIf        
  57.         For $i = 1 To UBound($ip, 1) - 1
  58.                 $t &= $ip[$i] & "|"                        
  59.         Next
  60.         GUICtrlSetData($srk, "")        
  61.         Return $t
  62. EndFunc   ;==>_addip
  63. ;
  64. ;定义函数删除IP
  65. Func _delip(ByRef $ip)
  66.         Local $t, $n, $i
  67.         $t = GUICtrlRead($srk)
  68.         $n = UBound($ip, 1)
  69.         If $ip[$n - 1] = $t And $n > 1 Then
  70.                 ReDim $ip[$n - 1]
  71.         ElseIf UBound($ip, 1) = 1 Then
  72.                 $ip[0] = ""
  73.         else
  74.                 For $i = 1 To $n - 2
  75.                         If $ip[$i] = $t Then
  76.                                 Do
  77.                                         $ip[$i] = $ip[$i + 1]
  78.                                         If $i < $n - 2 Then $i += 1
  79.                                 Until $i = $n - 2
  80.                                 ReDim $ip[$n - 1]
  81.                         EndIf
  82.                 Next
  83.         EndIf
  84.         $t = ""
  85.         For $i = 1 To UBound($ip, 1) - 1
  86.                 $t &= $ip[$i] & "|"
  87.         Next
  88.         GUICtrlSetData($srk, "")
  89.         Return $t
  90. EndFunc   ;==>_delip
  91. ;
  92. ;定义函数判断保存设置应执行的内容
  93. Func _bcsz(ByRef $ip)
  94.         Select
  95.                 Case GUICtrlRead($dxk[1]) = 1
  96.                         GUICtrlSetData($srk, _addip($ip))
  97.                 Case GUICtrlRead($dxk[2]) = 1
  98.                         GUICtrlSetData($srk, _delip($ip))
  99.                 Case GUICtrlRead($dxk[3]) = 1
  100.                         ReDim $ip[1]
  101.                         $ip[0] =""
  102.                         GUICtrlSetData($srk, $ip[0])
  103.         EndSelect
  104. EndFunc   ;==>_bcsz
  105. ;
  106. ;定义函数将IP记录成文件
  107. Func _xwj($ip)
  108. Local $n, $i
  109. RunWait(@ComSpec & " /c" & "echo. >" & @WorkingDir & "\Data.db")
  110. For $n = 1 To UBound($ip, 1) - 1
  111.         FileWrite(@WorkingDir & "\Data.db", $ip[$n] & @CRLF)
  112. Next
  113. EndFunc
  114. ;
  115. ;定义函数压缩读取IP产生的空数据(为什么会产生空数据行???)
  116. Func _zip(ByRef $ip)
  117.         Local $n, $i
  118.         Local $t[] = [$ip[0]]
  119.         For $i = 2 To UBound($ip, 1) - 1
  120.                 If $ip[$i] <> $ip[0] Then
  121.                         $n = UBound($t, 1)
  122.                         ReDim $t[$n + 1]
  123.                         $t[$n] = $ip[$i]
  124.                 EndIf
  125.         Next
  126.         $ip = $t
  127. EndFunc
  128. ;
  129. ;定义主函数
  130. Func _main()
  131.         GUISetState(@SW_SHOW) ;激活GUI
  132.         Local $t, $ip = [""]
  133.         Switch FileExists(@WorkingDir & "\Data.db")
  134.                 Case 0
  135.                         FileWrite(@WorkingDir & "\Data.db", "" & @CRLF)
  136.                 Case 1
  137.                         _FileReadToArray(@WorkingDir & "\Data.db", $ip)
  138.                     $ip[0] = $ip[1]
  139.         EndSwitch
  140.         ;_ArrayDisplay($ip)        
  141.         _zip($ip)
  142.         ;_ArrayDisplay($ip)
  143.         GUICtrlSetData($srk, _addip($ip))
  144.         ;建立消息会话
  145.         While 1
  146.                 $nMsg = GUIGetMsg()
  147.                 Switch $nMsg
  148.                         Case $GUI_EVENT_CLOSE
  149.                                 _xwj($ip)
  150.                                 Exit
  151.                         Case $GUI_EVENT_MINIMIZE
  152.                                 ;GUISetState(@SW_HIDE, $Form1)
  153.                                 ;Opt("TrayIconHide", 0)
  154.                         Case $srk
  155.                                 
  156.                         Case $an[1]
  157.                                 $t = GUICtrlRead($srk)
  158.                                 Run("mstsc /admin /v:" & $t)
  159.                         Case $an[2]
  160.                                 GUICtrlSetData($srk, $ip[0])
  161.                                 GUICtrlSetData($srk, _addip($ip))
  162.                         Case $an[3]
  163.                                 _bcsz($ip)
  164.                         Case $an[4]                                
  165.                                 _xwj($ip)
  166.                                 Exit
  167.                         Case $bz
  168.                                 MsgBox(0, "感谢IT天空各位朋友的帮助", "                鸣 谢" & @CRLF & @CRLF & _
  169.                                 "    Skyfree        wang754782072" & @CRLF & @CRLF & _
  170.                                 "    fujimidai      Mr.SU" & @CRLF & @CRLF, 5)
  171.                 EndSwitch
  172.         WEnd
  173. EndFunc   ;==>_main
  174. ;
  175. ;执行主函数
  176. _main()
  177. Exit
复制代码

3389ex.7z

388.61 KB, 下载次数: 3, 下载积分: 活跃 -3 点

最近访问 头像模式 列表模式
huaxishe 发表于 2017-6-8 18:38:10 | 显示全部楼层

活跃 8| 技术 0| 互助 0| 钻石 10

高手啊     不懂
fujimidai 发表于 2017-6-8 20:28:09 | 显示全部楼层

活跃 1126| 技术 0| 互助 0| 钻石 10

  1. 运行外部程序并暂停脚本执行,直到程序结束.


  2. RunWait("程序"[, "工作目录"[, 显示[, 选项]]])


  3. 参 数
  4. 程序 运行程序的完整路径(文件类型: EXE, BAT, COM, 或 PIF, 见备注).
  5. 工作目录 [可选] 工作目录, 空白("")使用当前工作目录. 这不是程序的路径.
  6. 显示 [可选] 程序执行时的显示状态:
  7.     @SW_HIDE = 隐藏窗口 (或使用关键字 Default)
  8.     @SW_MINIMIZE = 最小化窗口
  9.     @SW_MAXIMIZE = 最大化窗口
  10. 选项 [可选] 控制父进程与子进程互动.
  11. 0x10000 ($RUN_CREATE_NEW_CONSOLE) = 子控制台进程应设立自己的窗口, 而不是使用父窗口. 当父层作为控制台应用被编译时, 这个标志非常有用.
复制代码

..楼主多看看帮助文件。。。选项@SW_HIDE可以隐藏运行

点评

不晓得什么原因,加上@SW_HIDE后黑框是没有了,但是命令好像也不执行了。。。是系统的问题(WIN7 64位)?还是我的AU3版本不行? 后面用_rundos()解决了黑框,但还是留下了一肚子的疑问啊。。。  详情 回复 发表于 2017-6-9 14:31
谢谢:) 我的AU3是“消失的过去”视频里的版本,帮助里是这样的: RunWait ( "program" [, "workingdir" [, show_flag [, opt_flag]]] ) 好在注解是中文的,只是我粗心了,没看到 唉,粗心是个大毛病。。。  详情 回复 发表于 2017-6-8 22:26
 楼主| tarcer 发表于 2017-6-8 22:26:13 | 显示全部楼层

活跃 1043| 技术 0| 互助 0| 钻石 0

fujimidai 发表于 2017-6-8 20:28
..楼主多看看帮助文件。。。选项@SW_HIDE可以隐藏运行

谢谢:)
我的AU3是“消失的过去”视频里的版本,帮助里是这样的:
RunWait ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )
好在注解是中文的,只是我粗心了,没看到
唉,粗心是个大毛病。。。
 楼主| tarcer 发表于 2017-6-9 14:31:17 | 显示全部楼层

活跃 1043| 技术 0| 互助 0| 钻石 0

fujimidai 发表于 2017-6-8 20:28
..楼主多看看帮助文件。。。选项@SW_HIDE可以隐藏运行

不晓得什么原因,加上@SW_HIDE后黑框是没有了,但是命令好像也不执行了。。。是系统的问题(WIN7 64位)?还是我的AU3版本不行?
后面用_rundos()解决了黑框,但还是留下了一肚子的疑问啊。。。
  1. #include <Process.au3>
复制代码



点评

稍微看了下你代码,,,好乱,,,可以问下你那个runwait是干嘛用么?  详情 回复 发表于 2017-6-10 22:47
fujimidai 发表于 2017-6-10 22:47:12 | 显示全部楼层

活跃 1126| 技术 0| 互助 0| 钻石 10

tarcer 发表于 2017-6-9 14:31
不晓得什么原因,加上@SW_HIDE后黑框是没有了,但是命令好像也不执行了。。。是系统的问题(WIN7 64位) ...

稍微看了下你代码,,,好乱,,,可以问下你那个runwait是干嘛用么?

点评

清空旧的IP记录文件。主要还是对AU3的函数不够了解,不知道如何对文件的具体行进行操作以避免记录重复的IP信息,所以用了个懒办法,在脚本中数据都临时存在数组中了,往硬盘里记录时干脆清空记录文件重写。 有没更  详情 回复 发表于 2017-6-10 23:09
 楼主| tarcer 发表于 2017-6-10 23:09:03 | 显示全部楼层

活跃 1043| 技术 0| 互助 0| 钻石 0

fujimidai 发表于 2017-6-10 22:47
稍微看了下你代码,,,好乱,,,可以问下你那个runwait是干嘛用么?

清空旧的IP记录文件。主要还是对AU3的函数不够了解,不知道如何对文件的具体行进行操作以避免记录重复的IP信息,所以用了个懒办法,在脚本中数据都临时存在数组中了,往硬盘里记录时干脆清空记录文件重写。
有没更好的操作方法啊,可以直接对存储的文件内容进行精确操作?

点评

重复项啊。 先用 读取db到数组 然后 删除重复项  详情 回复 发表于 2017-6-11 22:36
fujimidai 发表于 2017-6-11 22:22:08 | 显示全部楼层

活跃 1126| 技术 0| 互助 0| 钻石 10

tarcer 发表于 2017-6-10 23:09
清空旧的IP记录文件。主要还是对AU3的函数不够了解,不知道如何对文件的具体行进行操作以避免记录重复的I ...
  1. local $dbfile = "ip.db"
  2. if FileExists($dbfile) Then FileDelete($dbfile);删除文件
复制代码
fujimidai 发表于 2017-6-11 22:36:49 | 显示全部楼层

活跃 1126| 技术 0| 互助 0| 钻石 10

tarcer 发表于 2017-6-10 23:09
清空旧的IP记录文件。主要还是对AU3的函数不够了解,不知道如何对文件的具体行进行操作以避免记录重复的I ...

重复项啊。
先用
  1. FileReadToArray
复制代码

读取db到数组
然后
  1. _ArrayUnique
复制代码
删除重复项

点评

这个去除重复不好用啊,虽然重复的是去掉了,但是又会多出好多无用的数据ORZ~~暂时还是用自己写的函数来清除重复吧。 新写了个函数来检查值是否为IP地址,但感觉写的好啰嗦杂乱,请指教下怎样写更精简些  详情 回复 发表于 2017-6-12 16:47
原来有现在的UDF用啊,受教了。看来要多看看帮助文档啊,只是文档太多,无目标的通读很没效率啊。一般哪些UDF用得多啊,我先过一遍吧。  详情 回复 发表于 2017-6-11 23:23
 楼主| tarcer 发表于 2017-6-11 23:23:50 | 显示全部楼层

活跃 1043| 技术 0| 互助 0| 钻石 0


原来有现在的UDF用啊,受教了。看来要多看看帮助文档啊,只是文档太多,无目标的通读很没效率啊。一般哪些UDF用得多啊,我先过一遍吧。
 楼主| tarcer 发表于 2017-6-12 16:47:16 | 显示全部楼层

活跃 1043| 技术 0| 互助 0| 钻石 0


这个去除重复不好用啊,虽然重复的是去掉了,但是又会多出好多无用的数据ORZ~~暂时还是用自己写的函数来清除重复吧。
新写了个函数来检查值是否为IP地址,但感觉写的好啰嗦杂乱,请指教下怎样写更精简些
  1. Func _jiancha($ipdizhi)
  2.         Local $a_ip, $cuowu, $n = 1
  3.         $a_ip = StringSplit($ipdizhi, ".")
  4.         If $a_ip[0] = 4 Then
  5.                 While $n < 5
  6.                         Switch $n
  7.                                 Case 1
  8.                                         If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] > 0 And $a_ip[$n] < 255 Then
  9.                                                 $cuowu = 0
  10.                                         Else
  11.                                                 $cuowu = 1
  12.                                                 Return SetError(1)
  13.                                                 ExitLoop
  14.                                         EndIf
  15.                                 Case 2
  16.                                         If $cuowu = 0 Then
  17.                                                 If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] >= 0 And $a_ip[$n] < 255 Then
  18.                                                         $cuowu = 0
  19.                                                 Else
  20.                                                         $cuowu = 1
  21.                                                         Return SetError(1)
  22.                                                         ExitLoop
  23.                                                 EndIf
  24.                                         Else
  25.                                                 Return SetError(1)
  26.                                                 ExitLoop
  27.                                         EndIf
  28.                                 Case 3
  29.                                         If $cuowu = 0 Then
  30.                                                 If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] >= 0 And $a_ip[$n] < 255 Then
  31.                                                         $cuowu = 0
  32.                                                 Else
  33.                                                         $cuowu = 1
  34.                                                         Return SetError(1)
  35.                                                         ExitLoop
  36.                                                 EndIf
  37.                                         Else
  38.                                                 Return SetError(1)
  39.                                                 ExitLoop
  40.                                         EndIf
  41.                                 Case 4
  42.                                         If $cuowu = 0 Then
  43.                                                 If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] > 0 And $a_ip[$n] < 255 Then
  44.                                                         Return SetError(0)
  45.                                                 Else
  46.                                                         Return SetError(1)
  47.                                                         ExitLoop
  48.                                                 EndIf
  49.                                         Else
  50.                                                 Return SetError(1)
  51.                                                 ExitLoop
  52.                                         EndIf
  53.                         EndSwitch
  54.                         $n += 1
  55.                 WEnd
  56.         Else
  57.                 Return SetError(1)
  58.         EndIf
  59. EndFunc   ;==>_jiancha
复制代码
 楼主| tarcer 发表于 2017-6-12 16:51:11 | 显示全部楼层

活跃 1043| 技术 0| 互助 0| 钻石 0

好多重复语句啊,本来想用循环的,但IP的第一段和末段规则是1~254,中间段是0~254,真不晓得怎么精简了TT
 楼主| tarcer 发表于 2017-6-13 09:05:53 | 显示全部楼层

活跃 1043| 技术 0| 互助 0| 钻石 0

在大家的帮助下,进一步调整了代码。修正了黑框,增加了IP校验,基本达到最初设想的效果:)
               
090417fnbpvj45pv31z12b.jpg
                090418w4g5ma565la4cckl.jpg

090419lg18utg7ttc874o3.jpg
                090419edphsdfh6g99dzp0.jpg


090419atq3jymdubu1w3jq.jpg
           
感觉写得很乱,没有章法,请各位多多指点,帮助我学到更好的算法,谢谢!

下边是修正后的代码:
  1. ;引用申明
  2. #RequireAdmin
  3. #NoTrayIcon
  4. #include <ButtonConstants.au3>
  5. #include <ComboConstants.au3>
  6. #include <GUIConstantsEx.au3>
  7. #include <StaticConstants.au3>
  8. #include <WindowsConstants.au3>
  9. #include <File.au3>
  10. #include <Array.au3>
  11. #include <Process.au3>
  12. ;
  13. ;GUI生成
  14. Global $dxk[4], $an[5] ;$dxk存储单选框控件,$an存储按钮控件
  15. #Region ### START Koda GUI section ### Form=
  16. $Form1 = GUICreate("Lab.302出品", 659, 256, 417, 205)
  17. GUISetFont(18, 400, 0, "微软雅黑")
  18. GUISetBkColor(0x99B4D1)
  19. $Label1 = GUICtrlCreateLabel("3 3 8 9 远 程 助 手", 216, 16, 236, 34)
  20. GUICtrlSetFont(-1, 22, 800, 0, "华文隶书")
  21. $Label2 = GUICtrlCreateLabel("请输入服务器IP:", 24, 64, 198, 39)
  22. GUICtrlSetFont(-1, 20, 400, 0, "微软雅黑")
  23. $srk = GUICtrlCreateCombo("", 232, 56, 313, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
  24. $an[1] = GUICtrlCreateButton("连接", 560, 48, 65, 49)
  25. GUICtrlSetFont(-1, 20, 400, 0, "微软雅黑")
  26. GUICtrlSetBkColor(-1, 0x008000)
  27. $an[2] = GUICtrlCreateButton("重新输入", 48, 167, 113, 57)
  28. GUICtrlSetBkColor(-1, 0xA6CAF0)
  29. $an[3] = GUICtrlCreateButton("保存设置", 273, 167, 113, 57)
  30. GUICtrlSetBkColor(-1, 0xA6CAF0)
  31. $an[4] = GUICtrlCreateButton("退出程序", 494, 167, 113, 57)
  32. GUICtrlSetBkColor(-1, 0xA6CAF0)
  33. $dxk[1] = GUICtrlCreateRadio("记忆", 232, 120, 57, 33)
  34. GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
  35. $dxk[2] = GUICtrlCreateRadio("删除", 304, 120, 57, 33)
  36. GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
  37. $dxk[3] = GUICtrlCreateRadio("清空", 371, 121, 57, 33)
  38. GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
  39. $bz = GUICtrlCreateIcon(@ScriptDir & "\ico\help.ico", -1, 624, 0, 33, 33)
  40. #EndRegion ### END Koda GUI section ###
  41. ;
  42. ;定义函数,检查值是否为IP地址
  43. Func _jiancha($ipdizhi)
  44.         Local $a_ip, $cuowu, $n = 1
  45.         $a_ip = StringSplit($ipdizhi, ".")
  46.         If $a_ip[0] = 4 Then
  47.                 For $n = 1 To 4
  48.                         Switch $n
  49.                                 Case 1
  50.                                         If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] > 0 And $a_ip[$n] < 255 Then
  51.                                                 $cuowu = 0
  52.                                         Else
  53.                                                 $cuowu = 1
  54.                                                 Return SetError(1)
  55.                                                 ExitLoop
  56.                                         EndIf
  57.                                 Case 2
  58.                                         If $cuowu = 0 Then
  59.                                                 If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] >= 0 And $a_ip[$n] < 255 Then
  60.                                                         $cuowu = 0
  61.                                                 Else
  62.                                                         $cuowu = 1
  63.                                                         Return SetError(1)
  64.                                                         ExitLoop
  65.                                                 EndIf
  66.                                         Else
  67.                                                 Return SetError(1)
  68.                                                 ExitLoop
  69.                                         EndIf
  70.                                 Case 3
  71.                                         If $cuowu = 0 Then
  72.                                                 If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] >= 0 And $a_ip[$n] < 255 Then
  73.                                                         $cuowu = 0
  74.                                                 Else
  75.                                                         $cuowu = 1
  76.                                                         Return SetError(1)
  77.                                                         ExitLoop
  78.                                                 EndIf
  79.                                         Else
  80.                                                 Return SetError(1)
  81.                                                 ExitLoop
  82.                                         EndIf
  83.                                 Case 4
  84.                                         If $cuowu = 0 Then
  85.                                                 If StringIsInt($a_ip[$n]) = 1 And $a_ip[$n] > 0 And $a_ip[$n] < 255 Then
  86.                                                         Return SetError(0)
  87.                                                 Else
  88.                                                         Return SetError(1)
  89.                                                         ExitLoop
  90.                                                 EndIf
  91.                                         Else
  92.                                                 Return SetError(1)
  93.                                                 ExitLoop
  94.                                         EndIf
  95.                         EndSwitch
  96.                 Next
  97.         Else
  98.                 Return SetError(1)
  99.         EndIf
  100. EndFunc   ;==>_jiancha
  101. ;
  102. ;定义函数记录IP
  103. Func _addip(ByRef $ip)
  104.         Local $tmp, $i, $t
  105.         Local $a[] = [""]
  106.         $tmp = GUICtrlRead($srk)
  107.         _jiancha($tmp)
  108.         If @error = 0 Then _ArrayAdd($ip, $tmp)
  109.         $ip = _ArrayUnique($ip)
  110.         For $i = 1 To UBound($ip, 1) - 1
  111.                 _jiancha($ip[$i])
  112.                 If @error = 0 Then
  113.                         _ArrayAdd($a, $ip[$i])
  114.                 EndIf
  115.         Next
  116.         $ip = $a
  117.         For $i = 1 To UBound($ip, 1) - 1
  118.                 $t &= $ip[$i] & "|"
  119.         Next
  120.         GUICtrlSetData($srk, "")
  121.         Return $t
  122. EndFunc   ;==>_addip
  123. ;
  124. ;定义函数删除IP
  125. Func _delip(ByRef $ip)
  126.         Local $t, $n, $i
  127.         $t = GUICtrlRead($srk)
  128.         $n = UBound($ip, 1)
  129.         For $i = 1 To $n - 1
  130.                 If $ip[$i] = $t Then
  131.                         _ArrayDelete($ip, $i)
  132.                         $t = ""
  133.                         ExitLoop
  134.                 EndIf
  135.         Next       
  136.         For $i = 1 To UBound($ip, 1) - 1
  137.                 $t &= $ip[$i] & "|"
  138.         Next
  139.         GUICtrlSetData($srk, "")
  140.         Return $t
  141. EndFunc   ;==>_delip
  142. ;
  143. ;定义函数判断保存设置应执行的内容
  144. Func _bcsz(ByRef $ip)
  145.         Select
  146.                 Case GUICtrlRead($dxk[1]) = 1
  147.                         GUICtrlSetData($srk, _addip($ip))
  148.                 Case GUICtrlRead($dxk[2]) = 1
  149.                         GUICtrlSetData($srk, _delip($ip))
  150.                 Case GUICtrlRead($dxk[3]) = 1
  151.                         ReDim $ip[1]
  152.                         $ip[0] = ""
  153.                         GUICtrlSetData($srk, $ip[0])
  154.         EndSelect
  155. EndFunc   ;==>_bcsz
  156. ;
  157. ;定义函数将IP记录成文件
  158. Func _xwj($ip)
  159.         Local $n, $i
  160.         _RunDos(@ComSpec & " /c" & "echo. >" & @WorkingDir & "\Data.db")
  161.         For $n = 1 To UBound($ip, 1) - 1
  162.                 FileWrite(@WorkingDir & "\Data.db", $ip[$n] & @CRLF)
  163.         Next
  164. EndFunc   ;==>_xwj
  165. ;
  166. ;定义主函数
  167. Func _main()
  168.         GUISetState(@SW_SHOW) ;激活GUI
  169.         Local $t, $ip = [""]
  170.         Switch FileExists(@WorkingDir & "\Data.db")
  171.                 Case 0
  172.                         FileWrite(@WorkingDir & "\Data.db", "" & @CRLF)
  173.                 Case 1
  174.                         _FileReadToArray(@WorkingDir & "\Data.db", $ip)
  175.         EndSwitch
  176.         GUICtrlSetData($srk, _addip($ip))
  177.         ;建立消息会话
  178.         While 1
  179.                 $nMsg = GUIGetMsg()
  180.                 Switch $nMsg
  181.                         Case $GUI_EVENT_CLOSE
  182.                                 _xwj($ip)
  183.                                 Exit
  184.                         Case $GUI_EVENT_MINIMIZE
  185.                                 ;GUISetState(@SW_HIDE, $Form1)
  186.                                 ;Opt("TrayIconHide", 0)
  187.                         Case $srk
  188.                                
  189.                         Case $an[1]
  190.                                 $t = GUICtrlRead($srk)
  191.                                 Ping ($t, 300)
  192.                                 If @error = 0 Then
  193.                                         Run("mstsc /admin /v:" & $t)
  194.                     GUICtrlSetData($srk, _addip($ip))
  195.                                 Else
  196.                                         MsgBox(48, "错误!", "IP不可达或该服务器不存在!", 5)
  197.                                 EndIf                               
  198.                         Case $an[2]
  199.                                 GUICtrlSetData($srk, $ip[0])
  200.                                 GUICtrlSetData($srk, _addip($ip))
  201.                         Case $an[3]
  202.                                 _bcsz($ip)
  203.                         Case $an[4]
  204.                                 _xwj($ip)
  205.                                 Exit
  206.                         Case $bz
  207.                                 MsgBox(0, "感谢IT天空各位朋友的帮助", "                鸣 谢" & @CRLF & @CRLF & _
  208.                                                 "    Skyfree        wang754782072" & @CRLF & @CRLF & _
  209.                                                 "    fujimidai      Mr.SU" & @CRLF & @CRLF, 5)
  210.                 EndSwitch
  211.         WEnd
  212. EndFunc   ;==>_main
  213. ;
  214. ;执行主函数
  215. _main()
  216. Exit
复制代码






更多图片 小图 大图
组图打开中,请稍候......
fujimidai 发表于 2017-6-13 11:26:58 | 显示全部楼层

活跃 1126| 技术 0| 互助 0| 钻石 10

确实好乱的代码。。。。。
  1. #include <ButtonConstants.au3>
  2. #include <ComboConstants.au3>
  3. #include <GUIConstantsEx.au3>
  4. #include <WindowsConstants.au3>
  5. #include <Array.au3>
  6. #Region
  7. Global $ProgName =" 3389连接辅助工具"
  8. Global $dbfile = @TempDir & "\ip.db"


  9. #EndRegion


  10. #Region ### START Koda GUI section ### Form=
  11. $Form1 = GUICreate($ProgName, 623, 445, 192, 124)
  12. $CB_IP = GUICtrlCreateCombo("", 112, 64, 345, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
  13. $BTN_CONNECT = GUICtrlCreateButton("连接", 472, 64, 73, 25)
  14. $BTN_SAVE = GUICtrlCreateButton("保存", 128, 96, 129, 25)
  15. $BTN_READ = GUICtrlCreateButton("读取", 328, 96, 105, 25)
  16. _init()
  17. GUISetState(@SW_SHOW)
  18. #EndRegion ### END Koda GUI section ###






  19. While 1
  20.         $nMsg = GUIGetMsg()
  21.         Switch $nMsg
  22.                 Case $GUI_EVENT_CLOSE
  23.                         Exit
  24.         Case $BTN_CONNECT
  25.                         _save()
  26.                         _connect()
  27. ;===>                        MsgBox(0,$ProgName,"这里添加连接远程桌面程序")
  28.                 Case $BTN_READ
  29.                         MsgBox(0,$ProgName,"未定义")
  30.                 Case $BTN_SAVE
  31.              _save()
  32.                        
  33.         EndSwitch
  34. WEnd

  35. Func _init();初始化IP列表,存在数据文件则读取,否则设置为8.8.8.8,并创建数据文件
  36.         Local $iplist
  37.         GUICtrlSetData($CB_IP,"","")
  38.         If Not FileExists($dbfile) Then
  39.                 $iplist = "8.8.8.8"
  40.                 FileWrite($dbfile,$iplist & @CRLF)
  41.                 GUICtrlSetData($CB_IP,$iplist,$iplist)
  42.         Else
  43.                 Local $ipArray = FileReadToArray($dbfile)
  44.                 Local $num = @extended
  45.                 Local $iplist = _ArrayToString($ipArray,"|")
  46.                 GUICtrlSetData($CB_IP,$iplist,$ipArray[$num - 1])
  47.         EndIf
  48. EndFunc

  49. Func _save()
  50.         ;===?判断IP地址是否正确,正则忘记是哪里来的了。。
  51.                         If StringRegExp(GUICtrlRead($CB_IP),"^(?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$",0) <> 1 Then
  52.                                 MsgBox(0,$ProgName,"请输入正确的IP地址")
  53.                 Return
  54.                         Else
  55. ;===>                        MsgBox(0,$ProgName,"IP地址正确")
  56. ;===>           保存输入的地址
  57.                 FileWriteLine($dbfile,GUICtrlRead($CB_IP))
  58.                                
  59. ;===>           删除重复行
  60.                 Local $text = FileRead($dbfile)
  61.                 if stringinStr($text,@CRLF) Then
  62.                       $text = StringRegExpReplace( $text, "(?m)(^.*\r\n)(?=(?:^.*\r\n)*\1)", '')
  63.                 Else
  64.                       $text = StringRegExpReplace( $text, "(?m)(^.*\n)(?=(?:^.*\n)*\1)", '')
  65.                 Endif
  66.                                 MsgBox(0,"",$text)
  67.                 FileDelete($dbfile)
  68.                 FileWrite($dbfile,$text)
  69. ;===>           结束                               
  70.                                 _init()
  71.                         EndIf
  72. EndFunc

  73. Func _connect()
  74.         Local $ip = GUICtrlRead($CB_IP)
  75.         ;===?判断IP地址是否正确,正则忘记是哪里来的了。。
  76.                         If StringRegExp($ip,"^(?:(?:1[0-9][0-9]\.)|(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$",0) <> 1 Then
  77.                                 MsgBox(0,$ProgName,"请输入正确的IP地址")
  78.                 Return
  79.                         Else
  80.                                 If Ping($ip,1000) = 0 Then
  81.                                         MsgBox(0,$ProgName,"主机没有连通或发生其它网络错误")
  82.                                         Return
  83.                                 EndIf
  84.                                 GUISetState(@SW_HIDE,$Form1)
  85.                                 RunWait("mstsc /admin /v:" & $ip)
  86.                                 GUISetState(@SW_SHOW,$Form1)
  87.                         EndIf
  88. EndFunc
复制代码


刚刚随便写的,没做多少debug,仅供参考

 楼主| tarcer 发表于 2017-6-13 23:24:49 | 显示全部楼层

活跃 1043| 技术 0| 互助 0| 钻石 0

多谢fujimidai !受益匪浅啊,学到很多。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

tarcer

1043

活跃

0

技术

0

互助
签到任务
最火的业界新闻
  • [图]魅蓝手机全新Logo曝光
  • 研究:人们大部分自拍是为了展示自己的美貌
  • 优派发布XG2530:25英寸240Hz电竞显示器
  • 情怀再袭!任天堂公布迷你SFC主机 内置21款
  • 全球最薄充电器KADO惊艳登场:仅三张银行卡
  • 支持三屏联动 罗技白领专用键鼠套MK850登场
  • 西部数据:不同意SK Hynix财团收购东芝芯片
  • 新款iMac评测:我买了块儿5K屏幕 还送了个
  • CHERRY推出"共享键盘"计划:最长1年 每
  • 黑客用“野蛮袋鼠”USB存储攻击工具感染CIA
炫酷的硬件Show
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
  • 第一次DIY硬管水冷~~
  • 樱桃MX6.0 青轴 机械键盘 开箱
  • 挑战极限,10.2L小钢炮装机秀
  • 挑战S大水冷,本坛最强水冷装备首秀,及制
有趣的美图分享
  • 这英文翻译也是没谁了
  • 国际孤独等级表
  • 被抛弃,减肥后
  • 开得快的专车司机……
  • 请让男友学习,恋爱时女生经典台词翻译
  • 二哈的自诉
  • 无处安放的现实人生
  • 捷径
  • 老婆掉河里了
  • 面基的痛苦
关注官方微信
快速回复 返回顶部 返回列表