Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'//+---------------------------------------------------------------------------- '// '// File: wait.bas '// '// Module: pbadmin.exe '// '// Synopsis: Wrapper functions to launch a process and wait for it to return. '// '// Copyright (c) 1997-1999 Microsoft Corporation '// '// Author: quintinb Created Header 09/02/99 '// '//+----------------------------------------------------------------------------
Attribute VB_Name = "wait" Option Explicit
Private Const PROCESS_QUERY_INFORMATION = &H400 Private Const STILL_ACTIVE = &H103 Private Declare Function OpenProcess& Lib "kernel32" (ByVal _ dwDesiredAccess&, ByVal bInheritHandle&, ByVal dwProcessId&) Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal _ hProcess As Long, lpExitCode As Long) As Long Private Const IDC_UPARROW = 32516&
' GetWindow() Constants Public Const GW_HWNDFIRST = 0 Public Const GW_HWNDLAST = 1 Public Const GW_HWNDNEXT = 2 Public Const GW_HWNDPREV = 3 Public Const GW_OWNER = 4 Public Const GW_CHILD = 5 Public Const GW_MAX = 5
Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long Declare Function GetDesktopWindow Lib "user32" () As Long Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Public Function WaitForApp(sCmd As String) As Long
Dim hApp As Long Dim hProc As Long Dim lExitCode As Long
On Error GoTo WaitErr
'hApp = Shell(sCmd, vbNormalFocus) 'hApp = Shell(sCmd, vbHide) hApp = Shell(sCmd, vbMinimizedNoFocus)
hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hApp) Do GetExitCodeProcess hProc, lExitCode DoEvents Loop While lExitCode = STILL_ACTIVE WaitForApp = lExitCode
Exit Function
WaitErr: Exit Function
End Function
Public Function GetWindowHandleFromProcessID(hProcessIDToFind As Long) As Long
Dim hWindow As Long Dim bFoundIt As Boolean Dim hProcessIDToTest As Long Dim lRet As Long
hWindow = GetWindow(GetDesktopWindow(), GW_CHILD) While hWindow <> 0 hProcessIDToTest = 0 lRet = GetWindowThreadProcessId(hWindow, hProcessIDToTest) If hProcessIDToTest = hProcessIDToFind Then bFoundIt = True GetWindowHandleFromProcessID = hWindow Exit Function End If hWindow = GetWindow(hWindow, GW_HWNDNEXT) DoEvents Wend GetWindowHandleFromProcessID = 0
GetWindowHandleFromProcessID = -1
End Function
|