[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

送给喜欢用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 的源代码。。也不算高深..
1

评分人数

    • CrLf: 十分支持开源PB + 10 技术 + 1

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

这个板块建立了但是一时没时间写文章(最近忙于写BatProject 0.7),想不到有人发了代码,必须要支持一下
总之资源共享,让别人学习的时候,自己也得到提升
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

回复 2# defanive


    主要是返回的我会写...能不能给短代码事例一下

TOP

回复 3# wangxiulin
你的意思是不会写返回?用API ExitProcess即可
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

回复 4# defanive
    嗯!!用这个api不会使用!你写的返回我修改也是没用!能不能给一段实例的代码?

TOP

回复 5# wangxiulin
这个API不是只有一个参数么,返回码就是errorlevel
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

返回列表