私の C# アプリは、ウィンドウが一番上にあるかどうかに関係なく、特定のウィンドウのビットマップをキャプチャできる必要があります。私はこれを(他のstackoverflowの回答のおかげで)PrintWindowで行いますが、基本的にはまさにそれを行います...
...
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);
....
Bitmap thisScreenshot = new Bitmap(Width, Height);
Graphics gfxScreenshot = Graphics.FromImage(thisScreenshot);
IntPtr hdcBitmap = gfxScreenshot.GetHdc();
PrintWindow(stickyProgHandle, hdcBitmap, 0);
gfxScreenshot.ReleaseHdc(hdcBitmap);
...
私が今抱えている唯一の問題は、PrintWindow が呼び出されるたびに、キャプチャしているウィンドウがちらつくことです (そのウィンドウの更新のように)。PrintWindow が実際に私の最良の選択であると仮定すると、どうすればちらつきを取り除くことができますか?
UPDATE1:ちらつきは、アプリケーションのウィンドウではなく、スクリーンショットを取得しているウィンドウにあることに注意してください。