为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

远程监控中鼠标光标的抓取

2017-10-16 7页 doc 25KB 19阅读

用户头像

is_668783

暂无简介

举报
远程监控中鼠标光标的抓取远程监控中鼠标光标的抓取 2006 年 6 月 郧阳师范高等专科学校学报 J un. 2006 第 26 卷第 3 期 J o ur nal of Yunyang Teacher s College Vol . 26 No . 3 远程监控中鼠标光标的抓取 何统洲 ,江 锐 ,许丹奇 ()郧阳师范高等专科学校 物理与电子工程系 , 湖北 丹江口 442700 [ 摘 要 ] 屏幕抓取中抓取带有鼠标光标的图像并不是一件容易的事 . 通过给出一种抓取带有鼠标光标 的方法 . 为此 ,对鼠标光标的本质 、原理进行了阐述 ...
远程监控中鼠标光标的抓取
远程监控中鼠标光标的抓取 2006 年 6 月 郧阳师范高等专科学校学报 J un. 2006 第 26 卷第 3 期 J o ur nal of Yunyang Teacher s College Vol . 26 No . 3 远程监控中鼠标光标的抓取 何统洲 ,江 锐 ,许丹奇 ()郧阳师范高等专科学校 物理与电子工程系 , 湖北 丹江口 442700 [ 摘 要 ] 屏幕抓取中抓取带有鼠标光标的图像并不是一件容易的事 . 通过给出一种抓取带有鼠标光标 的方法 . 为此 ,对鼠标光标的本质 、原理进行了阐述 ,并在此基础上给出抓取带有鼠标光标图像的实现方法 . ( ) ( ) ( )[ 关键词 ]透明位图 ;掩码位图 ;鼠标光标 Cur so r;图标 Ico n;热点 Ho t spo t () [ 文章编号 ]1008 —6072 200603 —0036 —03 [ 中图分类号 ] T P393 [ 文献标识码 ] A ( ) bit ma sk屏蔽掉位图一些部分 ,而突出位图的某些部分 . 1 引言 这种屏蔽主要是利用色素合成原理 . 例如 ,在单色位图中 , 位罩的颜色为黑色 . 由于白色和黑色相与就是黑色 ,白色 () 在许多应用 如视频监控中 ,常常需要抓屏 ,在抓屏 与黑色相或就是白色 ,这样为合成时提供了方便 . 时有时需要截取带有鼠标的图像 . 抓屏就是从视频存储区 ( 其基本原理 ,也就是将一幅需要透明显示的位图 其 [ 1 ] ( 取得视频图像 , 简单抓屏并不能 抓 取 鼠 标 光 标 mo use ) 透明色为已知,制作出二幅需要的位图 A 与 B , 其中 A ) cur so r. 这主要是因为鼠标光标和视频 图像在 视 频 存 储 为除透明色外均填充为黑色 ,B 为把透明色填充为黑色其 区的位置不相同 . 那么如何得到带有鼠标光标的图像呢 ? 余色不变 ,再用指定光栅操作将两幅位图合并 ,可形成透 很自然的一种想法 :把鼠标光标作为另一层图像叠加合成 明位图 . 在抓取的屏幕图像上 . 实现这种想法需要解决以下问题 : 计算机中创建透明位图通常采用的步骤是 : ( 首先 ,必须实时地获取抓图时 刻 的 鼠 标 属 性 如 位 置 、形 ) 1利用掩码操作在内存中形成掩码位图 ; ) 状;其次 ,鼠 标 光 标 的 本 质 是 一 种 图 标 , 必 须 清 楚 Wi n2 ) 2使用透明色背景将位图拷贝到内存掩码位图中 ; do w s 中图标的结构 ;另外 ,还必须知道如何将一个图标叠 ) 3利用与白色 相 与 不 变 色 , 与 黑 色 相 与 成 黑 色 的 原 加到一幅位图之上 . 理 ,将内存位图的的背景设置成黑色 、前景设置成白色 ,并 将屏蔽位图用与操作拷贝到此内存位图中 . 形成位图 B . ) 4将显示设备背景设置为白色 ,前景设置成黑色 ,并 将屏蔽位图用与操作拷贝到显示设备 . 形成位图 A . 2 位图合成原理 ) 5将内存位图用或操作拷贝到显示设备中 ,形成最终 的透明位图 . 位图结构简单 、操作方便 . 我们这里只关心与位图合 成有关的两类位图 . 2 . 2 鼠标光标的结构 2 . 1 透明位图和掩码位图 鼠标光标其实就是一幅透明的位图 . 所以要把鼠标光 透明位图 ,顾 名 思 义 , 就 是 包 含 透 明 色 的 位 图 . 所 谓 标合成在某一幅位图上 ,其实就是把一幅透明的位图合成 “透明色”,日常生活中并不少见 ,我们在看到无色玻璃 ,也 在另一幅位图上 . 作为一种位图 ,鼠标光标其实就是由位 ( ) 经常看到有色玻璃 如茶色玻璃,玻璃是透明的 ,这种颜 图 B 和位图 A 所构成 . 在 Windo w s A P I 中 ,鼠标光标位图 色我们称之为“透明色”. 透明位图的 透 明 色 与 此 原 理 类 可以 通 过 ICON IN FO 结 构 来 取 得 . 在 ICON IN FO 结 构 [ 2 ] 似 . 透明位图中包含透明色的区域称为透明区域 . 所以把 中 ,可以看到这两幅位图 hbmMa sk 和 hbmColo r . 由于 一幅透明位图合成在另一幅背景位图上 ,其效果就是我们 在 Windo w s 中 ,鼠标光标分为单色和彩色两种类型 ,所以 只能看到非透明区域 ,透明区域隐去 ,显示的是背景位图 对应的部分 . () 掩码位图 Bit ma sk Bit map 的 功 能 就 在 于 利 用 掩 码 [ 收稿日期 ]2006 - 03 - 16 () [ 作者简介 ] 本文获得郧阳师专校级科研资助 2003C12 () [ 作者简介 ] 何统洲 1969 - ,男 ,湖北郧县人 ,郧阳师范高等专科学校物理与电子工程系副教授 ,主要从事计算机网 hbmMa sk 只定义与位罩 . hbmColo r 对于单色光标是可选 BOOL Get Cur so r Po s 的 ,而对于彩色鼠标光标 ,则是背景色为黑色鼠标光标 . 光标位置点结构地址 L P PO IN T lp Point / / ( 在鼠标结 构 中 , 另 一 个 需 要 注 意 的 就 是 热 点 Ho t s2 ) ; ) po t. 热点标 记 在 图 像 中 鼠 标 指 针 实 际 指 到 的 那 个 像 素 ) 2Get Ico n Info 函数 点 . 一个图标只能有一个热点 . 作为图标 ,鼠标光标热点和 功能 :提取指定的光标或者图标信息 鼠标位图所在矩形框的左上角的点有时是不一致的 . 所以 (在合成鼠标指针时 ,必须进行处理 . BOOL Get Ico n Info H ICON h Ico n , / / 图标句柄 P ICON IN FO pico ninfo/ / 图标结构地址 ) 3 实现; 需要特别解释的就是图标结构 ,它定义了图标和光标 的一些有用信息 . 在 V C + + 中 ,图标结构定义如下 : 3 . 1 Windo w s 中如何得到当前鼠标的句柄 通常只需用到 Get Cur so r 函数 ,但是当 Cur so r 的属主 t yp edef st r uct _ ICON IN FO 不是当前线程所在的窗口时 ,必须稍作处理才能取得鼠标 { BOOL f Ico n ; 光标的句柄 . 具体可以参见下面函数 : DWO RD x Ho t spo t ; ()HCU RSO R Get Cur rent Cur so r Ha ndle DWO RD y Ho t spo t ; { HB I TMA P hbmMa sk ; PO IN T p t ; HB I TMA P hbmColo r ; H WND h Wnd ; } ICON IN FO , 3 P ICON IN FO ; DWO RD dw Thread ID , wCur rent Thread ID ; ( ) 其中 ,f Ico n 区 分 当 前 结 构 是 图 标 Ico n 还 是 光 标 HCU RSO R hCur so r = N ULL ; ( ) Cur so r. f Ico n = TRU E , 结构 信 息 为 图 标 信 息 , 否 则 , 结 构信息为光标信息 ; x Ho t spo t 、y Ho t spo t 指定图标或者光 / / 确定鼠标光标属于哪个窗口 ( ) ( ) 标的热点的坐标 . 如果为图标 Ico n的话 ,热点 Ho t spo t ( ) Get Cur so r Po s &p t; 处在图标的中心 ; hbmMa sk 为 图标的掩码位图句柄 , hb2 () h Wnd = Windo w Fro m Point p t; mColo r 为图标的彩色位图句柄 . / / 取得光标属主的线程 ID. 3 . 3 Windo w s 中常用的一些光栅操作 Windo w s 中完成位块操作的函数通常有 BitBlt 函数 ( dw Thread ID = Get Windo w Thread Proce ss Id h Wnd , 和 St retchBlt 函数 . 不同之处在 于 St retchBlt 函数 不仅可 ) N ULL ; 以移动位块 ,还可以对位块进行缩放 . 简单起见 ,本文只用 / / 取得当前线程的 ID 到 BitBlt 函数 . () wCur rent Thread ID = Get Cur rent Thread Id ; (BOOL BitBlt / / 如果光标属主不是当前窗口 ,那么就必须把它附加 HDC hdcDe st ,/ / 目标设备环境句柄 到另一个线程 int nXDest ,/ / 目的矩形左上角的横坐标 / / 这样才能用 Get Cur so r 函数取得正确的光标句柄 int n YDest ,/ / 目的矩形左上角的纵坐标 ( ) if dwCur rent Thread ID ! = dw Thread ID{ int nWidt h ,/ / 目的矩形的宽度 / / 需要附加进拥有光标的线程 int n Height ,/ / 目的矩形的高度 ( ( if At tach Thread Inp ut dwCur rent Thread ID , dw Threa2 HDC hdc Src , / / 源设备环境句柄 int nXSrc ,/ / 源矩形左上角的横坐标 ) ) d ID , TRU E{ int n YSrc ,/ / 源矩形左上角的纵坐标 () hCur so r = Get Cur so r ; DWO RD dw Rop / / 光栅操作码 (/ / 用完后脱离拥有光标的线程 At tach Thread Inp ut ) ; ) dwCur rent Thread ID , dw Thread ID , FAL SE; ? } } el se () = Get Cur so r ; hCur so r ret ur n hCur so r ; 何统洲 ,江 锐 ,许丹奇 : 远程监控中鼠标光标的抓取 CRect cur Rect ; / / 抓取窗口的矩形区 } / / hdcBmp 为目的位图设备上下文句柄 如果鼠标图标位图是彩色位图 el se/ / { HDC hdc , hdcBmp ,hDCSo urceA ND ,hDCSo urceO R ; ( () ) Get O bject ii . hbmMa sk , sizeof B I TMA P, &bm ; HB I TMA P hCurB mp , hSo urce , hOldSo urce , hSo urce2 , hSo urce = ii . hbmMa sk ; hOl dSo urce2 ; hSo urce2 = ii . hbmColo r ; hOldSo urce = / / 取鼠标当前位置 ( ) ( ) HB I TMA PSelect O bject hDCSo urceA ND , hSo urce; ( ) Get Cur so r Po s &mo use Po s; / / 取得当前鼠标光标句柄 hOldSo urce2 = () hCur so r = Get Cur rent Cur so r Ha ndle ; ( ) ( ) HB I TMA PSelect O bject hDCSo urceO R , hSo urce2 ; / / 取鼠标光标信息 ( BitBlt hdcBmp ,mo use Po s. x - cur Rect . lef t , mo use Po s. ( ) Get Ico n Info hCur so r , ⅈ y - cur Rect . top , bm. bmWidt h , bm. bm Height , hDC2 ) So urceA ND , 0 , 0 , SRCA ND; ( BitBlt hdcBmp ,mo use Po s. x - cur Rect . lef t , mo use Po s. / / 修正位置 y - cur Rect . top , bm. bmWidt h , bm. bm Height , hDC2 ()if ii . x Ho t spo t ! = 0 ) So urceO R , 0 ,0 , SRCPA IN T; mo use Po s. x - = ii . x Ho t spo t ; } ()if ii . y Ho t spo t ! = 0 mo use Po s. y - = ii . y Ho t spo t ; 4 结束语 / / 判断鼠标类型 / / 黑白鼠标位图处理 本文阐述鼠标光标 的本质 、位 图合成原理 、Windo w s ()if ii . hbmColo r = = N UL L 中有关鼠标的 A P I ,同时给出鼠标合成实现方法 . 其实 ,鼠 { 标指针作为一种指点设备 ,常常需要合成在某一幅位图之 上 . 实际很多的应用 ,如视频捕捉 、远程控制 、远程监视和 (() ) Get O bject ii . hbmMa sk , sizeof B I TMA P, &bm ; / / 单色鼠标位图存放鼠标的 A ND/ O R 位图 远 程 演 示 和 教 学 等 , 常 常 要 用 到 抓 取 带 有 鼠 标 光 标 的 图像 . bm. bm Height / = 2 ; h So urce = ii . hbmMa sk ; hOldSo urce = [ 参考文献 ] ( ) ( ) HB I TMA PSelect O bject hDCSo urceA ND , h So urce ; ( BitBlt hdcBmp , mo use Po s. x - cur Rect . lef t , mo use Po s. [ 1 ] 张 又 生. 远 程 控 制 编 程 技 术 [ M ] . 北 京 : 电 子 工 业 出 版 y - cur Rect . top , bm. bmWidt h , bm. bm Height , hDC2 社 ,2002 . ) So urceA ND , 0 , 0 , SRCAND; [ 2 ] Richa r d C. L er necker & To m A rcher . Vi sual C + + 宝典 [ M ] . ( 北京 : 电子工业出版社 ,2001 . BitBlt hdcBmp , mo use Po s. x - cur Rect . lef t , mo use Po s. y - cur Rect . top , bm. bmWidt h , bm. bm Height , hDC2 ) So urceA ND , 0 ,bm. bm Height , SRCPA IN T; 【编校 :胡军福】 Ca p t u r i n g M o us e C u r s o r i n R e m o t e M o n i t o r i n g H E To ng - zho u , J IA N G - Rui , XU Da n - qi ()Dep art ment of Physic s a nd Elect ro nics Engineering , Yunya ng Teacher s’ College , Da njia ngko u 442700 , China A bs t r a c t : It i s no t ea sy to cap t ure t he screen image wit h mo use cur so r . The p ap er will tal k abo ut ho w to cap t ure t he screen pict ure wit h mo use cur so r . To achieve it , t he p aper will st udy t he e ssence a nd p rinciple of mo use cur so r s , and im2 plementing t he met ho d in V C + + . Ke y w o r ds : t ra nsp arent bit map ; bit ma sk bit map ; mo use cur so r ; ico n ; ho t spo t
/
本文档为【远程监控中鼠标光标的抓取】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索