如何截取当前窗口为图片(100分)

  • 主题发起人 主题发起人 SilverEagle
  • 开始时间 开始时间
S

SilverEagle

Unregistered / Unconfirmed
GUEST, unregistred user!
我的意思是,截图,要求截取当前窗口
 
form1.GetFormImage.SaveToFile('c:/2.bmp');
 
选择需截的窗口,按住alt键再按printscreen键即可
 
PrintScreen
 
ctrl+print 或alt+print 都能截取,在画板中ctrl+v
 
alt+Print Scree Sys Rq截取当前图
 
选择需截的窗口,按住alt键再按printscreensysrq键即可
 
PrintScreen 附件-》画图-》ctrl+v
 
form1.GetFormImage.SaveToFile('c:/2.bmp');
 
晕,我问的当然是用Delphi编程实现啦。。。。
而且上面的form1.....也不可以
因为我需要截取的是任意Active Window的图片,而不是我自己程序的一个窗口的图片
请大家帮帮忙!
 
得到当前窗口的句枘。然后抓图就可以了。
 
ActiveWindow:=GetActiveWindow;
DC:=GetWindowDC(ActiveWindow);
GetWindowRect(ActiveWindow,Rect);
Bitblt(Image1.Canvas.Handle,0,0,Image1.Width,Image1.Height,DC,0,0,SRCCOPY);
ReleaseDC(ActiveWindow,DC);
 
资源共享:
procedure TForm1.Timer1Timer(Sender: TObject);
var
Bild:TBitmap;
c:TCanvas;
r,t:TRect;
h:THandle;
ExeFilePath:string;
begin
ExeFilePath:=ExtractFilePath(Application.ExeName);
c:=TCanvas.Create;
c.Handle:=GetWindowDC(GetDesktopWindow);
//获得当前活动窗口的句柄
h:=GetForeGroundWindow;
Bild:=TBitmap.Create;
if h<>0 then
//结构t保存该窗口的左上角和右下角的坐标值(相对于屏幕左上角)
GetWindowRect(h,t);
try
r:=Rect(0,0,t.Right-t.Left,t.Bottom-t.Top);
Bild.Width:=t.Right-t.Left;
Bild.Height:=t.Bottom-t.Top;
Bild.Canvas.CopyRect(r,c,t);
//抓屏结果保存在与EXE相同目录下
Bild.SaveToFile(ExeFilePath+'screen.bmp');
finally
Bild.Free;
end;
end;
 
多人接受答案了。
 
后退
顶部