フルスクリーンアプリケーションであっても、任意のウィンドウの上に表示されるデータを表示するために、グラフィカルオーバーレイを実行することを検討しています。
APIフックを使用してアクティブなウィンドウを取得できます。これにより、グラフィックオブジェクトを作成し、アクティブなウィンドウの上に描画できます。これは、ほぼ私が探しているものです。唯一の問題は、drawstring呼び出しを使用しようとすると、そのウィンドウの境界を使用してデータを引き出すことです。
したがって、呼び出し:
gphx.DrawString("test", New Font("Tahoma", 12), New SolidBrush(Color.Red), New PointF(0, 0))
タイトルバーではなく、フォームの使用可能領域の左上隅に「テスト」が表示されます。フォームの使用可能領域をキャンバスとして使用しているため、その呼び出しで負の数を使用することもできません。そのため、表示されていない領域に描画するだけになります。
私の目標は、ウィンドウがどこにあるかに関係なく、データを常に画面の同じ場所に表示することです。
APIフックアクティブなウィンドウを取得するために使用されます。
<Runtime.InteropServices.DllImport("user32.dll")>
Public Function GetForegroundWindow() As IntPtr
End Function
画面のハンドルを取得する機能(私は真剣に疑っています)または画面に直接描画する方法はありますか?
これを実現するためにDirectXライブラリを使用する必要はありませんが、GDI +または他のAPI呼び出しでそれが不可能な場合は、そのルートを使用する必要があります。