Find Any Window

By | 2002-06-01

Sometimes you need to find a window using the API Call findwindow , but what if this windows caption changes
you can’t find that same window all the time. With this function you can find any window just by knowing a few letters
in the caption. This will return the windows’ hWnd , also includes a function that will grab the windows caption.
This is something that will be useful to alot of programmers. Updated! 2.23.01

Original Author: DoWnLoHo

Assumptions

call it like so
call msgbox(FindAnyWindow&(me,”text of window”))
or to get the caption do this
call msgbox(getcaption$(FindAnyWindow&(me,”text of window”)))

Side Effects

none(that I know of)

API Declarations

Public Declare Function GetWindowText Lib “user32” Alias “GetWindowTextA” (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetWindowTextLength Lib “user32” Alias “GetWindowTextLengthA” (ByVal hwnd As Long) As Long
Public Declare Function GetNextWindow Lib “user32” Alias “GetWindow” (ByVal hwnd As Long, ByVal wFlag As Long) As Long

Code

Public Function GetCaption(ByVal lhWnd As Long) As String
Dim sA As String, lLen As Long

lLen& = GetWindowTextLength(lhWnd&)
sA$ = String(lLen&, 0&)
Call GetWindowText(lhWnd&, sA$, lLen& + 1)
GetCaption$ = sA$
End Function
Public Function FindAnyWindow(frm As Form, ByVal WinTitle As String, Optional ByVal CaseSensitive As Boolean = False) As Long
Dim lhWnd As Long, sA As String
lhWnd& = frm.hwnd
Do Until lhWnd& = 0
DoEvents

sA$ = GetCaption(lhWnd&)
If InStr(IIf(CaseSensitive = False, LCase$(sA$), sA$), IIf(CaseSensitive = False, LCase$(WinTitle$), WinTitle$)) Then FindAnyWindow& = lhWnd&: Exit Do Else FindAnyWindow& = 0

lhWnd& = GetNextWindow(lhWnd&, 2)
Loop
End Function

Author: dwirch

Derek Wirch is a seasoned IT professional with an impressive career dating back to 1986. He brings a wealth of knowledge and hands-on experience that is invaluable to those embarking on their journey in the tech industry.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.