如何使用WinAPI和&amp ;;制作程序窗口的屏幕截图C#?
我向窗口发送了WM_PAINT (0x000F)
消息,我想截图,wParam = HDC
处理,但我的图片框中没有截图。如果我发送WM_CLOSE
消息,则所有waorking(目标窗口关闭)。我对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);
答案 0 :(得分:2)
您还可以使用纯托管代码截取屏幕截图,而无需互操作。以下代码将捕捉屏幕的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;
答案 1 :(得分:1)
pictureBox.Handle
是一个窗口句柄,而不是DC句柄。有几个在线指南可用于截屏。一个是here。另见@In silico的答案。
答案 2 :(得分:1)