回 帖 发 新 帖 刷新版面

主题:高手请进,一般人解决不了的抓屏问题

以下是一段抓屏的代码,我把这些词句复制到一个服务程序时里,为什么只得到一个白屏,
好像是只本就没有抓到屏
var
    Fullscreen:Tbitmap;
    FullscreenCanvas:TCanvas;
    dc:HDC;
begin
    Fullscreen:=TBitmap.Create;
    //创建一个BITMAP来存放图象
    Fullscreen.Width:=screen.width;
    Fullscreen.Height:=screen.Height;
    DC:=GetDC(0);
    //取得屏幕的DC,参数0指的是屏幕
    FullscreenCanvas:=TCanvas.Create;
    //创建一个CANVAS对象
    FullscreenCanvas.Handle:=DC;

    Fullscreen.Canvas.CopyRect(Rect(0,0,screen.Width,screen.Height),
              fullscreenCanvas,Rect(0,0,Screen.Width,Screen.Height));
    //把整个屏幕复制到BITMAP中
    FullscreenCanvas.Free;
    //释放CANVAS对象
    ReleaseDC(0,DC);
    //释放DC

    Image1.Picture.Bitmap:=fullscreen;
    //拷贝下的图象赋给IMAGE对象
    Image1.Width:=fullscreen.Width;
    Image1.Height:=fullscreen.Height;
    fullscreen.free;
    //释放bitmap
end;

回复列表 (共6个回复)

沙发

var
fullscreen:tbitmap;
fullscreencanvas:tcanvas;
dc:hdc;
begin
form1.WindowState :=wsminimized;
form1.hide;
sleep(2000);
fullscreen :=tbitmap.Create;
fullscreen.Width :=screen.Width;
fullscreen.Height := screen.Height;
dc :=getdc(0);
fullscreenCanvas :=tcanvas.Create;
fullscreenCanvas.Handle :=dc;
fullscreen.Canvas.CopyRect(rect(0,0,screen.Width,screen.Height),fullscreenCanvas,
                           rect(0,0,screen.Width,screen.Height));
fullscreenCanvas.Free;
releasedc(0,dc);
image1.Picture.Bitmap :=fullscreen;
image1.Width :=fullscreen.Width;
image1.Height :=fullscreen.Height;
form1.Show;
sleep(2000);
form1.WindowState :=wsnormal

再试试

板凳

你的程序没有问题!

3 楼

一楼的高手师傅!在这个服务进程里是没有FORM1等任何窗体的,请详细指导一下,好吗?谢了

4 楼

这段程序在普通的EXE文件里是没有任何问题的,但在一个服务进程运行之后,他就只能得到一个白屏,别的什么也没有了!

5 楼

那你的Image1放在哪里》?

6 楼

没仔细看你的程序。
建议把防火墙关掉试试

我来回复

您尚未登录,请登录后再回复。点此登录或注册