怎样截屏,才能取得WINXP里被屏幕保护或被登录窗口遮盖的内容?(200分)

W

weiliu

Unregistered / Unconfirmed
GUEST, unregistred user!
比如一台机器上有许多程序在运行,现在做了个程序来监控机器的运行状态,每隔几秒去截一下屏,然后把截下的图片存成JPG文件放在硬盘上,利用如下程序,一般情况下是正常的,但如果碰到有屏幕保护或是WINDOWS的锁定屏幕,就会只截到一张白屏,谁有办法截到WINXP里被屏幕保护或被登录窗口遮盖的内容?

procedure SaveSrcToJPEGFile(const FileName:String;iQuality:integer);
var
SrcWidth,SrcHeight:integer;
DC:HDC;
FBitmap:TBitmap;
FJPEGImage:TJPEGImage;
begin
DC:=GetDC(0);
FBitmap:=TBitmap.Create;
FJPEGImage:=TJPEGImage.Create;
try
SrcWidth:=Screen.Width;
SrcHeight:=Screen.Height;
FBitmap.Width:=SrcWidth;
FBitmap.Height:=SrcHeight;
BitBlt(FBitmap.Canvas.Handle,0,0,SrcWidth,SrcHeight,DC,0,0,SRCCOPY);
FJPEGImage.Assign(FBitmap);
FJPEGImage.CompressionQuality:=iQuality;
FJPEGImage.Compress;
FJPEGImage.SaveToFile(FileName);
finally
FBitmap.Free;
FJPEGImage.Free;
end;
end;
 
枚举窗口然后调PrintWindow这个API
 
wr960204太狠了
 
问题是处在锁定状态时(就是要输入用户名及密码才能进WINDOWS那里)调用那个API管用吗?
 
启动计算机登陆前是不行的.如果你登陆进去以后在锁定是可以的.
以前我做过的.
要递归枚举每个窗口和窗口的子窗口.PrintWindow以后把子窗口的图像合成到窗口上.
 
正好用得上,
关注一下。
 
谢谢wr960204,你既然做过类似的东档,那能否提供一小段代码啊,我从未这样用过,或者哪里有参考资料也行啊。先谢了!分不够可以另外再送。
 
顶部