SHELL and wait until the end of the program 
Author Message
 SHELL and wait until the end of the program

In VB5, I don't know how to wait the end of the program after de SHELL
instruction

In VB3, I have use GetModuleUsage but it doesn't exist in API 32 !!!

Thanks for your help



Sun, 15 Jul 2001 03:00:00 GMT  
 SHELL and wait until the end of the program
You need to use the WaitForSingleObject API. Under NT you need to open the
process token and add the synchronize right first. In 95/98 you don't need
to do anything with the token...

Jerry

Quote:

>In VB5, I don't know how to wait the end of the program after de SHELL
>instruction

>In VB3, I have use GetModuleUsage but it doesn't exist in API 32 !!!

>Thanks for your help



Sun, 15 Jul 2001 03:00:00 GMT  
 SHELL and wait until the end of the program
Try this

Public T As Single

Private Type STARTUPINFO
  cb As Long
  lpReserved As String
  lpDesktop As String
  lpTitle As String
  dwX As Long
  dwY As Long
  dwXSize As Long
  dwYSize As Long
  dwXCountChars As Long
  dwYCountChars As Long
  dwFillAttribute As Long
  dwFlags As Long
  wShowWindow As Integer
  cbReserved2 As Integer
  lpReserved2 As Long
  hStdInput As Long
  hStdOutput As Long
  hStdError As Long
End Type

Private Type PROCESS_INFORMATION
  hProcess As Long
  hThread As Long
  dwProcessID As Long
  dwThreadID As Long
End Type

Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal
hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal
lpApplicationName As Long, ByVal lpCommandLine As String, ByVal
lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal
bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal
lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo
As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal
hProcess As Long, lpExitCode As Long) As Long
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = -1&

Public Function ExecCmd(cmdline$)
  Dim proc As PROCESS_INFORMATION
  Dim start As STARTUPINFO ' Initialize the STARTUPINFO structure:
  start.cb = Len(start) ' Start the shelled application:
  Ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS,
0&, 0&, start, proc) ' Wait for the shelled application to finish:
  Ret& = WaitForSingleObject(proc.hProcess, INFINITE)
  Call GetExitCodeProcess(proc.hProcess, Ret&)
  Call CloseHandle(proc.hProcess)
  ExecCmd = Ret&
End Function

Quote:

> You need to use the WaitForSingleObject API. Under NT you need to open the
> process token and add the synchronize right first. In 95/98 you don't need
> to do anything with the token...

> Jerry


> >In VB5, I don't know how to wait the end of the program after de SHELL
> >instruction

> >In VB3, I have use GetModuleUsage but it doesn't exist in API 32 !!!

> >Thanks for your help



Mon, 16 Jul 2001 03:00:00 GMT  
 
 [ 3 post ] 

 Relevant Pages 

1. Waiting until DOS-shell ends...

2. Shell command and waiting for a program to end

3. Shell command and waiting for a program to end

4. Start an application and waiting until it was ended

5. How to Make VB6 Wait Until a Shell Ap Completes/ How to Sort Files in Windows

6. Waiting until Shell finished

7. !VB5: Execute a shell and wait until complete

8. Calling an external program (and waiting until it's finished)

9. Waiting until external program finished to continue processing

10. How to start program and wait until it is complete from VB 4.0

11. Add'l: How to start program and wait until it is complete from VB 4.0

12. How can I wait until a program finishes ?

 

 
Powered by phpBB® Forum Software