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. |