
Private Sub Timer1_Timer()
pk = FindWindow(vbNullString, ts)
If pk <> 0 Then 'pk不等于0说明已经找到了指定的窗口
pp = FindWindowEx(pk, ByVal 0&, "Button", an)
If pp <> 0 Then '同样,pp不等于0说明找到了指定的按钮
SendMessage pp, BM_CLICK, 0, 0 'SendMessage是同步执行的,所以它运行结束就说明按键命令已成功发送
Shell "D:\运行的程序exe" '这时候就可以运行指定的程序了。但不要用MsgBox来显示提示信息,因为它会使程序挂起的,只有点了按钮才会继续执行。可以在其他地方来显示提示信息,比如窗口的标题栏或状态栏。
End If
End If
End Sub
shell 后面调用的是一个可执行的程序
但是程序是可以给参数的,比如调用notepadexe,再给他一个文件地址的参数:apppath & "\1txt" ,也就是当前路径下的1txt文件,他就可以运行notepadexe同时把参数也传进去。这样这样就可以打开某个文件了。
a = apppath & "\1txt"
Shell "notepadexe """ & a & """"
这个返回值实际上就是被调用程序的进程ID号,你可以通过它对该程序进行多种控制,比如激活窗口、强制关闭、提取程序的输出结果、检测程序是否运行完毕等等。 当然如果你觉得不需要,你也完全可以无视它,你也可以直接用shell "程序名"的方式运行,不使用返回值
Shell会返回执行程序的进程的标识号Pid,通过定时检查pid就能判断程序是否还在运行
以下函数返回指定的pid是否存在,
调用方法:MsgBox PidIsTrue(Shell("notepadexe"))
Private Type PROCESSENTRY32dwsize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String 260
End Type
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Function PidIsTrue(ByVal Pid As Long) As Boolean
Dim Proc As PROCESSENTRY32
Dim snap As Long
Dim theloop As Long
snap = CreateToolhelpSnapshot(15, 0)
Procdwsize = Len(Proc)
theloop = ProcessFirst(snap, Proc)
Do While theloop <> 0
If Procth32ProcessID = Pid Then
PidIsTrue = True
Exit Function
Else
PidIsTrue = False
End If
theloop = ProcessNext(snap, Proc)
Loop
CloseHandle snap
End Function
是读取文件中的内容吗?
strFileName = "D:\ErrPasslog"
Open strFileName For Input As 1
Do While Not EOF(1)
Line Input #1, strLine '一次读取一行
Loop
Close 1
还是打开这个文件?
以上就是关于VB 怎么用一个变量来获取发送的返回值,然后根据返回值成功再去shell全部的内容,包括:VB 怎么用一个变量来获取发送的返回值,然后根据返回值成功再去shell、VB 里怎么用 shell、VB的Shell返回值到底有什么用仅仅是为了返回执行是否成功吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)