• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[昨夜星辰] 【源码】执行CMD并返回结果(两种方法) [复制链接]

1#
今天编写了两个函数分别为"ExecuteCmdA"和"ExecuteCmdB",区别如下:
A:
可设置执行目录、可设置超时退出,不可隐藏命令行窗口,与管道通信读取执行结果。
B:
可隐藏命令行窗口,不可设置执行目录、不可设置超时退出,将执行结果写入到本地文件后再读取。


函数名称:
ExecuteCmdA
执行CMD并返回结果
参数定义:
CommandLine 字符串型:执行的指令

CurrentDir 字符串型:设置执行目录,为空则为当前目录
TimeOut 整数型:超时时间,单位为毫秒,0为不判断超时,否则命令行若执行超过设定时间则强制退出执行
返回值:
字符串型:返回执行结果,若失败返回错误信息或空。
调用例子:
TracePrint ExecuteCmdA("dir", "C:", 10000) '获取C盘目录,设置超时为10000毫秒

函数名称:
ExecuteCmdB

执行CMD并返回结果
参数定义:
CommandLine 字符串型:执行的指令

IsVisble 整数型:是否显示命令行窗口,为1代表显示,其他数字为隐藏。
返回值:
字符串型:返回执行结果。
调用例子:
TracePrint ExecuteCmdB("ping bbs.anjian.com", 0) '测试连接按键论坛,隐藏命令行窗口


源码:
  1. Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
  2. TracePrint ExecuteCmdA("dir", "C:", 10000) '获取C盘目录
  3. TracePrint ExecuteCmdB("ping bbs.anjian.com", 0) '测试连接按键论坛
  4. Function ExecuteCmdA(CommandLine, CurrentDir, TimeOut)
  5. Dim WshRunning, WshFinished, WshFailed, Status
  6. WshRunning = 0
  7. WshFinished = 1
  8. WshFailed = 2
  9. Dim WindowStyle, WaitOnReturn
  10. WindowStyle = 0
  11. WaitOnReturn = True
  12. Dim WSH, WshExec,ReadLine, FirstLine,ReadLines
  13. Dim PID, RunTime
  14. Set WSH = CreateObject("WScript.Shell")
  15. If CurrentDir <> "" Then
  16. Set WshExec = WSH.Exec("cmd.exe /k cd /d " & CurrentDir)
  17. FirstLine = 2
  18. Else
  19. Set WshExec = WSH.Exec("cmd.exe /k")
  20. FirstLine = 1
  21. End If
  22. PID = WshExec.ProcessID
  23. WshExec.stdIn.WriteLine CommandLine
  24. WshExec.stdIn.WriteLine "Exit"
  25. RunTime = GetTickCount()
  26. Do
  27. Status = WshExec.Status
  28. If Status = 1 Or Status = 2 Then
  29. Exit Do
  30. End If
  31. If Plugin.Sys.GetTime() - RunTime >= TimeOut And TimeOut<>0 Then
  32. Status = 3
  33. Exit Do
  34. End If
  35. Delay 100
  36. Loop
  37. If Status = 1 Then
  38. ReadLines = ""
  39. Do
  40. ReadLine = WshExec.StdOut.ReadLine
  41. If FirstLine > 0 Then
  42. FirstLine = FirstLine - 1
  43. Else
  44. If InStr(ReadLine, ">Exit") > 0 Then
  45. Exit Do
  46. End If
  47. ReadLines = ReadLines & ReadLine &vbCrLf
  48. End If
  49. Loop
  50. If ReadLines <> "" Then
  51. ReadLines = Left(ReadLines, Len(ReadLines) - 2)
  52. End If
  53. ExecuteCmdA = ReadLines
  54. ElseIf Status = 2 Then
  55. ExecuteCmdA = WshExec.StdErr.ReadAll
  56. ElseIf Status = 3 Then
  57. WSH.Run "taskkill /pid " & PID & " /F /T", WindowStyle, WaitOnReturn
  58. ExecuteCmdA = ""
  59. End If
  60. Set WshExec = Nothing
  61. Set WSH = Nothing
  62. End Function
  63. Function ExecuteCmdB(CommandLine, IsVisible)
  64. If IsVisible = 1 Then
  65. IsVisible = 5
  66. Else
  67. IsVisible = 0
  68. End If
  69. Dim WaitOnReturn
  70. WaitOnReturn = True
  71. Dim WSH
  72. Set WSH = CreateObject("WScript.Shell")
  73. WSH.Run "cmd.exe /A /C " & CommandLine&" > C:\temp_text.txt", IsVisible, WaitOnReturn
  74. ExecuteCmdB = ReadText("C:\temp_text.txt", 0)
  75. Set WSH = Nothing
  76. End Function
  77. Function ReadText(Path, Format)
  78. //Format:0=ANSI -1=Unicode 2=Default
  79. Dim IoMode, Create
  80. IoMode = 1
  81. Create = False
  82. Dim fso,f
  83. Set fso = CreateObject("Scripting.FileSystemObject")
  84. Set f = fso.OpenTextFile(Path, IoMode, Create, Format)
  85. If fso.FileExists(Path) <> True Then
  86. ReadText = ""
  87. Else
  88. ReadText = f.ReadAll()
  89. f.Close
  90. End If
  91. Set f = nothing
  92. Set fso = nothing
  93. End Function
复制代码



近期制作:
传奇私服各种反外挂插件版本挂机软件,可教可售
原神加速、连发辅助工具
天下3自动钓大鱼辅助工具

承接脚本定制,点击下方联系
QQ:250039815

交流群:101296478

2#

执行CMD并返回结果

3#

学习.

官方脚本作者风闲 联系QQ:15177407

验证码识别,数据监测,网页操作,游戏,办公,抢购,post等

4#

谢谢谢谢谢寻寻寻寻寻寻寻寻寻寻寻寻寻寻寻寻寻寻寻寻

5#

不错

5年专业脚本作者,免费解决脚本异议和遇到问题,专业制作脚本,专业一对一收徒VX:dream_is_come
6#

看看代码

7#

222222222222222

8#

挺好

9#

执行CMD并返回结果

10#

执行CMD并返回结果

技能列表:各类自动化,TCP通信,POST,办公,Sqlserver,网页API
要价较高,慎入
只接单,其他问题勿扰
企鹅42766782
11#

执行CMD并返回结果

12#

执行CMD并返回结果

13#

执行CMD并返回结果

14#

6666666666

15#

按键自带的那个不能返回参数

16#

感谢分享

17#

看看

18#

看看

接单QQ:16256223。12年信誉保证!组别:〖官方脚本作者

网页,电脑,安卓,模拟器,验证码识别!

自动办公,网页操作,填表投票,账号注册,学习答题,聊天引流,数据监测,操作软件![/co
19#

学习一下

20#

感谢分享

发新话题 回复该主题