标题: 送给喜欢用VB编写第三方命令性的一段代码吧!高手勿笑 [打印本页]
作者: wangxiulin 时间: 2012-7-19 10:39 标题: 送给喜欢用VB编写第三方命令性的一段代码吧!高手勿笑
本帖最后由 wangxiulin 于 2012-7-19 10:41 编辑
模块:- Option Explicit
-
-
- Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Public Declare Function EnableWindow Lib "user32" (ByVal Hwnd As Long, ByVal fEnable As Long) As Long
- Dim WinHwnd&
-
-
-
- Sub Main()
- WinHwnd = FindWindow(vbNullString, "C:\windows\system32\cmd.exe")
- '寻找窗口句柄
- If VBA.Command = "" Then
- MsgBox ("命令行参数未设置")
- ' 如果参数为空 则弹出对话框
- ElseIf VBA.Command = "-a" Then
- EnableWindow WinHwnd, 0
- '如果参数为 -a 则调用API 禁止获取句柄的窗口
- ElseIf VBA.Command = "-b" Then
- EnableWindow WinHwnd, 1
- '如果参数为 -a 则调用API 取消获取句柄的窗口
- End If
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |