Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,76 @@
|
|||
Attribute VB_Name = "mdlShellAndWait"
|
||||
Option Explicit
|
||||
|
||||
Private Declare Function OpenProcess Lib "kernel32" _
|
||||
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
|
||||
ByVal dwProcessId As Long) As Long
|
||||
|
||||
Private Declare Function GetExitCodeProcess Lib "kernel32" _
|
||||
(ByVal hProcess As Long, lpExitCode As Long) As Long
|
||||
|
||||
Private Const STATUS_PENDING = &H103&
|
||||
Private Const PROCESS_QUERY_INFORMATION = &H400
|
||||
|
||||
'
|
||||
' Little function go get exit code given processId
|
||||
'
|
||||
Function ProcessIsRunning( processId as Long ) as Boolean
|
||||
Dim exitCode as Long
|
||||
Call GetExitCodeProcess(lProcessId, exitCode)
|
||||
ProcessIsRunning = (exitCode = STATUS_PENDING)
|
||||
End Function
|
||||
|
||||
' Spawn subprocess and wait for it to complete.
|
||||
' I believe that the command in the command line must be an exe or a bat file.
|
||||
' Maybe, however, it can reference any file the system knows how to "Open"
|
||||
'
|
||||
' commandLine is an executable.
|
||||
' expectedDuration - is for poping up a dialog for whatever
|
||||
' infoText - text for progressDialog dialog
|
||||
|
||||
Public Function ShellAndWait( commandLine As String, _
|
||||
expectedDuration As Integer ) As Boolean
|
||||
|
||||
Dim inst As Long
|
||||
Dim startTime As Long
|
||||
Dim expirationTime As Long
|
||||
Dim pid As Long
|
||||
Dim expiresSameDay As Boolean
|
||||
|
||||
On Error GoTo HandleError
|
||||
|
||||
'Deal with timeout being reset at Midnight ($hitForBrains VB folks)
|
||||
startTime = CLng(Timer)
|
||||
expirationTime = startTime + expectedDuration
|
||||
expiresSameDay = expirationTime < 86400
|
||||
If Not expiresSameDay Then
|
||||
expirationTime = expirationTime - 86400
|
||||
End If
|
||||
|
||||
inst = Shell(commandLine, vbMinimizedNoFocus)
|
||||
|
||||
If inst <> 0 Then
|
||||
pid = OpenProcess(PROCESS_QUERY_INFORMATION, False, inst)
|
||||
|
||||
Do While ProcessIsRunning( pid)
|
||||
DoEvents
|
||||
If Timer > expirationTime And (expiresSameDay Or Timer < startTime) Then
|
||||
Exit Do
|
||||
End If
|
||||
Loop
|
||||
ShellAndWait = True
|
||||
Else
|
||||
MsgBox ("Couldn't execute command: " & commandLine)
|
||||
ShellAndWait = False
|
||||
End If
|
||||
|
||||
Exit Function
|
||||
|
||||
HandleError:
|
||||
MsgBox ("Couldn't execute command: " & commandLine)
|
||||
ShellAndWait = False
|
||||
End Function
|
||||
|
||||
Sub SpawnDir()
|
||||
ShellAndWait("dir", 10)
|
||||
End Sub
|
||||
Loading…
Add table
Add a link
Reference in a new issue