C#WebBrowser将鼠标单击事件发送到Flash对象

C#WebBrowser将鼠标单击事件发送到Flash对象,c#,.net,flash,mouseevent,webbrowser-control,C#,.net,Flash,Mouseevent,Webbrowser Control,我一直在四处阅读,但似乎没有找到这个问题的答案。目标是:我在Windows窗体项目中有一个WebBrowser。加载了一个HTML页面,在该HTML页面中有一个Flash对象。我的目标是将鼠标点击发送到闪光对象的(x,y)位置 所需的必备条件 带有Windows窗体可执行文件的窗口不需要处于活动状态才能正常工作 老鼠不能被抓 基于相对于Flash对象或网页的坐标(x,y)发送鼠标单击 示例 想象一下,我在网络浏览器中打开了任何塔防游戏。我想模拟点击来购买和放置新的塔。在此过程中,用户不得放松

我一直在四处阅读,但似乎没有找到这个问题的答案。目标是:我在Windows窗体项目中有一个
WebBrowser
。加载了一个HTML页面,在该HTML页面中有一个Flash对象。我的目标是将鼠标点击发送到闪光对象的(x,y)位置

所需的必备条件

  • 带有Windows窗体可执行文件的窗口不需要处于活动状态才能正常工作
  • 老鼠不能被抓
  • 基于相对于Flash对象或网页的坐标(x,y)发送鼠标单击
示例

想象一下,我在网络浏览器中打开了任何塔防游戏。我想模拟点击来购买和放置新的塔。在此过程中,用户不得放松对鼠标的控制。如果at pixel(x,y)=(30,50)是一个按钮,我想单击该按钮,我可以通过调用类似于
WebBrowser.simulateLeftClick(30,50)
的东西来实现

类可以通过
Spy++

public static void MouseClick(int x, int y, IntPtr handle, string Class)
{
    StringBuilder className = new StringBuilder(100);
    while (className.ToString() != Class)
    {
        handle = GetWindow(handle, 5);
        GetClassName(handle, className, className.Capacity);
    }

    IntPtr lParam = (IntPtr)((y << 16) | x);
    IntPtr wParam = IntPtr.Zero;
    const uint downCode = 0x201;
    const uint upCode = 0x202;
    SendMessage(handle, downCode, wParam, lParam);
    SendMessage(handle, upCode, wParam, lParam);
}

苏的语言是英语。请下次使用它。请告诉我“类可以通过Spy++定义”请详细说明。
public static void MouseClick(int x, int y, IntPtr handle, string Class)
{
    StringBuilder className = new StringBuilder(100);
    while (className.ToString() != Class)
    {
        handle = GetWindow(handle, 5);
        GetClassName(handle, className, className.Capacity);
    }

    IntPtr lParam = (IntPtr)((y << 16) | x);
    IntPtr wParam = IntPtr.Zero;
    const uint downCode = 0x201;
    const uint upCode = 0x202;
    SendMessage(handle, downCode, wParam, lParam);
    SendMessage(handle, upCode, wParam, lParam);
}
IntPtr handle = webBrowser1.Handle