c# - 无法在 Internet Explorer 上绘图

标签 c# .net graphics gdi+

我有以下代码,它在另一个进程的主窗口上绘制一个正方形:

private void DrawOnWindow(string processname)
{
    IntPtr winhandle = GetWindowHandle(processname);
    Graphics grph = Graphics.FromHwnd(winhandle);
    grph.DrawRectangle(Pens.Red, 10, 10, 100, 100);
}

private IntPtr GetWindowHandle(string windowName)
{
    IntPtr windowHandle = IntPtr.Zero;
    Process[] processes = Process.GetProcessesByName(windowName);
    if (processes.Length > 0)
    {
        for (int i = 0; i < processes.Length; i++)
        {
            if (processes[i].MainWindowHandle.ToInt32() > 0)
            {
                windowHandle = processes[i].MainWindowHandle;
                break;
            }
        }
    }
    return windowHandle;
}

当我将“firefox”传递给 DrawOnWindow 方法时,这有效,但当我传递“iexplore”时,它不起作用,我不明白为什么。我需要做什么才能使其在 Internet Explorer 上运行? (IE8)

最佳答案

在 IE 中,您在父窗口上绘图,而 IE8 具有 WS_CLIPCHILDREN 窗口样式集。您需要做的是降低窗口层次结构并准确找出要在哪个子窗口上渲染,然后转到该窗口上的城镇。

关于c# - 无法在 Internet Explorer 上绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1925096/

相关文章:

c# - Word 自动化 : Detect if page break is necessary?

c# - 使用泛型 T 确定编译器选择的重载

c# - 使用 Microsoft.Web.Administration 以编程方式安装 SSL 证书

c# - 在 SQL Server 中反汇编位标志枚举

java - 从行数未知的文本创建图像

c# - 从点云到实体网格

C/D画线包

c# - 如何在 HDF5DotNet 中创建 2D H5Array

c# - 菜单的键盘顺序快捷方式

c# - .net 中的水平 TreeView 控件