//截屏:var
aBmp:TBitmap;
aJpg:TJpegImage;
aCanvas:TCanvas;
begin
aCanvas := TCanvas.Create;
aCanvas.Handle := GetDC(0);
aBmp := TBitmap.Create;
aBmp.Width := Screen.Width;
aBmp.Height := Screen.Height;
aBmp.Canvas.CopyRect(aBmp.Canvas.ClipRect,aCanvas,aBmp.Canvas.ClipRect);
aCanvas.Free; aJpg := TJpegImage.Create;
aJpg.Assign(aBmp);
aBmp.Free;
aJpg.SaveToFile('c:\test.Jpg');
aJpg.Free;
end;如果改为某个窗口,GetDC的参数改为该窗口的句柄.
可以用FindWindow或SetCapture+WindowFromPoint(由于VCL的TControl类在鼠标事件中对SetCapture和ReleaseCapture进行了调用,SetCapture不太好用,可以改为不使用VCL框架的方法)来得到窗口句柄. ____ ____
\ p \ / g /
\ l \_/ n /
\ a o /
\ i s /
\ n /
\_/
aBmp:TBitmap;
aJpg:TJpegImage;
aCanvas:TCanvas;
begin
aCanvas := TCanvas.Create;
aCanvas.Handle := GetDC(0);
aBmp := TBitmap.Create;
aBmp.Width := Screen.Width;
aBmp.Height := Screen.Height;
aBmp.Canvas.CopyRect(aBmp.Canvas.ClipRect,aCanvas,aBmp.Canvas.ClipRect);
aCanvas.Free; aJpg := TJpegImage.Create;
aJpg.Assign(aBmp);
aBmp.Free;
aJpg.SaveToFile('c:\test.Jpg');
aJpg.Free;
end;如果改为某个窗口,GetDC的参数改为该窗口的句柄.
可以用FindWindow或SetCapture+WindowFromPoint(由于VCL的TControl类在鼠标事件中对SetCapture和ReleaseCapture进行了调用,SetCapture不太好用,可以改为不使用VCL框架的方法)来得到窗口句柄. ____ ____
\ p \ / g /
\ l \_/ n /
\ a o /
\ i s /
\ n /
\_/
解决方案 »
- 请教一个Tcxgrid的问题
- IdTCPClient取消接受文件后,IdTCPServer死掉了,请问怎么解决。
- delphi中adoquery控件add.sql()的sql语句问题
- 如何实现让memu有横向的滚动条(意思是说我的窗体里有17个子菜单但是只能显示10个,另外的以滚动条形式出现)
- 急!在线等!关于进程间消息传递,谢谢 50分
- 在数据库中我用 sysdate系统时间。可是我想知道这个时间是200401301024的形式还是10:24的形式
- QQ使用的什么数据库??
- 如何规划设计系统【如何成为系分】?进者有分
- 各位有没有想要报考MSE(软件工程硕士)的?对高学费如何看?(版主请留情)
- 如何使用第三方控件?谢谢
- 高分等你拿,只要帮我解决
- access的自增字段,在插入记录时怎么不自动增加1?
但是我发现这类方法如果用语抓取一些启动界面象Photoshop的,就不理想了
因为在显示期间还轮不到我的进程去执行。
如果要实现实时的抓图,可能还要提高进程的优先级,其他方法如上
DC是Device Context ,画图的时候要用到的一个设备上下文,你查GetDC里面有相关的内容。