如何解决shell异步执行?

redkey 2002-06-30 12:57:04
我想用shell启动一个处部程序,然后读它上面的数据。结果shell 还没启动完,它就开始读数据。请问如何解决.
...全文
333 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxlroad 2002-06-30
  • 打赏
  • 举报
回复
这个可能对你有点用
http://www.csdn.net/expert/topic/261/261032.xml?temp=.895611
主  题: shell函数能以同步方式打开一个exe文件吗?
作  者: zym1110 (非才鸟)
等  级:
信 誉 值: 100
所属论坛: Visual Basic
问题点数: 57
回复次数: 5
发表时间: 2001-8-29 10:16:44
回复人: ltpao(啊炮) ( ) 信誉:100 2001-8-29 12:23:13 得分:30


'不用这么复杂,来一个简单一点的
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
Private Const INFINITE = &HFFFF ' Infinite timeout
Private Const WAIT_TIMEOUT = &H102&

Public Function ShellForWait(sAppName As String, Optional ByVal lShowWindow As VbAppWinStyle = vbMinimizedFocus, Optional ByVal lWaitTime As Long = 0) As Boolean
Dim lID As Long, lHnd As Long, lRet As Long
On Error Resume Next
lID = Shell(sAppName, lShowWindow)
If lID > 0 Then
lHnd = OpenProcess(SYNCHRONIZE, 0, lID)
If lHnd <> 0 Then
Do
lRet = WaitForSingleObject(lHnd, lWaitTime)
DoEvents
Loop While lRet = WAIT_TIMEOUT
CloseHandle lHnd
ShellForWait = True
Else
ShellForWait = False
End If
Else
ShellForWait = False
End If
End Function

ShellForWait("notepad.exe",,&HFFFF)



7,762

社区成员

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

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