Board logo

标题: 送给喜欢用VB编写第三方命令性的一段代码吧!高手勿笑 [打印本页]

作者: wangxiulin    时间: 2012-7-19 10:39     标题: 送给喜欢用VB编写第三方命令性的一段代码吧!高手勿笑

本帖最后由 wangxiulin 于 2012-7-19 10:41 编辑

模块:
  1. Option Explicit
  2. Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  3. Public Declare Function EnableWindow Lib "user32" (ByVal Hwnd As Long, ByVal fEnable As Long) As Long
  4. Dim WinHwnd&
  5. Sub Main()
  6. WinHwnd = FindWindow(vbNullString, "C:\windows\system32\cmd.exe")
  7. '寻找窗口句柄
  8.     If VBA.Command = "" Then
  9. MsgBox ("命令行参数未设置")
  10. ' 如果参数为空 则弹出对话框
  11.     ElseIf VBA.Command = "-a" Then
  12. EnableWindow WinHwnd, 0
  13. '如果参数为 -a  则调用API 禁止获取句柄的窗口
  14.     ElseIf VBA.Command = "-b" Then
  15. EnableWindow WinHwnd, 1
  16. '如果参数为 -a  则调用API 取消获取句柄的窗口
  17.     End If
  18. End Sub
复制代码
这个是我发的Cks.exe 的源代码。。也不算高深..
作者: defanive    时间: 2012-8-1 03:49

支持一下,建议:
1、得到cmd句柄的时候应该采取先调用AttachConsole,然后再调用GetConsoleWindow,这样得到的必定是调用cmd的句柄
如果cmd的标题不为"C:\windows\system32\cmd.exe"或者有多个的话,以上代码获得的句柄有可能会不正确
2、命令行未设置的消息不应该弹出对话框提示,最好是可以写在控制台错误流里面,并且返回errorlevel
3、未做错误命令行参数的处理,参数判断时应该不区分大小写
4、总是返回errorlevel来指示批处理命令是否成功

这个板块建立了但是一时没时间写文章(最近忙于写BatProject 0.7),想不到有人发了代码,必须要支持一下
总之资源共享,让别人学习的时候,自己也得到提升
作者: wangxiulin    时间: 2012-8-3 05:49

回复 2# defanive


    主要是返回的我会写...能不能给短代码事例一下
作者: defanive    时间: 2012-8-4 03:49

回复 3# wangxiulin
你的意思是不会写返回?用API ExitProcess即可
作者: wangxiulin    时间: 2012-8-12 15:14

回复 4# defanive
    嗯!!用这个api不会使用!你写的返回我修改也是没用!能不能给一段实例的代码?
作者: defanive    时间: 2012-8-15 04:53

回复 5# wangxiulin
这个API不是只有一个参数么,返回码就是errorlevel




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2