网上已经有很多关于抓屏的代码,主要代码如下:
bitblt(image1.canvas.handle,0,0,image1.width,image1.height,getdc(0),0,0,srccopy);在一般情况下,能正常获取当前的屏幕的图像。问题是,在win2000中,当屏幕被锁定的时候,或者是出现屏保的时候,此时抓的图就是一片"白色"。很是奇怪。问如何解决这个问题。是GetDC(0)的问题吗?
还有没有其他的获取设备的方案?
bitblt(image1.canvas.handle,0,0,image1.width,image1.height,getdc(0),0,0,srccopy);在一般情况下,能正常获取当前的屏幕的图像。问题是,在win2000中,当屏幕被锁定的时候,或者是出现屏保的时候,此时抓的图就是一片"白色"。很是奇怪。问如何解决这个问题。是GetDC(0)的问题吗?
还有没有其他的获取设备的方案?
1。Winlogon桌面,用于用户登录操作;
2。屏幕保护桌面
3。系统桌面,就是我们常用的桌面
你GetDC(0)只能获得当前桌面,所有要用SwitchDesktop等API来打开其它桌面
还有
bitblt(image1.canvas.handle,0,0,image1.width,image1.height,getdc(0),0,0,srccopy);
或
Canvas.CopyRect(Rect(0, 0, screen.Width, screen.Height), FCanvas, Rect(0, 0, screen.Width, screen.Height));
抓屏时速度都很慢,并且当连续抓取时CPU使用率几乎达到100%