【问题标题】:How to draw a box around a third party window using c#?如何使用 C# 在第三方窗口周围绘制一个框?
【发布时间】:2011-01-18 19:13:15
【问题描述】:

如何在第三方窗口周围画一个矩形?我有那个窗口的句柄并且有窗口的大小。我在窗口周围绘制了一个矩形,但是当我打开其他一些应用程序时,它没有附加到窗口上,相同的矩形出现在该应用程序的顶部。如何将其保留在后台或附加到我的窗口中

我现在使用的代码

IntPtr desktop = GetDC(IntPtr.Zero);
while (true)
{
  using (Graphics g = Graphics.FromHdc(desktop))
  {
    RECT rct = new RECT();
    GetWindowRect(wnd.hWnd, ref rct);
    Rectangle rect = new Rectangle(rct.Left - 2, rct.Top - 2, (rct.Right - rct.Left) + 2, (rct.Bottom - rct.Top) + 2);
    Pen myPen = new Pen(System.Drawing.Color.Red, 5);
    g.DrawRectangle(myPen, rect);
    g.Dispose();
  }
}

谢谢

【问题讨论】:

    标签: c# forms graphics window


    【解决方案1】:

    进程主窗口的句柄不会总是对您有所帮助,因为某些应用程序,如 yahoo messenger 会显示辅助窗口。可能您想突出显示活动窗口。您可以获得活动窗口的句柄,一旦拥有它,就可以获取它所覆盖的区域,您可以在该位置显示您的叠加层。

    【讨论】:

    • 嗨谢谢...我只是以某种方式对其进行了排序,不确定它是否正确。现在我遇到了一个问题,比如盒子没有连接到窗口上。它停留在所有窗口的顶部。例如,如果我在 yahoo messanger 窗口周围绘制一个矩形并打开 IE,则该矩形会在顶部 od IE 上看到,但与 yahoo messanger 屏幕的大小相同。如何纠正它。我已经编辑了问题并粘贴了当前代码。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多