|
当前位置:电脑报电子版 > 1999 年 > 17 期 > 软件世界 > Shell的异步执行处理 |
《 Shell的异步执行处理 》 |
利用VB的Shell语句可以调用外部程序,但因为Shell是异步执行的,如果当外部程序还没有完成任务,VB就会执行下一语句,这样往往会得到错误的结果。如果通过调用API函数GetExitCodeProcess和OpenProcess便能解决这一问题。 Declare Function GetExitCodeProcess Lib ″kernel32″ Alias ″GetExitCodeProcess″ (ByVal hProcess As Long, lpExitCode As Long) As Long Declare Function OpenProcess Lib ″kernel32″ Alias ″OpenProcess″ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Public Const Process_Query_Information = &H400 Public Const Still_Active = &H103 Dim strWinDir As String Dim pidNotepad As Long Dim hProcess As Long …… strWinDir = Environ(″windir″) pidNotepad = Shell(strWinDir & ″\notepad.exe″, vbNormalFocus) hProcess = OpenProcess(Process_Query_Information, False, pidNotepad) Do GetExitCodeProcess hProcess, lngexitcode DoEvents Loop While lngexitcode = Still_Active …… 以上实例的运行结果是,程序循环直到记事本程序退出,才会继续运行下面的VB程序,其中, strWinDir = Environ(″windir″) 语句是通过环境变量获得当前系统的Window目录。这样就很好地解决了Shell语句的异步执行问题。 (广西 郭丽华) |
下载本期推荐软件 | 页 首 |
《电脑报》版权所有,电脑报网站编辑部设计制作发布 |