点击WebBrowser1中的SWF,如何获取鼠标点击事件

mengtiehan 2018-03-02 01:32:23
窗体中有个WebBrowser1,WebBrowser1只有一个SWF
点击这个SWF,如何获取鼠标点击事件呢?












...全文
513 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengtiehan 2018-03-07
  • 打赏
  • 举报
回复
引用 2 楼 zcsor 的回复:
随便找了一个小游戏,你测试的时候,这个游戏登录并且开始加载之后才能获取到正确的句柄。
我去试试
清晨曦月 元老 2018-03-04
  • 打赏
  • 举报
回复
随便找了一个小游戏,你测试的时候,这个游戏登录并且开始加载之后才能获取到正确的句柄。
清晨曦月 元老 2018-03-04
  • 打赏
  • 举报
回复
这个人家没有接口就没有办法获取事件。你这个问题并不难,怎么到这还没解决呢,思路已经说的好好的了。摘一小段代码,你自己测试一下:
Imports System.Runtime.InteropServices

Public Class Form1 : Implements IMessageFilter
    <DllImport("user32.dll")>
    Private Shared Function WindowFromPoint(ByVal xPoint As Integer, ByVal yPoint As Integer) As IntPtr
    End Function

    <DllImport("user32.dll", CharSet:=CharSet.Auto)>
    Private Shared Sub GetClassName(ByVal hWnd As System.IntPtr, ByVal lpClassName As System.Text.StringBuilder, Optional ByVal nMaxCount As Integer = 256)
    End Sub

    <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=False)>
    Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    End Function

    Public Const WM_LBUTTONDOWN As Integer = &H201
    Public Const WM_LBUTTONUP As Integer = &H202
    Public Const WM_RBUTTONDOWN As Integer = &H204
    Public Const WM_RBUTTONUP As Integer = &H205

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Application.AddMessageFilter(Me)
        WebBrowser1.Navigate("http://tnt.qq.com")
    End Sub

    Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
        If m.Msg = WM_LBUTTONDOWN OrElse m.Msg = WM_LBUTTONUP Then
            If GetFlashAxHandleByPoint(MousePosition) <> IntPtr.Zero Then
                If m.Msg = WM_LBUTTONDOWN Then
                    SendMessage(m.HWnd, WM_RBUTTONDOWN, m.WParam, m.LParam)
                End If
                If m.Msg = WM_LBUTTONUP Then
                    SendMessage(m.HWnd, WM_RBUTTONUP, m.WParam, m.LParam)
                End If
                Return True
            End If
        End If
        Return False
    End Function

    Private Function GetFlashAxHandleByPoint(ByVal p As Point) As IntPtr
        Dim hwnd As IntPtr = WindowFromPoint(p.X, p.Y)
        Dim ClassName As New System.Text.StringBuilder("", 256)
        GetClassName(hwnd, ClassName)
        If ClassName.ToString = "MacromediaFlashPlayerActiveX" Then Return hwnd Else Return IntPtr.Zero
    End Function

End Class
这段代码给窗体实现了消息筛选器接口,在接口中过滤出点击Flash控件的左键按下和抬起消息并替换为相同坐标的右键按下和抬起消息,而后过滤掉该消息。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧