Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WinAPI的窗口截图_C#_C++_Winapi_Sendmessage - Fatal编程技术网

C# 使用WinAPI的窗口截图

C# 使用WinAPI的窗口截图,c#,c++,winapi,sendmessage,C#,C++,Winapi,Sendmessage,如何使用WinAPI&C制作程序窗口的屏幕截图 我将WM_PAINT(0x000F)消息发送到窗口,我想截屏,wParam=HDC句柄,但我的picturebox中没有截屏。如果我发送WM_CLOSE消息,则所有WAWorking(目标窗口关闭)。我对WM_PAINT有什么错?可能HDC不是PictureBox(WinForms)组件?注意:GetLastError()==“” pictureBox.Handle是窗口句柄,而不是DC句柄。网上有几个截图指南。一个是。另请参见@In silico

如何使用WinAPI&C制作程序窗口的屏幕截图

我将
WM_PAINT(0x000F)
消息发送到窗口,我想截屏,
wParam=HDC
句柄,但我的picturebox中没有截屏。如果我发送
WM_CLOSE
消息,则所有WAWorking(目标窗口关闭)。我对WM_PAINT有什么错?可能HDC不是PictureBox(WinForms)组件?注意:GetLastError()==“”


pictureBox.Handle
是窗口句柄,而不是DC句柄。网上有几个截图指南。一个是。另请参见@In silico的答案。

请参见

您还可以使用纯托管代码拍摄屏幕截图,而无需进行互操作。下面的代码将捕捉屏幕的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;

那你写什么呢?要在任何位置复制图像,请单击“否”。我需要截图不活跃的窗口,而不使他们活跃。只需发送WM_颜料给他们,并获得回复。
  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;