【问题标题】:Overlay text on some else's window - HUD在其他人的窗口上覆盖文本 - HUD
【发布时间】:2010-12-06 11:30:09
【问题描述】:

我有兴趣在 VB.NET 中编写一个将小型平视显示器 (HUD) 覆盖在另一个应用程序上的应用程序。有什么例子吗?

我需要枚举所有打开的窗口以找到我想要的窗口,然后在窗口的特定位置覆盖一些文本。如果用户移动该窗口,我的文本将需要跟随。 (我可能会一遍又一遍地循环绘制文本)。

编辑:没有人回答我的原始查询 - 我将 C# 添加到关键字中,以查看该语言的任何专家是否有答案。

【问题讨论】:

    标签: c# vb.net hud


    【解决方案1】:

    您可以使用 WinApi 枚举窗口。 你可以开始谷歌搜索

    [DllImport("user32.dll")]
    public static extern int EnumWindows(EnumWindowsProc ewp, int lParam);
    
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool GetWindowRect(IntPtr hWnd, ref WapiRect lpRect);
    

    当你找到你的窗口并有了它的句柄后,用类似的东西在上面绘图就没有问题了

    Graphics g = Graphics.FromHwnd(win.Handle);
    g.FillRectangle(new SolidBrush(Color.White), 0, 0, 1000, 1000);
    

    但是要覆盖... 一种可能的解决方案是创建自己的无边框形式(甚至可以变得透明)并将您的文本放在上面。然后只需将此特殊表单放在另一个应用程序的顶部即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      相关资源
      最近更新 更多