gpt4 book ai didi

C# - 如何将 PostMessage 发送到 WebBrowser 中嵌入的 Flash 窗口?

转载 作者:太空狗 更新时间:2023-10-30 00:26:39 25 4
gpt4 key购买 nike

我想知道是否有任何方法可以锁定到 Flash 窗口并向其发送消息?这里的另一个人给出了答案,他的名字叫 Spencer K。他的问题是: Sending simulated click via WebBrowser in C# to flash object embedded in HTML

不幸的是,K 先生不是很具体,他为阅读他的问题的人留下的只是他“获得句柄,然后遍历句柄”。我不太确定他的意思。我使用 EnumWindows 遍历了所有可见的句柄,但没有成功,因为它没有返回一个 flash 窗口。

我希望这里有人能告诉我,因为过去几天这让我发疯。

编辑:我刚刚决定将一个 SWF 对象插入到我的表单中并将消息发布到该对象的句柄。

最佳答案

其实flash窗口也有自己的句柄。要获取它,您必须从 Spy++ 获取它嵌入的控件的类名,然后您可以像这样访问它:

    [DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, IntPtr windowTitle);
public IntPtr Flash()
{
IntPtr pControl;
pControl = FindWindowEx(webBrowser1.Handle, IntPtr.Zero, "Shell Embedding", IntPtr.Zero);
pControl = FindWindowEx(pControl, IntPtr.Zero, "Shell DocObject View", IntPtr.Zero);
pControl = FindWindowEx(pControl, IntPtr.Zero, "Internet Explorer_Server", IntPtr.Zero);
pControl = FindWindowEx(pControl, IntPtr.Zero, "MacromediaFlashPlayerActiveX", IntPtr.Zero);
return pControl;
}

获得句柄后,您可以发布点击:

    [DllImport("user32.dll", SetLastError = true)]
static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
public enum WMessages : int
{
WM_LBUTTONDOWN = 0x201,
WM_LBUTTONUP = 0x202
}
private int MAKELPARAM(int p, int p_2)
{
return ((p_2 << 16) | (p & 0xFFFF));
}
public void DoMouseLeftClick(IntPtr handle, Point x)
{
PostMessage(handle, (uint)WMessages.WM_LBUTTONDOWN, 0, MAKELPARAM(x.X, x.Y));
PostMessage(handle, (uint)WMessages.WM_LBUTTONUP, 0, MAKELPARAM(x.X, x.Y));
}

积分是相对于客户端的,所以保存的时候应该这样保存:

    List<Point> plist = new List<Point>();
private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyCode)
{
case Keys.C:
plist.Add(webBrowser1.PointToClient(Cursor.Position));
break;
default:
break;
}
}

希望对你有帮助

关于C# - 如何将 PostMessage 发送到 WebBrowser 中嵌入的 Flash 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com