I am using a shellexecute loop to open anumber of applications. Is it possible to find out when an application has opened before the loop repeats to open further apps?
Thx for any advise.
Everytime
Printable View
I am using a shellexecute loop to open anumber of applications. Is it possible to find out when an application has opened before the loop repeats to open further apps?
Thx for any advise.
Everytime
Try the FinnWIndow API
Code:Dim handle as Long
handle = FindWindow("classname","captiontext")
if handle <> 0 then
'window opened
end if
Almost forgot
Code:Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Or use EnumWindows.
Add to a Module.
UsageCode:Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Function EnumWindows Lib "user32.dll" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim Length As Long
Dim sName As String
Dim Temp As String
Static iCount As Integer
iCount = iCount + 1
Length = GetWindowTextLength(hwnd) + 1
If Length > 1 Then
sName = Space(Length)
GetWindowText hwnd, sName, Length
Debug.Print Left(sName, Length - 1)
End If
EnumWindowsProc = 1
End Function
This will give you a list of all open windows. Then you can just find the window in the list.Code:EnumWindows AddressOf EnumWindowsProc, 0
That's great, thx Megatron & Vlatko.
Megatron,
The application paths that shellexecute will open are determined by the user at runtime. Hence I will not know what the window text will be.
So I thought of using the newly opened window's handle (hwnd). When Shellexecute opens the new window can I trap what whnd it is given?
Ta very much for any help,
Everytime :)