3

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

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

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

4

1 回答 1

4

您可以使用 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);

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

于 2010-03-13T03:21:31.263 回答