天天看点

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

操作系统:Windows Server 2008 R2

集成开发环境(IDE):Microsoft Visual Studio 2010

开发语言:c#

文件》新建》项目

.NET Framework可以选择2.0版本,也可以选择4.0版本;

项目类型选择:Windows窗体应用程序

输入项目名称,确定

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

项目创建成功,如下图:

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

修改窗体的“FormBorderStyle”属性为“none”,实现一个没有边框的窗体

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

修改后窗口设计器中显示如下:

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

依次按下图修改其它属性,属性值黑体加粗的是修改过的

C#软件开发实例.私人订制自己的屏幕截图工具(二)创建项目、注册热键、显示截图主窗口

属性说明:

ShowIcon=False,不显示窗体的图标;

ShowInTaskbar=False,使窗体不在Windows任务栏中出现;

SizeGripStyle=Hide,禁用拖动窗体右下角可以改变大小的功能;

WindowsState=Minimized,窗口启动后最小化;

设置完这些属性后,编译,运行,程序是在运行状态,但是却看不到程序的窗口;

这里需要使用WindowsAPI

注册热键:RegisterHotKey

RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk);

取消热键注册:UnregisterHotKey

该函数释放调用线程先前登记的热键。

获取热键ID:GlobalAddAtom

只适用于桌面应用程序。

向全局原子表添加一个字符串,并返回这个字符串的唯一标识符(原子ATOM)。

截图窗口实际是一个没有边框,没有菜单,没有工具栏的一个全屏顶层窗口。

当按下热键时,程序首先获取整个屏幕的图片,保存到“screenImage”变量中;然后添加遮罩层,将其设置为窗体的背景图,将窗口大小设置为主屏幕的大小,显示窗口;让人感觉是在桌面上加一个半透明的遮罩层一样。

代码如下:

关闭窗口时,要取消热键注册,代码如下:

到这里,热键注册,截图窗口的显示等功能已经基本完成。

注意:测试本代码时最好在窗体上添加一个按钮,用于关闭或隐藏截图窗口;因为截图窗口是全屏的,不能响应ESC键,所以只能通过任务管理器来结束进程退出。调试时最好是在窗体上添加一个Label控件来显示需要的变量信息,因为截图窗口是顶层的全屏窗口,断点被命中时根本没办法操作VS。

继续阅读