在别人的窗口上叠加文字 – HUD

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

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

编辑:没有人回答我的原始查询 – 我在关键字中添加了C#,以查看该语言中是否有任何大师可能有答案。

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

但要叠加……一种可能的解决方案是创建自己的边框更少的forms(它甚至可以透明)并将文字放在上面。 然后将此特殊表单放在另一个应用程序的顶部。