如何使用WinAPI & C#制作程序窗口的屏幕截图?
我向窗口发送WM_PAINT (0x000F)
消息,我想截屏,wParam = HDC
处理,但我的图片框中没有截屏。如果我发送一条 WM_CLOSE
消息,所有工作(目标窗口关闭)。我对 WM_PAINT
做错了什么?可能是 HDC 不是 PictureBox (WinForms) 组件?附言GetLastError() == ""
[DllImport("User32.dll")]
public static extern Int64 SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
.....
SendMessage(targetWindowHandle, 0x000F, pictureBox.Handle, IntPtr.Zero);
最佳答案
您还可以使用纯托管代码截取屏幕截图,而无需互操作。以下代码将截取屏幕的 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;
关于c# - 使用 WinAPI 的窗口截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2843357/