本发明专利技术公开了一种带有划词功能的屏幕取词实现方法,包括以下步骤:步骤一:在计算机设备Windows操作系统的dll程序中利用SetWindowsHookEx API函数加载全局鼠标钩子;步骤二:当鼠标悬停的时间超过使用者设定的停留时间,鼠标钩子捕捉到鼠标停留消息WM_MOUSEHOVER后,程序执行以下操作,重画窗口;挂载API钩子,截获API函数;位置匹配;步骤三:当鼠标钩子捕捉到鼠标左键弹起消息WM_LBUTTONUP时,程序执行以下操作,保存剪贴板上的内容;模拟Ctrl+C操作;获得取词内容;恢复剪贴板内容。与现有技术相比,本发明专利技术既能方便用户使用,又能保证取词的通用性和准确性。
【技术实现步骤摘要】
本专利技术涉及屏幕上的取词方法,尤其是在Windows操作系统下的一种带有划词功 能的屏幕取词实现方法。
技术介绍
随着信息时代的来临,各式各样的文字信息充斥在人们的电脑上。有时,为了获取 屏幕上的词语,用户不得不通过复制、粘贴等一系列繁琐的操作来获得该词,这给用户带来 极大不便。人们希望可以通过更简单的操作来提取屏幕上的词语。于是,屏幕上的取词技 术应运而生。现有的屏幕上的取词方法主要有两种一是屏幕取词,该方法通过移动鼠标来直接提取屏幕上鼠标所在位置的词语,采 用该方法,用户获取词语的操作方式简单、快捷,不足之处有二,1.由于分词技术不够成熟, 从而导致取到的词语不够准确,与用户的想法不符,2.有些应用软件采用了一些特殊的文 字输出方式(如Pdf阅读器输出的为图片格式),致使屏幕取词功能在其中完全丧失,给用 户的使用带来不便;二是划词取词,即用户通过拖拽鼠标划取屏幕上的词语来获取词语,与屏幕取词 相比,该方法能够更准确地取到屏幕上的词语,可以在一些屏幕取词取不到的地方取词,但 取词操作较屏幕取词繁琐。为克服屏幕取词和划词取词的不足,我们提出将划词取词和屏幕取词结合起来 使用的方法,取两者取词之优点。将划词取词和屏幕取词相结合,传统的认识是不能实现 的。然而,经过研究我们发现,将屏幕取词和划词取词结合到一起在技术上是完全能够实 现的。因为,在Windows操作系统下,屏幕上的文字大多数都是通过动态库⑶I32.dll中 的 Extl^extOuttExtl^extOutA、I^extOutWJextOutA 四个函数输出的,其中 ExtiTextOutW 和 iTextOutW用于Unicode字符的输出,而ExtiTextOutA和iTextOutA用于ANSI字符的输出,因 此,想要抓取屏幕上的词语只需通过API Η00Κ技术拦截系统对以上API函数的调用,并从 中截获这些函数的参数即可,这便是实现屏幕取词的通用方法。本专利技术在实现上述传统屏 幕取词的基础上,创造性的融入了划词取词的方法,实现了划词取词和屏幕取词的有机结I=I O
技术实现思路
本专利技术的目的在于提供,既能方便用户 使用,又能保证取词的通用性和准确性。本专利技术为解决技术问题所采用的技术方案为本专利技术,包括以下步骤步骤一安装全局鼠标钩子在计算机设备Windows操作系统的dll程序中利用SetWindowsHookEx API函 数加载全局鼠标钩子,用于捕捉鼠标的各个消息;当鼠标钩子捕捉到鼠标停留消息WM_M0USEH0VER时,程序执行屏幕取词操作,其中,所述WM_M0USEH0VER的停留时间,可以根据 使用者的习惯设定;当鼠标钩子捕捉到鼠标左键弹起消息WM_LBUTT0NUP时,程序执行划词 取词操作;步骤二屏幕取词当鼠标悬停的时间超过使用者设定的停留时间,安装的鼠标钩子捕捉到鼠标停留 消息WM_M0USEH0VER后,程序执行以下操作,a.重画窗口通过所述鼠标钩子获取鼠标指针在显示器上当前位置的坐标数据,并将此数据保 存到计算机设备的内存中,根据坐标数据,在鼠标位置下选取一个ΙρχΧΙρχ的微小矩形 框,利用API函数hvalidateRect向该矩形框发送重画消息,重画窗口 ;b.挂载API钩子,截获API函数当计算机设备的Windows系统接收到重画消息时,底层的操作系统会立即调用系 统动态链接库 GDI32. dll 中的 ExtjTextOuttExtjTextOutA JextOutW JextOutA 这些 API 函 数来进行文字输出,此时令程序挂载API钩子,通过API钩子截获进程对上述API函数的调 用,取得该API函数的参数,从而实现对输出字符串的捕捉;c.位置匹配在捕捉到输出字符串后,计算出该字符串所在矩形框的边界的坐标值,然后将计 算机内存中存储的当前鼠标坐标位置与该矩形框的边界坐标做比较,如果鼠标位置在矩形 框内,证明该字符串就是鼠标当前所指向的字符串,直接输出即可;反之不予输出;步骤三划词取词当鼠标钩子捕捉到鼠标左键弹起消息WM_LBUTT0NUP时,程序执行以下操作,a.保存剪贴板上的内容在程序中,应用OpenClipboard函数打开系统剪贴板,再通过GetClipboardData 函数获取剪贴板上的文本内容数据,并将其保存到计算机的内存中,定义其变量名为8_ oldString,再调用CloseClipboard函数关闭系统剪贴板;b.模拟 Ctrl+C 操作在保存完剪贴板上的内容后,程序调用keybcLevent函数分别模拟“Ctrl”和“C” 键被按下,即进行一次复制的操作,鼠标划词的文字内容数据取代剪贴板上原有的内容数 据;c.获得取词内容同上述步骤三a,再次应用所述OpenCl ipboard函数打开剪贴板,利用 GetClipboardData函数将其中的文本内容数据保存到计算机的内存中,以便在应用程序中 使用;再调用所述CloseClipboard函数关闭系统剪贴板;d.恢复剪贴板内容应用所述OpenClipboard函数打开剪贴板,利用^tClipboardData函数将步骤三 a中保存在计算机内存中的gjlc^tring变量值写到剪贴板中,用于恢复剪贴板上原有的 内容;最后调用所述CloseClipboard函数关闭系统剪贴板。本专利技术的有益效果本专利技术采用了全局鼠标钩子,并通过模拟键盘操作 “Ctrl+C”(复制操作)来替换并获取剪贴板上取词内容,实现了划词取词和屏幕取词的有机结合,而且还能够及时回复剪切板中原有的内容数据,与现有的屏幕上的取词方法相比, 具有如下有益效果,一、进程边界墙被打破,在大多数程序中均可正常取到词(如Pdf阅读器输出的图 片格式),即使在部分应用程序中,屏幕取词功能受限,但是有划词取词的补充,依然能够保 障取词功能的正常实现;二、仅通过鼠标移动就可获取屏幕上的词语,方便快捷,省去复制、粘贴等繁琐操 作;三、在方便快捷的同时,取词更有准确性的保证;四、两种取词方式可供选择,用户可根据个人习惯、喜好进行挑选。附图说明图1是本专利技术的屏幕取词的实现方法流程示意图2是本专利技术的划词取词的实现方法流程示意图。具体实施方式如图1和图2所示,本专利技术,其具体实施包 括以下步骤步骤一安装全局鼠标钩子在计算机设备Windows操作系统的dll程序中利用SetWindowsHookEx API函数 加载全局鼠标钩子。关于ktWindowsHookEx函数的具体用法,很多书中都有提到,并且这 不是本专利技术的重点所在,因此这里不再赘述。设定捕捉到鼠标消息后的预处理函数为GetMsgProc。在GetMsgProc需要处理鼠 标的以下几种消息WINAPI GetMsgProc(MSG*msg){if (msg- > message = = WM_M0USEM0VE) { 当鼠标钩子捕捉到鼠标停留消息WM_M0USEH0VER时,可以认为鼠标正悬停于取词 处,此时执行屏幕取词操作,其中,鼠标钩子捕捉到鼠标停留消息WM_M0USEH0VER的停留时 间,可以根据使用者的习惯设定;当鼠标钩子捕捉到鼠标左键弹起消息WM_LBUTT0NUP时, 可以认为用户已经划词完毕,程序执行划词取词操本文档来自技高网...
【技术保护点】
一种带有划词功能的屏幕取词实现方法,其特征在于包括以下步骤:步骤一:安装全局鼠标钩子在计算机设备Windows操作系统的dll程序中利用SetWindowsHookEx API函数加载全局鼠标钩子,用于捕捉鼠标的各个消息;当鼠标钩子捕捉到鼠标停留消息WM_MOUSEHOVER时,程序执行屏幕取词操作,其中,所述WM_MOUSEHOVER的停留时间,可以根据使用者的习惯设定;当鼠标钩子捕捉到鼠标左键弹起消息WM_LBUTTONUP时,程序执行划词取词操作;步骤二:屏幕取词当鼠标悬停的时间超过使用者设定的停留时间,安装的鼠标钩子捕捉到鼠标停留消息WM_MOUSEHOVER后,程序执行以下操作,a.重画窗口通过所述鼠标钩子获取鼠标指针在显示器上当前位置的坐标数据,并将此数据保存到计算机设备的内存中,根据坐标数据,在鼠标位置下选取一个1px×1px的微小矩形框,利用API函数InvalidateRect向该矩形框发送重画消息,重画窗口;b.挂载API钩子,截获API函数当计算机设备的Windows系统接收到重画消息时,底层的操作系统会立即调用系统动态链接库GDI32.dll中的ExtTextOutW、ExtTextOutA、TextOutW、TextOutA这些API函数来进行文字输出,此时令程序挂载API钩子,通过API钩子截获进程对上述API函数的调用,取得该API函数的参数,从而实现对输出字符串的捕捉;c.位置匹配在捕捉到输出字符串后,计算出该字符串所在矩形框的边界的坐标值,然后将计算机内存中存储的当前鼠标坐标位置与该矩形框的边界坐标做比较,如果鼠标位置在矩形框内,证明该字符串就是鼠标当前所指向的字符串,直接输出即可;反之不予输出;步骤三:划词取词当鼠标钩子捕捉到鼠标左键弹起消息WM_LBUTTONUP时,程序执行以下操作,a.保存剪贴板上的内容在程序中,应用OpenClipboard函数打开系统剪贴板,再通过GetClipboardData函数获取剪贴板上的文本内容数据,并将其保存到计算机的内存中,定义其变量名为g_oldString,再调用CloseClipboard函数关闭系统剪贴板;b.模拟Ctrl+C操作在保存完剪贴板上的内容后,程序调用keybd_event函数分别模拟“Ctrl”和“C”键被按下,即进行一次复制的操作,鼠标划词的文字内容数据取代剪贴板上原有的内容数据;c.获得取词内容同上述步骤三a,...
【技术特征摘要】
【专利技术属性】
技术研发人员:姚敏,尹建伟,吕方敏,阙杭宁,沈正伟,吴朝晖,
申请(专利权)人:浙江大学,
类型:发明
国别省市:86[中国|杭州]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。