Wrox Home  
Search P2P Archive for: Go

  Return to Index  

access thread: RE: Shell & Wait Should Help


Message #1 by Omar Chaudry <OChaudry@b...> on Thu, 21 Feb 2002 08:46:37 -0000
This message is in MIME format. Since your mail reader does not understand

this format, some or all of this message may not be legible.



------_=_NextPart_001_01C1BAB4.460002D0

Content-Type: text/plain



Thanks Walt, it was really useful. Incidently I found a utility in NT4/5

resource kit 'sleep.exe' which will pause execution of a bat file for a

specified number of seconds. I used this instead of the function as I was

shelling out to a bat file and only needed enough time for access to shut

down.



Thanks again for your help.



Cheers

Omar



-----Original Message-----

From: Walt Morgan [mailto:wmorgan@s...] 

Sent: 20 February 2002 13:52

To: Omar Chaudry

Subject: Shell & Wait Should Help



Omar,



The following routine will allow you to use the Shell() function to start a

task and wait for its completion:



Public Function ShellandWait(ExeFullPath As String, _

Optional TimeOutValue As Long = 0) As Boolean



    Dim lInst As Long

    Dim lStart As Long

    Dim lTimeToQuit As Long

    Dim sExeName As String

    Dim lProcessId As Long

    Dim lExitCode As Long

    Dim bPastMidnight As Boolean



    On Error GoTo ErrorHandler



    lStart = CLng(Timer)

    sExeName = ExeFullPath



    'Deal with timeout being reset at Midnight

    If TimeOutValue > 0 Then

        If lStart + TimeOutValue < 86400 Then

            lTimeToQuit = lStart + TimeOutValue

        Else

            lTimeToQuit = (lStart - 86400) + TimeOutValue

            bPastMidnight = True

        End If

    End If



    lInst = Shell(sExeName, vbMinimizedNoFocus)



lProcessId = OpenProcess(PROCESS_QUERY_INFORMATION, False, lInst)



    Do

        Call GetExitCodeProcess(lProcessId, lExitCode)

        DoEvents

        If TimeOutValue And Timer > lTimeToQuit Then

            If bPastMidnight Then

                 If Timer < lStart Then Exit Do

            Else

                 Exit Do

            End If

    End If

    Loop While lExitCode = STATUS_PENDING



    ShellandWait = True



ErrorHandler:

ShellandWait = False

Exit Function

End Function













  DISCLAIMER: The information in this message is confidential and may be

legally privileged. It is intended solely for the addressee.  Access to this

message by anyone else is unauthorised.  If you are not the intended

recipient, any disclosure, copying, or distribution of the message, or any

action or omission taken by you in reliance on it, is prohibited and may be

unlawful.  Please immediately contact the sender if you have received this

message in error. Thank you.









  Return to Index