Функция определения хэндла ЭУ WebBrowser - VB

Формулировка задачи:

Вот функция определения хэндла ЭУ WebBrowser (работает из предположения, что на форме есть только ОДИН такой контрол):
Private Function GetWebBrowserHWND() As Long
    Dim retVal As Long
    Dim result As Long
    Dim hWndChild As Long
    Dim classString As String * 256
    
    hWndChild = GetWindow(Me.hwnd, GW_CHILD)
    While (result = 0) And (hWndChild <> 0)
        hWndChild = GetWindow(hWndChild, GW_HWNDNEXT)
        If hWndChild <> 0 Then
            retVal = GetClassName(hWndChild, classString, 256)
            ' Debug.Print classString
            If Left$(classString, InStr(classString, Chr$(0)) - 1) = 'Shell Embedding' Then result = 1
        End If
    Wend
    
    GetWebBrowserHWND = hWndChild
End Function
В одном VB-проекте GetWindow находит окно 'Shell Embedding', а в другом - нет, хотя на форме ЭУ WebBrowser тоже есть! Пробовал перенести вызов этой функции из Form_Load в Form_Click (мало ли!) - по фигу: не находит - и всё тут! При всём при этом в ОБОИХ проектах ЭУ WebBrowser ЕСТЬ, что подтверждается через Spy++. Какие есть идеи?! PS: искать окно 'Internet Explorer_Server' - не предлагать!


textual

Код к задаче: «Функция определения хэндла ЭУ WebBrowser - VB»

Private Function GetWebBrowserHWND() As Long
    GetWebBrowserHWND = FindWindowEx(Me.hwnd, ByVal 0&, 'Shell Embedding', vbNullString)
End Function
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 4.429 из 5

Источник