我正在寻找一个图形叠加来显示一些将在任何窗口之上的数据,甚至是全屏应用程序。
我可以使用API钩子来获取活动窗口,这将允许我创建一个图形对象并在活动窗口之上绘制,这几乎是我正在寻找的东西。唯一的问题是,当我尝试使用一个束带调用时,它会使用该窗口的边界来绘制数据。
所以电话:
gphx.DrawString("test", New Font("Tahoma", 12), New SolidBrush(Color.Red), New PointF(0, 0))
会在表单的可用区域的左上角显示“test”,甚至不会在标题栏中显示。你甚至不能在那个调用中使用负数,因为它使用了表单可用区域作为画布,所以你最终只是绘制到一个不可见的区域。
我的目标是让数据始终显示在屏幕的同一位置,无论窗口位于何处。
API Hook用于获取活动窗口。
<Runtime.InteropServices.DllImport("user32.dll")>
Public Function GetForegroundWindow() As IntPtr
End Function
是否有功能可以获取屏幕的句柄(我非常怀疑)或直接绘制到屏幕的方法?
我宁愿不必使用DirectX库来实现这一目标,但如果GDI +或其他API调用无法实现,我将不得不走这条路。