我想写一个vb但是我想在点击command的时候运行bat
各种网上的教程都用过了
把这个程序打包之后也可以用我嵌入的这个程序
仅供参考:
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Const SYNCHRONIZE = &H100000
Dim terminateFlag As Boolean
Private Sub Form_Load()
terminateFlag = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
terminateFlag = True
End Sub
Private Sub ShellWait(cmd As String)
Dim pId As Long, pHnd As Long, r As Long
pId = Shell(cmd, vbHide)
pHnd = OpenProcess(SYNCHRONIZE, 0, pId)
If pHnd <> 0 Then
Do
r = WaitForSingleObject(pHnd, 1000) '等1秒
DoEvents
Loop While r <> 0 And terminateFlag = False
Call CloseHandle(pHnd)
End If
End Sub
Private Sub Command1_Click()
Dim f As Integer
Dim ln As String
ShellWait "cmd /c net use y: \\10.83.20.20\set1 001$rmd /user:oper"
f=FreeFile()
Open "y:\info.ini" For Input As #f
Line Input #f, ln
Debug.Print ln
Close #f
ShellWait "cmd /c net use y: /delete"
End Sub
几种解决办法,首先保证安装的计算机支持DOS命令
第一种,可以将要运行的BAT放到资源文件里,然后每次调用前释放
第二种,在点击COMMAND按钮触发的事件里创建.bat文档,然后用SHELL调用
第三种,创建好.BAT文件然后用OLE控件将创建的文件插入到窗体中
这样就能保证你运行的.BAT文件不在程序外,打包的时候就不受影响了