我有兴趣在VB.NET中编写一个覆盖小型平面显示器(HUD)而不是另一个应用程序的应用程序。这是一个什么样的例子?
我需要枚举所有打开的窗口以找到我想要的窗口,然后在窗口的特定位置覆盖一些文本。如果用户移动该窗口,我的文本将需要跟随。 (我可能会反复在一个循环中绘制文本)。
编辑:没有人回答我的原始查询 - 我在关键字中添加了C#,以查看该语言中是否有任何大师可能有答案。
答案 0 :(得分: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);
但要覆盖......一种可能的解决方案是创建自己的边框更少的形式(它甚至可以透明)并将文字放在上面。然后将此特殊表单放在另一个应用程序的顶部。