网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
抓图程序开发实践
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式

前言
本程序是利用通用的热键管理DLL实现的热键功能,在收到热键通知后截取屏幕的内容并保存到bmp文件中。本文提供了全部源代码供大家参考。例如我们设置图片保存路径为c:\,热键为F9 + Control,然后按Change按钮设置好热键,当我们在任意程序中按下CTRL+F9,当前界面将被保存在C:\下的BMP文件中。下面我们来看看程序的实现原理与基本结构。

一、热键管理DLL
这个DLL实际上是一个键盘钩子,由它来监视系统的键盘事件。如果有和程序登记符合的按键和按键组合就通知该程序的窗口。为了应用方便,我把它做成了一个标准的管理库来为其它的程序通过热键服务,它有两个输出函数:AddHotkey和DeleteHotkey,程序只需要调用这两个函数就可以了,如果编译之后不用改变热键,则只需要AddHotkey就可以了。

1. 全局变量

所有的全局变量都放在一个共享段中,定义如下:

#pragma data_seg("shareddata")
    HHOOK hHook =NULL; //钩子句柄
    UINT nHookCount =0; //挂接的程序数目
    static UCHAR HotKey[MAX_KEY] = {0}; //热键虚拟键码
    static UCHAR HotKeyMask[MAX_KEY] = {0}; //组合掩码, control=4,alt=2,shift=1 可以“或”
    static HWND hCallWnd[MAX_KEY] = {0}; //window handle associated with hotkey
    static int KeyCount =0;
    static UCHAR MaskBits =0; //00000 Ctrl=4 & Alt=2 & Shift=1
#pragma data_seg()
关于共享段,有几点重要的说明:
a. 必须在链接选项里指定该段为共享,project->settings->link->object/library,加上/section:shareddata,rws
b. 第二种指定共享段的方法:在def文件的sections里加上一句shareddata read write shared
c. 第三种指定共享段的方法:在程序里加上一句#pragma comment(linker,"section:shareddata,rws")
d. 所有的变量必须初始化,否则链接程序会把它放到普通数据段
e. 如果不初始化变量,需要在段外用“__declspec(allocate("shareddata")) 变量类型 变量名”的方式定义

2. 两个输出函数如下:

//添加热键,如果cKey和cMask均为0则监视所有按键事件
BOOL __declspec(dllexport) __stdcall AddHotkey(HWND hWnd,UCHAR cKey,UCHAR cMask)
{
    BOOL bAdded=FALSE;
    for(int index=0;index<MAX_KEY;index++){
        if(hCallWnd[index]==0){
          hCallWnd[index]=hWnd;
          HotKey[index]=cKey;
          HotKeyMask[index]=cMask;
          bAdded=TRUE;
          KeyCount++;
          break;
        }
    }
    return bAdded;
}
//删除热键
BOOL __declspec(dllexport) __stdcall DeleteHotkey(HWND hWnd,UCHAR cKey,UCHAR  cMask)
{
    BOOL bRemoved=FALSE;
    for(int index=0;index<MAX_KEY;index++){
       &

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号