我想运行本地的程序,然后我还要知道它是不是已经运行完成,该如何处理这个问题!?

moshco 2003-10-15 05:02:47
我用WinExec运行本地方的一个程序处理数据问题,然后我想知道他是什么时候运行完成了!我该如何做呢?而且该程序运行完了,会出现一个对话框,我不希望看到这个对话框,该如何处理呢?
...全文
70 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
moshco 2003-10-17
  • 打赏
  • 举报
回复
tanta(tanta) 老兄!我不是不知道怎么定义常量,我是不知道它的值是多少,我想它可能已经在某涵数里面定义了!我调用就好了!
moshco 2003-10-16
  • 打赏
  • 举报
回复
我用winexec("c:\",SW_HIDE),他说我变量未定义,SW_HIDE这个常量要提前做个什么,才能使用!
rainstormmaster 2003-10-16
  • 打赏
  • 举报
回复
Shell & Wait 的程序怎么写?
〖ALT键﹢鼠标右键开始╱暂停;鼠标左键控制速度〗
启动自动滚屏功能
希望某一 VB 程序利用 Shell 执行某一个外部程序(假设是 notepad.exe)之后,就一直等到此一程序结束执行时, 才回到 VB 程序继续执行, 该怎么办到呢?

当我们调用 Shell 时, 会传回一个数值, 此一数值称为 Process Id, 利用此一 Process Id, 我们可以调用 OpenProcess API 取得 Process Handle, 然后再利用 Process Handle 调用 WaitForSingleObject, 即可等待被 Shell 执行的程序执行完毕, 才继续向下执行。细节如下:

1. API 的声明:

Const SYNCHRONIZE = &H100000
Const INFINITE = &HFFFFFFFF
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

注:如果以上的声明放在「一般模块」底下, 应将 Declare 之前的 Private 保留字去掉, 并且在 Const 之前加上 Public 保留字。

2. 程序范例:(以执行 Notepad 程序为例)

Dim pId As Long, pHnd As Long ’ 分别声明 Process Id 及 Process Handle 变数

pId = Shell("Notepad", vbNormalFocus) ’ Shell 传回 Process Id

pHnd = OpenProcess(SYNCHRONIZE, 0, pId) ’ 取得 Process Handle
If pHnd <> 0 Then
Call WaitForSingleObject(pHnd, INFINITE) ’ 无限等待,直到程序结束
Call CloseHandle(pHnd)
End If
tanta 2003-10-16
  • 打赏
  • 举报
回复
晕~~~~不是把
将下面代码放入你的程序中,上面那段代码之前。
Public Const SW_HIDE = 0
xz1980 2003-10-15
  • 打赏
  • 举报
回复
他的返回值大于32就表示成功
SW_HIDE
winexec("c:\",SW_HIDE)

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧