关于抓屏的一些问题--需要真正的专家

pai 2004-03-31 10:41:26
网上已经有很多关于抓屏的代码,主要代码如下:
bitblt(image1.canvas.handle,0,0,image1.width,image1.height,getdc(0),0,0,srccopy);

在一般情况下,能正常获取当前的屏幕的图像。

问题是,在win2000中,当屏幕被锁定的时候,或者是出现屏保的时候,此时抓的图就是一片"白色"。

很是奇怪。

问如何解决这个问题。是GetDC(0)的问题吗?
还有没有其他的获取设备的方案?
...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
netying 2004-04-20
  • 打赏
  • 举报
回复
帮你关注了
fancy18 2004-04-20
  • 打赏
  • 举报
回复
怎么没人回应?
看来在这是找不到答案的了!
fancy18 2004-04-20
  • 打赏
  • 举报
回复
关注,我也是同样的问题。
还有
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%
ehom 2004-04-20
  • 打赏
  • 举报
回复
屏保绝对可以抓~~~当然这种抓图方式如果是DirectDraw直接写屏的屏保当然没办法,只能是GDI写屏的才行

GetDC后要记得要用ReleaseDC释放DC

任何程序这样连续执行都将消耗光资源,这和抓屏无关
xzhifei 2004-04-01
  • 打赏
  • 举报
回复
在NT下,其实有三个桌面:
1。Winlogon桌面,用于用户登录操作;
2。屏幕保护桌面
3。系统桌面,就是我们常用的桌面


你GetDC(0)只能获得当前桌面,所有要用SwitchDesktop等API来打开其它桌面
pai 2004-04-01
  • 打赏
  • 举报
回复
请具体些!

如果我想得到“Winlogon桌面”,“屏幕保护桌面”,应该如何修改代码。而且如何判断系统处于那个状态,是通过抓屏后的图判断,还是有更好的方法。

我想写一个通用的抓屏程序。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧