抓屏(100分)

  • 主题发起人 主题发起人 海宁
  • 开始时间 开始时间

海宁

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,在DELPPHI中如何动态捕获当前屏幕,
不是用PRINT SCREEN 键。
 
为何不看看已答问题?
靠cpp赚点分!

var
Fullscreen:Tbitmap;
FullscreenCanvas:TCanvas;
dc:HDC;
begin
timer1.Enabled:=false;
Fullscreen := TBitmap.Create; // create a bimap to save picture
Fullscreen.Width := screen.width;
Fullscreen.Height := screen.Height;
DC := GetDC (0); // get screen dc
FullscreenCanvas := TCanvas.Create; //create screen canvas
FullscreenCanvas.Handle := DC;

Fullscreen.Canvas.CopyRect (Rect (0, 0, screen.Width, screen.Height), fullscreenCanvas,
Rect (0, 0, Screen.Width, Screen.Height));


FullscreenCanvas.Free; //free screen canvas
ReleaseDC (0, DC);
//*******************************
image1.picture.Bitmap:=fullscreen;//哈哈,拿到屏幕了!

image1.Width:=fullscreen.Width;
image1.Height:=fullscreen.Height;
fullscreen.free; //free bitmap

 
我给你个例子.
 
根据那个程序把原理将一下把:
1、建立一个BITMAP
2、取得屏幕的 DC //不要告诉我你不知道什么是 DC
3、取得 DC HANDLE 到那个BITMAP //这样就可以直接操作屏幕了
4、用 CopyRect 方法直接把屏幕的图形取下来
5、你还可以利用这种方法对当前屏幕进行操作,许多屏幕保护都是这么做的,

BTW:实际上这个程序是从某个 DEMO (也许唐晓峰已经发给你了) 中抄下来的
那个 TIMMER 就很说明问题。

GOOD LUCK
 
哈哈,半年多没来,就发现有人拿我编的程序卖钱哪!!!


有空来坐坐:
http://server.nbip.net/michaeljia
 
发个printscreen不就得了,sendmessage或key_event都能做
 
多人接受答案了。
 
后退
顶部