3

WinAPI と C# を使用してプログラム ウィンドウのスクリーンショットを作成する方法は?

WM_PAINT (0x000F)スクリーンショットを作成したいウィンドウにメッセージを送信してwParam = HDC処理しますが、ピクチャボックスにスクリーンショットがありません。メッセージを送信するWM_CLOSEと、すべてが起動します (ターゲット ウィンドウが閉じます)。私が間違っていることは何WM_PAINTですか?HDC は PictureBox (WinForms) コンポーネントではないのでしょうか? PSGetLastError() == ""

[DllImport("User32.dll")]
public static extern Int64 SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
  .....

SendMessage(targetWindowHandle, 0x000F, pictureBox.Handle, IntPtr.Zero);
4

3 に答える 3

1

相互運用を必要とせずに、純粋に管理されたコードを使用してスクリーンショットを撮ることもできます。次のコードは、画面の 100x100 領域のスナップを取得します。もちろん、フルスクリーンに調整できます。キー機能はGraphics.CopyFromScreen

  Bitmap bmp = new Bitmap(100,100);
  using (Graphics g = Graphics.FromImage(bmp))
  {
    g.CopyFromScreen(0, 0, 0, 0, new Size(100, 100));        
  }
  pictureBox1.Image = bmp;
于 2010-05-16T13:10:37.083 に答える
0

pictureBox.HandleDC ハンドルではなく、ウィンドウ ハンドルです。スクリーンショットを作成するためのオンライン ガイドがいくつかあります。一つはここにあります。@In silicoの回答も参照してください。

于 2010-05-16T10:36:43.520 に答える
0

http://www.developerfusion.com/code/4630/capture-a-screen-shot/を参照してください。

于 2010-05-16T11:04:02.010 に答える