以下是我的截图部分,目标是读取ArrayList path里的各个资料夹路径
动作是资料夹开启->资料夹截图->储存图片->关闭资料夹
截图的程式码是参考
http://ppt.cc/j;fc的指定窗口截图的部分
不晓得是哪里有错误,图一直储存不出来
且在输出视窗中会出现:'System.InvalidOperationException'发生於System.dll
或者不晓得有没有更好或简便的截图方法,恳请指点迷津
public bool pic(ArrayList path)
{
foreach (string i in path)
{
ProcessStartInfo startInfo = new
ProcessStartInfo("explorer.exe");
startInfo.Arguments = i;
Process p = Process.Start(startInfo);
Image img = CaptureWindow(p.Handle);
img.Save(string.Format(@"c:\{0}.jpg",
DateTime.Now.Ticks.ToString()),
System.Drawing.Imaging.ImageFormat.Jpeg);
p.close();
}
return true;
}
public Image CaptureWindow(IntPtr handle)
{
IntPtr hdcSrc = User32.GetWindowDC(handle);
User32.RECT windowRect = new User32.RECT();
User32.GetWindowRect(handle, ref windowRect);
int width = windowRect.right - windowRect.left;
int height = windowRect.bottom - windowRect.top;
IntPtr hdcDest = GDI32.CreateCompatibleDC(hdcSrc);
IntPtr hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc, width,height);
IntPtr hOld = GDI32.SelectObject(hdcDest, hBitmap);
GDI32.BitBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, 0,GDI32.SRCCOPY);
GDI32.SelectObject(hdcDest, hOld);
GDI32.DeleteDC(hdcDest);
User32.ReleaseDC(handle, hdcSrc);
Image img = Image.FromHbitmap(hBitmap);
GDI32.DeleteObject(hBitmap);
return img;
}
※ 编辑: coldwind7810 来自: 118.167.182.239 (12/09 01:25)
1F:→ ideaup: System.Drawing.Imaging.ImageFormat.Png=.Jpeg); 12/09 07:53
感谢楼上大大的回答,没有注意到,现在终於可以截了,但画面还是截不到开启的资料夹
有时候是空的,有时候会截到其他我开启的程式的控制项
※ 编辑: coldwind7810 来自: 118.167.174.73 (12/09 20:10)