关于远程截取屏幕的问题,大家帮忙啊 ( 积分: 100 )

  • 主题发起人 主题发起人 gnq
  • 开始时间 开始时间
G

gnq

Unregistered / Unconfirmed
GUEST, unregistred user!
我用TClientSocket和TServerSocket做了一个远程抓屏的程序。
可是发现,当一端抓屏的时候,CPU资源一下子升高了,如果连续抓屏,就会影响正常使用电脑。其中关键抓屏代码:
var
image:Tbitmap;
jpgstream:Tjpegimage;
SCanvas:TCanvas;
memoryStream:TMemoryStream;
............

SCanvas:=TCanvas.Create;
SCanvas.Handle:=getDC(0);
image:=Tbitmap.Create;
image.Width:=Screen.Width;
image.Height:=Screen.Height;
image.Canvas.CopyRect(rect(0,0,screen.Width,screen.Height),Scanvas,rect(0,0,screen.Width,screen.Height));
jpgstream:=Tjpegimage.Create;
jpgstream.Assign(image);
jpgstream.CompressionQuality:=50;
jpgstream.Compress;
...........
请问,有什么好方法,可以减少抓屏时CPU的占用啊
 
我用TClientSocket和TServerSocket做了一个远程抓屏的程序。
可是发现,当一端抓屏的时候,CPU资源一下子升高了,如果连续抓屏,就会影响正常使用电脑。其中关键抓屏代码:
var
image:Tbitmap;
jpgstream:Tjpegimage;
SCanvas:TCanvas;
memoryStream:TMemoryStream;
............

SCanvas:=TCanvas.Create;
SCanvas.Handle:=getDC(0);
image:=Tbitmap.Create;
image.Width:=Screen.Width;
image.Height:=Screen.Height;
image.Canvas.CopyRect(rect(0,0,screen.Width,screen.Height),Scanvas,rect(0,0,screen.Width,screen.Height));
jpgstream:=Tjpegimage.Create;
jpgstream.Assign(image);
jpgstream.CompressionQuality:=50;
jpgstream.Compress;
...........
请问,有什么好方法,可以减少抓屏时CPU的占用啊
 
抓屏的时候应该不会占多少CPU资源的吧,可能是你发送的时候才占很多的资源
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1474153
 
抓屏是不会占用很大CPU的
我做过
应该是你在用Socket传输数据的时候出问题
好好看看传输部分
 
图像处理是最大的消耗
 
网上有好多这方面的例子,我以前也照着做了一个,不过只在局域网里用过,可是节图,可以控制别人的机子开机关机重起,结束客户端程序等等功能。
 
有一个VNC的C++写的远程控制软件,你改写成DELPHI就行,速度很快速,我已经改写完了,现在正抽时间写数据传输这一块,在局域网内速度非常快速,而且CPU占用也低
 
多人接受答案了。
 
后退
顶部