载获exttextoutW 非中文 返回的lpstring是个乱码
admin | 屏幕取词 | 2013-04-01
看看fuOptions是否包含ETO_GLYPH_INDEX,如果有的话,说明lpString里存放的不是字符编码,而是Glyph Index,即字符在字库中的索引.
C++
[cce_cpp]
if (uOption & ETO_GLYPH_INDEX)
{
if (!CBGrabGlyphstoString(hDC, (LPWORD)lpStr, cbStr, IsFireFox, lpwszBackup))//将索引转换为字符串存在lpwszBackup
}
[/c... [阅读全文]
使用Uniscribe 处理复杂文本
admin | 屏幕取词 | 2013-03-29
Uniscribe
Uniscribe 简介
Uniscribe 是微软推出的一个用于解决复杂文本处理的API 集合。它在Windows 中与GDI 函数集合之间的关系如下图所示:
(该图从http://www.catch22.net/tuts/neatpad/11复制)
当我们需要输出一段文本时,调用文本输出函数ExtTextOut,Windows 内部会进行一次判断过程,如果当前文本是复杂文本,它会先调用Uniscribe ... [阅读全文]
QStarDict
QStarDict 是一款基于 Qt4 的 StarDict 的克隆,它完全兼容 StarDict 的字典,适合于使用 KDE4 朋友使用,节省了使用StarDict加载gtk+运行环境的系统资源,并且界面也更加协调。
目前 QStarDict 0.12.9 版本已经实现以下功能:
完全兼容已有的 Stardict 辞典,暂不支持树型辞典。
支持屏幕取词,通过 D-bus 支持在 Qt4 应用程序中的屏幕取词。
支持通... [阅读全文]
屏幕取词功能和防屏幕取词
admin | 屏幕取词 | 2013-03-16
屏幕抓词的技术实现
屏幕上的文字大都是由gdi32.dll的以下几个函数显示的:TextOutA、TextOutW、ExtTextOutA、ExtTextOutW。实现屏幕抓词的关键就是截获对这些函数的调用,得到程序发给它们的参数。
我的方法有以下三个步骤:
一、得到鼠标的当前位置
通过SetWindowsHookEx实现。
二、向鼠标下的窗口发重画消息,让它调用系统函数重画
通过WindowFromPo... [阅读全文]