Results 1 to 2 of 2

Thread: API question please(Urgent please)

  1. #1

    Thread Starter
    Member
    Join Date
    Aug 2000
    Location
    Minneapolis
    Posts
    42
    I have the following code in VB.

    My intension is to wait until the user closes the dos program and then resume the remaining VB code.

    'start program
    Public Declare Function GetModuleUsage Lib "Kernel32" (hModule As Long)

    Private Sub Command1_Click()
    WaitShell "c:\winnt\system32\command.com"
    'resume the following codr after the dos is closed
    dim x as integer
    x=10
    ...
    ..
    End Sub

    Private Function WaitShell(appname As String)
    Dim hMod As Long
    hMod = Shell(appname, 1)
    If (Abs(hMod) > 32) Then
    While (GetModuleUsage(hMod))
    DoEvents
    Wend
    Else
    MsgBox "Unable to start " & appname
    End If
    End Function
    'end program


    ****
    But when i run the above code, i always get the error
    ***
    "Can't find DLL entry GetModuleUsage in Kernel32"
    "Run Time error 453"
    ***


    May be iam not using the DLL correctly, please correct me.
    Or please give me any other solution.
    Urgent please
    Thanks



  2. #2
    Fanatic Member Jerry Grant's Avatar
    Join Date
    Jul 2000
    Location
    Dorset, UK
    Posts
    810
    This code will probably be better........

    This code was copied from the MSDN library........

    Code:
    
       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.hThread)
             Call CloseHandle(proc.hProcess)
             ExecCmd = ret&
       End Function
    
       Sub Form_Click()
          Dim retval As Long
          retval = ExecCmd("notepad.exe")
          MsgBox "Process Finished, Exit Code " & retval
       End Sub
    Jerry Grant................tnarG yrreJ
    Website: <JG-Design></.net>
    Email: [email protected]
    Working towards a bug free world......
    (Not a Microsoft employee)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width