文档章节

如何使用系统级热键捕捉当前窗口保存为 png 图片 - 回复 "巅枫" 的问题

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 297
阅读 12
收藏 0
点赞 0
评论 0

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

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

unit Unit1;

interface

uses
  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 或 png
procedure 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、F9
procedure 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); //F9
end;

//处理系统热键
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = HotKeyId[0] then GetPicture;       //存 bmp
  if Msg.HotKey = HotKeyId[1] then GetPicture(true); //存 png
end;

//销毁系统热键
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.

本文转载自:http://www.cnblogs.com/del/archive/2011/01/15/1936233.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
红蜻蜓抓图精灵(RdfSnap)2017绿色版64位下载

红蜻蜓抓图精灵2107的英文名为RdfSnap,是一款完全免费的专业级屏幕捕捉软件,它拥有长网页滚屏捕捉、定时自动截、图捕捉图像预览、图像编辑、延迟捕捉、捕捉层叠菜单、水印添加、外接图片编辑...

weixin_42030895
05/10
0
0
如何使用 Eclipse 给 Android 模拟器截屏

如果你是一个Android开发者,想要对你的应用程序进行截屏,用来完成文档,或把它提交到谷歌市场。如今的智能手机都很容易做到,如三星Galaxy系列的Android手机就有屏幕快照。但有些时候,我们...

迷途d书童
2012/09/06
3.9K
15
如何在MyEclipse中编辑图片

获取快速图像预览 MyEclipse中提供了一个视图选项允许您浏览图片文件夹(通过在Package Explorer),不用在一个单独的图像编辑器中打开它们来显示图像。图像预览选项提供了基本的放大/缩小图...

百mumu
2016/06/15
232
0
obs-studio源码分析(一):窗口、显示器(桌面)捕捉

windows下窗口、桌面捕捉有多种方式。如下: 1:使用GDI函数或者Windows Media API函数 2:使用DirectX技术 3:使用api hook技术(如D3D游戏捕捉) 4:使用图形驱动技术 obs的窗口、桌面捕捉...

balijinyi
05/11
0
0
Windows中系统范围热键的实现方法

在Windows环境下运行的程序,大多数都支持热键,热键一般被人们称为快捷键,例如:大多数Windows程序都支持“复制”和“粘贴”操作,它们的快捷键一般是:“Ctrl+C”和“Ctrl+V”;在“记事本...

余二五
2017/11/09
0
0
Photoshop脚本 > 压缩并输出PNG图片

本节将演示如何使用脚本,将当前文档转换为PNG格式。首先创建一个空白的脚本文档,并保存在硬盘上某个位置。 首先创建一个空白的脚本文档,并保存在硬盘上某个位置。 接着输入脚本代码: //...

fzhlee
2017/05/26
0
0
前端每周清单第 34 期:Vue 现状盘点与 3.0 展望,React 代码迁移与优化,图片优化详论

前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公...

王下邀月熊
2017/10/09
0
0
为编写网络爬虫程序安装Python3.5

下载Python3.5.1安装包 1.1 进入python官网,点击menu->downloads,网址:Download Python 1.2 根据系统选择32位还是64位,这里下载的可执行exe为64位安装包 2. 安装Python3.5 2.1 双击打开安...

fullerhua
2016/09/28
373
0
别找了,最好用的截图软件已经帮你找好了

今天给大家带来两款非常好用的截图软件,基本上有了他俩,市场上的其他截图类的软件都可以视而不见。 一 、FastStone Capture FastStone Capture 是一款出色的屏幕捕捉(截图)软件,它集图像...

我是徐老师呀
04/25
0
0
5、树莓派连接官方CSI摄像头的使用

本篇博文大部分转https://blog.csdn.net/u013162035/article/details/78580486 其中有部分细节根据自己的实际操作进行了修改 5.1树莓派基本操作 目前提供了三个应用程序,分别为:raspistil...

fhqlongteng
05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell及python脚本方式登录服务器

一、问题 在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn...

yangjianzhou
6分钟前
0
0
upstream sent too big header while reading...

nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; ......

dubox
17分钟前
0
0
Python解析配置文件模块:ConfigPhaser

import configparser as pa# [SectionA]# a = aa# b = bb# c = cc# [SectionB]# optionint = 1# optionfloat = 1.1# optionstring = string#https://www.cnblogs.com/a......

易野
23分钟前
0
0
Java基础——面向对象

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Object的方法: clone() Object 克隆 to Strin...

凯哥学堂
25分钟前
0
0
rabbitmq学习记录(八)消息发布确认机制

RabbitMQ服务器崩了导致的消息数据丢失,已经持久化的消息数据我们可以通过消息持久化来预防。但是,如果消息从生产者发送到vhosts过程中出现了问题,持久化消息数据的方案就无效了。 Rabbit...

人觉非常君
29分钟前
0
0
毕业5年,我是怎么成为年薪30W的运维工程师

#转载# 我在大学读的是计算机专业,但大学毕业之后,进入到一家私企进行工作,工作的内容类似于网管,会经常的去修电脑,去做水晶头等内容。刚开始工作,也没想太多,最想的是丰富自己的工作...

Py爱好
37分钟前
1
0
大数据基础知识,大数据学习,涉及的知识点

一、什么是大数据 一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流 转、多样的数据类型和价值密度低四大特征。...

董黎明
52分钟前
0
0
Linux CentOS 7上安装极点五笔

话说几天前在新买的惠普笔记本上成功地安装了Linux CentOS 7操作系统、Nvidia Quandro P600驱动程序及X Window,并在VMware下安装Red Hat教学环境,彻底跳出Windows的苦海,但仍然有一件事不...

大别阿郎
今天
17
0
2018年7月20日集群课程

一、集群介绍 集群,简单地说是指一组(若干个)相互独立的计算机,利用高速通信网络组成一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。 ...

人在艹木中
今天
0
0
spark开发机中调试snappy

目的 在Idea中的点击运行,使spark可以直接读取snappy 自己编译hadoop,以支持snappy的压缩。 自己编译的目的就是要得到支持snappy文件读写的动态链接库。如果可以在网上下载,可以跳过自行编...

benny周
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部