FindWinWild




Private Declare Function EnumWindows& Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long)
Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal hwnd As Long, _
ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function IsWindowVisible& Lib "user32" _
(ByVal hwnd As Long)
Private Declare Function GetParent& Lib "user32" _
(ByVal hwnd As Long)

Dim sPattern As String, hFind As Long

Function EnumWinProc(ByVal hwnd As Long, ByVal lParam As Long) _
As Long
Dim k As Long, sName As String
If IsWindowVisible(hwnd) And GetParent(hwnd) = 0 Then
sName = Space$(128)
k = GetWindowText(hwnd, sName, 128)
If k > 0 Then
sName = Left$(sName, k)
If lParam = 0 Then sName = UCase(sName)
If sName Like sPattern Then
hFind = hwnd
EnumWinProc = 0
Exit Function
End If
End If
End If
EnumWinProc = 1
End Function

Public Function FindWindowWild(sWild As String, _
Optional bMatchCase As Boolean = True) As Long
sPattern = sWild
If Not bMatchCase Then sPattern = UCase(sPattern)
EnumWindows AddressOf EnumWinProc, bMatchCase
FindWindowWild = hFind
End Function

'----Using (Form code)----


Private Sub Command1_Click()
Debug.Print FindWindowWild("*Mi??OSoFt In[s-u]ernet*", False)
End Sub

Inputs:Full or part of window's caption.
Wild characters accepted.

Returns:
Handle of window if find, zero otherwise.











( findwinwild.html )- by Paolo Puglisi - Modifica del 17/12/2023