vb程序中webbrowser 接受SendMessage 的消息

webbrowser 不能收到SendMessage的消息

主要是因爲1webbrowser 的句柄找不到。經過努力搜索,終於解決了。做個記錄.


Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const MK_LBUTTON = &H1

'獲得webbrowser的句柄
Public Function GetBrowserWindow(窗體句柄 As Long) As Long
    Dim hwndPeer As Long
    hwndPeer = FindWindowEx(窗體句柄, 0, "Shell Embedding", vbNullString)'網上很多幫助就找到這裏就結束了,那是不能收到消息的。
    hwndPeer = FindWindowEx(hwndPeer, 0, "Shell DocObject View", vbNullString)
    hwndPeer = FindWindowEx(hwndPeer, 0, "Internet Explorer_Server", vbNullString)
    GetBrowserWindow = hwndPeer
End Function

'按鈕單擊
Private Sub 命令_Click()
    Dim t As String, x As Long, y As Long, w As WebBrowser, wbhwnd As Long, k As Long
    x = 537'從WebBrowser控件左上角起0,0,座標不是平時left、right、top、height那個座標,可以直接複製控件到畫圖裏面,看分辨錄。
    y = 44 * &H10000'弄成高位
    wbhwnd = GetBrowserWindow(Form1.hwnd)
    k = PostMessage(wbhwnd, WM_LBUTTONDOWN, MK_LBUTTON, ByVal ((y) + x))
    k = PostMessage(wbhwnd, WM_LBUTTONUP, 0, (x + (y)))
End Sub

'測試通過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章