C# 使用WinAPI的窗口截图
如何使用WinAPI&C制作程序窗口的屏幕截图 我将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
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;