我想用shell语句调用exe文件,外部exe文件运行结束后会生成一个TXT文件,所以需要该程序结束后再运行下面的代码。
call shell(“d:\test3\select.exe",vbhide)
求救。
需要代码,劳驾。我是新手。
追答楼上的zx001z回答的很好呀.
我帮忙多加点注释,你就应该能了解他的意思了。
' API 声明
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
' 窗口载入事件
Private Sub Form_Load()
' 变量声明
Dim lngPId As Long ' Process ID
Dim lngPHandle As Long ' Process Handler
' 运行第一个程序 "Notepad.exe"
lngPId = Shell("Notepad.exe", vbNormalFocus)
' 获得进程句柄,并执行成功的情况
lngPHandle = OpenProcess(SYNCHRONIZE, 0, lngPId)
If lngPHandle = 0 Then
' 等待运行的进程执行完毕
Call WaitForSingleObject(lngPHandle, INFINITE)
' 销毁打开的进程句柄
Call CloseHandle(lngPHandle)
End If
' 执行第二个进程 "d:\test3\select.exe"
Call Shell("d:\test3\select.exe", vbHide)
End Sub
我运行过这个代码,不能导出我想要的txt文件,不知道是什么原因。单独执行exe是没有问题的。
追答您需要执行的第一个exe是有txt文件输出?
输出的txt是不是是相对路径,而不是绝对路径?
您可以将此vb代码保存为一个工程,然后运行一下,查看下vb的当前目录或临时目录中,是否存在您所要的txt文件,如果是的话,那您所说的外部程序,可能存储的txt文件是相对路径,那就需要指定其的运行目录了。
谢谢您,能够顺利运行了。不过显示结果后,会弹出一个无内容的txt文件,这是为什么呢?
追答那段代码中
' 运行第一个程序 "Notepad.exe"
lngPId = Shell("Notepad.exe", vbNormalFocus)
会运行一次Notepad.exe,而这个就是运行记事本,所以应该会有个无内容的记事本窗口。
VB6.0,想调exe程序,怎么等待它结束后才执行下一行
1) 用DO循环,在循环内掉windows API 的findwindowa监测 1.exe是否运行完毕,如果完毕了就跳出循环。再读取txt文件,进行处理.2) 修改1.exe文件,在TXT文件尾增加 处理结束标志。用DO循环检测 是否生成了txt文件,TXT文件是否读到结束标志,如果有就跳出循环做下步处理。
我用VB做出的exe程序,为什么退出后仍然在后台运行?
你可以用xueTr这样的工具看一下,你的exe程序运行时的线程有几个(正常的vb程序应该只有1个),如果有多个的话,可能是其他程序插入(如杀软)。你按下exe中程序退出按钮,在xueTr中刷新线程显示,看是否还有线程。(这是我猜测的,不一定是这个情况)--- 解 决 方 案 不管怎样,你可以尝试...
编程一个vb程序!双击后会关闭explorer.exe进程,然后又重新开启explorer...
重启explorer.exe进程需要2步,先结束进程后再次启动,核心代码如下 Shell ("taskkill \/f \/im explorer.exe")'关闭进程Shell ("explorer.exe")'启动explorer ① 如果是双击生成的exe程序执行这些操作的话可以写在窗体加载事件中 Private Sub Form_Load()Shell ("taskkill \/f \/im explorer.exe")Shell...
编程一个vb程序!双击后会关闭explorer.exe进程,然后又重新开启explorer...
1、到C:\\\\WINDOWS\\\\system32下找到ixplore.exe 和 psinthk.dll 完全删除它。2、到注册表中,找到HKEY_LOCAL_MACHINE\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion \\\\Run “mssysint”= iexplore.exe,删除其键值 3,一般在Explorer.EXE(区分大小写)下的子进程是都可以结束的.查看可疑进程的属性,...
VB6.0 如何依次运行多个外部exe程序(安装程序),前一个程序关闭后一个...
\\Windows\\1.exe"ShellAndWait "C:\\Windows\\2.exe"ShellAndWait "C:\\Windows\\3.exe"……就实现依次运行了。PS:本操作可能影响VB6自身,调试前请保存!最好编译成exe之后再调试。命令执行期间,你的程序会停止响应(都是Sleep()的功劳),所有程序运行完才会有反应。所以运行时别乱点你的窗口。
用VB编写的EXE,怎样打开再次编写啊?
要保存工程后,才能继续编写,exe文件是不能用VB打开继续编写的
vb 程序生成exe运行后,不一定多长时间就会出现程序没有响应的状态,得在...
这个和杀毒应该关系不大.重新安装vb应该也是不行的.没有响应应该是程序占用的资源大.导致.vb既然已经生成了exe就证明了vb本身是没问题的.这个主要还是看代码.程序的运行是以2进制形式的,所以你重新安装vb和不重装所生成的exe是一样的.另外一点,就是如果你制作这个程序的电脑和运行程序的电脑如果不是同...
用VB如何终止explorer.exe然后又运行它!
9x不一定有TaskKill程序:VB纯代码(不用引用)Const sEndProess As String = "explorer.exe" '注意必须小写 Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long Private...
我用VB把桌面进程关闭了,但怎么再运行啊!
用Shell,桌面程序是在系统目录里的一个叫explorer.exe的程序。如果你的系统安装在C:\\WINDOWS下,那么可以这样写:Shell "C:\\WINDOWS\\explorer.exe "如果你只是想要启动它,而不是用VB代码启动,可以使用资源管理器的新任务来启动它。Private Sub Command1_Click()Shell "C:\\WINDOWS\\explorer.exe "End...
如何使VB用shell运行一个程序后等运行的程序先退出后自己再退出?
End Function Private Sub Form_Load()Shell "Rundll32.exe url.dll, FileProtocolHandler xx.exe", vbHide '这个是调用程序的 Timer1.Interval = 100 End Sub Private Sub Timer1_Timer()Dim a a = exitproc("xx.exe")If a = 0 Then '检测进程不存在则此程序结束 End End If End Sub ...