找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17524|回复: 5

送给喜欢用VB编写第三方命令性的一段代码吧!高手勿笑

[复制链接]
发表于 2012-7-19 10:39:47 | 显示全部楼层 |阅读模式
本帖最后由 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 的源代码。。也不算高深..

评分

参与人数 1PB +10 技术 +1 收起 理由
CrLf + 10 + 1 十分支持开源

查看全部评分

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

这个板块建立了但是一时没时间写文章(最近忙于写BatProject 0.7),想不到有人发了代码,必须要支持一下
总之资源共享,让别人学习的时候,自己也得到提升
 楼主| 发表于 2012-8-3 05:49:33 | 显示全部楼层
回复 2# defanive


    主要是返回的我会写...能不能给短代码事例一下
发表于 2012-8-4 03:49:16 | 显示全部楼层
回复 3# wangxiulin
你的意思是不会写返回?用API ExitProcess即可
 楼主| 发表于 2012-8-12 15:14:26 | 显示全部楼层
回复 4# defanive
    嗯!!用这个api不会使用!你写的返回我修改也是没用!能不能给一段实例的代码?
发表于 2012-8-15 04:53:51 | 显示全部楼层
回复 5# wangxiulin
这个API不是只有一个参数么,返回码就是errorlevel
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:02 , Processed in 0.018479 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表