三。当前工作窗口的抓屏:
当你想抓取当前正激活的窗口,你会怎么做呢,你可以按Ctrl+PrintScreenSysRp.即可以抓 下这个口了。但我们要用程序来实现,怎么做呢,其实非常简单,就是获得这个活动窗口的句柄,再根据这个句柄到该窗口的设备描述表,这样就可以画出这个窗口 了。那么要获得当前工作的窗口是要用到什么函数呢,主要是用到这样一个API:GetForegroundWindow(),它返回当前正在工作的窗口的 句柄。好了,现在给出代码吧:
procedure TForm1.GetActiveWndImg(b:TBitmap);
var C:TCanvas; H:HDC; R:TRect; hand:THandle;
begin
C:=TCanvas.Create;
Hand:= GetForegroundWindow();
if hand=0 then exit;
H:=GetWindowDC(Hand);//取得这个窗口的句柄
try
GetWindowRect(hand,R);//取得这个窗口的大小,将其赋给位图对象
B.Width:=R.Right-R.Left;
B.Height:=R.Bottom-R.Top;
C.Handle:=H;
B.Canvas.CopyRect(Rect(0,0,B.Width,B.Height),C
,Rect(0,0,B.Width,B.Height));
finally
C.Free;
ReleaseDC(Hand, H);
end;
end;
这个运行不起来?