打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何使用系统级热键捕捉当前窗口保存为 png 图片

问题来源: http://www.cnblogs.com/del/archive/2009/02/16/1392049.html#2011187

程序运行后, F8 可保存 bmp, F9 可保存 png; 测试保存目录在 C:\temp

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    procedure FormCreate(Sender: TObject);    procedure FormDestroy(Sender: TObject);  private    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;  public  end;var  Form1: TForm1;implementation{$R *.dfm}uses pngimage; //png 支持var  HotKeyId: array[0..1] of Integer; //热键列表//捕捉当前窗口, 保存为 bmp 或 pngprocedure GetPicture(png: Boolean = false);var  r: TRect;  bmp: TBitmap;begin  GetWindowRect(GetForegroundWindow, r);  bmp := TBitmap.Create;  bmp.SetSize(r.Right - r.Left, r.Bottom - r.Top);  BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, GetDC(0), r.Left, r.Top, SRCCOPY);  if png then    TPngImage(bmp).SaveToFile('c:\temp\001.png'else    bmp.SaveToFile('c:\temp\001.bmp');  bmp.Free;end;//注册系统热键 F8、F9procedure TForm1.FormCreate(Sender: TObject);var  i: Integer;begin  for i := Low(HotKeyId) to High(HotKeyId) do    HotKeyId[i] := GlobalAddAtom(PChar(IntToStr(i)));  RegisterHotKey(Handle,HotKeyId[0],0,VK_F8); //F8  RegisterHotKey(Handle,HotKeyId[1],0,VK_F9); //F9end;//处理系统热键procedure TForm1.WMHotKey(var Msg: TWMHotKey);begin  if Msg.HotKey = HotKeyId[0] then GetPicture;       //存 bmp  if Msg.HotKey = HotKeyId[1] then GetPicture(true); //存 pngend;//销毁系统热键procedure TForm1.FormDestroy(Sender: TObject);var  i: Integer;begin  for i := Low(HotKeyId) to High(HotKeyId) do  begin    UnRegisterHotKey(handle,HotKeyId[i]);    GlobalDeleteAtom(HotKeyId[i]);  end;end;end.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Delphi在combobox下拉框里显示图片,Delphi/Pascal代码片段分享,
delphi 设置敏感键
delphi制作透明窗体
Delphi的图形处理(一)
delphi多线程编程
Delphi自动检测U盘插入
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服