您的位置:首
页>GetWord>开发者专区>常见技术问题
Q1:
GetWord支持哪些操作系统?
A: GetWord支持下列操作系统:
-
Windows 2000系列: Windows 2000
Professional, Windows 2000 Server, Windows 2000 Advanced
Server
- Windows XP系列: Windows XP Home, Windows XP
Professional
- Windows Server 2003系列
- Windows Vista系列: Windows Vista Starter,
Windows Vista Home Basic, Windows Vista Home Premium,
Windows Vista Ultimate, Windows Vista Small Business,
Windows Vista Professional, Windows Vista Enterprise
Back to top
Q2:
GetWord支持哪些软件开发环境? 支持哪些编程语言?
A:
GetWord支持所有主流的软件开发环境,如Visual Studio 6.0, Visual Studio 2003,
Visual Studio 2005, Delphi 7, C++ Builder等. GetWord支持所有主流的编程语言,
如C++, Visual Basic, Delphi等. 一般来讲, GetWord支持所有支持ActiveX或Raw Dll调用接口的软件开发环境和编程语言系统.
Back to top
Q3:
GetWord支持哪些语言编码格式?
A:
GetWord支持各种常见语言编码格式, 如英文/简体中文/繁体中文/俄语/法语/日语/德语/西班牙语等.
Back to top
Q4:
GetWord支持Unicode吗?
A:
是的, GetWord支持Unicode. 它可以从采用Unicode编码格式的软件系统中正确抓取文字.
此外,GetWord的所有API接口函数也都与Unicode兼容.
Back to top
Q5:
GetWord支持抓取一个给定点(x,y)处的文字吗? 我想抓取鼠标(cursor)或光标(caret)所在处的文字,如何获取其位置?
A: GetWord支持抓取一个给定点(x,y)处的文字,您可以利用GetWord的API函数GetString来获取该处文字.
您可以利用Windows的API函数GetCursorPos和GetCaretPos来获取鼠标(cursor)或光标(caret)所在位置.
Back to top
Q6:
GetWord支持句子捕捉吗? GetWord是否支持同时抓取多行文字?
A: 是的,GetWord支持句子捕捉.
如果句子在一行上,可以用GetString完成抓取,如果句子横跨多行,可以用GetRectString或GetRectStringPairs抓取。此外,GetRectString和GetRectStringPairs也可以抓取到一个给定区域内的一行或多行文字.
Back to top
Q7:
我发现GetWord的GetRectString函数使用了一个内置的文本格式化输出器,我想自己控制一个给定区域内的文字输出,GetWord支持吗?
A:
这种情况下,您可以使用GetWord的API函数GetRectStringPairs来获取该区域内的所有子串以及每个字串对应的矩形位置,然后根据每个子串的矩形位置,自己来控制输出文本的编排格式.
Back to top
Q8:
GetWord和主流的软件系统兼容吗?
A:
GetWord和绝大多数的主流软件系统兼容. 它可以从各种常见的Windows控件中抓取文字,如Dialog,
Toolbar, Menu, EditBox, ComboBox, ListBox, TreeCtrl, 等.
Back to top
Q9:
GetWord是否可以捕捉对话框、表单及控件中的隐藏文字?
A:
GetWord不支持捕捉对话框、表单及控件中的隐藏文字。GetWord仅捕捉屏幕上可见的文字.
如果要捕捉隐藏的文字,比如想捕捉带有很长滚动条表单中的不可见内容,需要先给该表单发送滚动消息,待捕捉的内容滚动到屏幕可见后,就可以用GetWord进行文字捕捉了.
Back to top
Q10:
GetWord是否可以捕捉用Java编写的软件界面上的文字?
A:
GetWord支持部分Java应用程序的抓词. 它可以正确捕捉采用SWT或AWT技术的Java应用程序的文字,
不能捕捉采用Swing技术的Java应用程序的文字. 简而言之,
GetWord仅支持哪些采用Windows本地文本输出函数输出文本的Java应用程序的抓词.
Back to top
Q11:
GetWord支持热键捕捉吗? 我想设置Alt+鼠标左键作为捕捉热键,GetWord支持吗?
A:
GetWord支持热键捕捉.
您可以利用GetWord的API函数EnableHotkeyCapture设置任何键(keys)和鼠标按钮(mouse
buttons)的组合作为捕捉热键.
Back to top
Q12:
GetWord捕捉某些页面时显示的是乱码,比如??等。这是什么原因?
A:
GetWord以Unicode格式返回捕捉到的字符串.
如果捕捉到的文字都显示为??,绝大多数情况下,都是因为没有正确启用Unicode导致的.
多数流行的开发环境缺省都是以ANSI格式编译程序,这些程序不能正确显示本地代码页以外的其它文字。用Unicode重新编译您的程序后,就可以正常显示相应的文字了.
各个开发环境下如何正确启用Unicode开关,编译生成Unicode版本.
Visual C++ 6.0 (VC6)
用Visual C++ 6.0集成开发环境打开项目文件 (*.dsw),
单击"Project"->"Settings" 打开"Project Settings"对话框, 单击"C/C++"标签.
在"Preprocessor definitions"编辑框中,删除_MBCS,然后在编辑框中填入_UNICODE
(Pic.1).
单击"Link"标签, 在"Entry-point symbol"编辑框中,输入wWinMainCRTStartup
(Pic.2), 然后单击"OK"按钮关闭对话框, 重新编译项目.
|
|
|
Pic.1 |
|
Pic.2 |
请参考SDK中的Samples\ActiveX_Demo\VC6Demo以获得进一步的信息.
Visual Basic 6.0 (VB6)
VB6的缺省控件集(如编辑框(textbox), 标签(label),
按钮(button)等)是基于ANSI的,不支持Unicode. 为了在VB6中支持Unicode,
您需要换用一组支持Unicode的控件集. Microsoft给出了一个解决方案:
Q193540: How To Read and Display UNICODE String on Visual Basic
Form
建议您采用VB2005, VB2005可以完全兼容Unicode.
Borland C++ Builder 6.0
(BCB6)
BCB6的缺省控件集(如编辑框(textbox), 标签(label),
按钮(button)等)是基于ANSI的,不支持Unicode. 为了在BCB6中支持Unicode,
您需要换用一组支持Unicode的控件集, 比如TntUnicodeControls. 请参考SDK中的Samples\ActiveX_Demo\BCB6Demo_Unicode以获得进一步的信息.
Borland Delphi 7.0
(Delphi7)
Delphi7的缺省控件集(如编辑框(textbox), 标签(label),
按钮(button)等)是基于ANSI的,不支持Unicode. 为了在Delphi7中支持Unicode,
您需要换用一组支持Unicode的控件集, 比如TntUnicodeControls. 请参考SDK中的Samples\ActiveX_Demo\Delphi7Demo_Unicode以获得进一步的信息.
Visual C# 2005 (C#2005)
C# 2005可以完全兼容Unicode, 无需做任何特别设置.
Visual Basic 2005 (VB2005)
VB 2005可以完全兼容Unicode, 无需做任何特别设置.
Visual C++ 2005 (VC2005)
用VC2005集成开发环境打开项目文件(*.sln). 在"Solution Explorer"视图中, 用右键单击项目,
从弹出的菜单中选择"Properties", 在"Property Pages"设置对话框的左侧选择"Configuration
Properties"->"General", 在"Property Pages"设置对话框右侧的"Project
Defaults"类别中,设置"Character Set"为"Use Unicode Character Set"
(Pic.3), 单击"OK"按钮关闭对话框,然后重新编译项目.
Pic.3
Back to top
Q13:
GetWord是否支持同时对屏幕上的多个点进行文字捕捉?
A: 是的,
GetWord支持同时对屏幕上的多个点进行捕捉.
在这种情况下,您需要做一个循环,每次循环时取出一个要捕捉的点,然后调用GetWord的API函数GetString、GetRectString或GetRectStringPairs完成捕捉.
Back to top
Q14:
我想订购GetWord的源代码. 请问GetWord的源代码是用什么语言编写的?代码结构和注释都很好吗?
A:
GetWord的所有库代码均是由C++语言编写的。可以利用Visual Studio 2003/2005对其进行编译.
整个源代码具有良好的结构和丰富的注释信息.
Back to top
Q15:
GetWord的功能能够满足我们产品的大部分需求,但我们还需要基于GetWord做一些定制工作。你们是否提供这样的定制服务?
收费如何?
A:
我们提供基于GetWord的定制服务.
如果定制的内容比较简单,定制是免费的。如果定制的内容比较复杂,我们需要收取一定的定制费用,具体定制费用的多少需要根据定制内容双方协商议定.
Back to top
Q16:
是否有办法获得鼠标所在处的完整单词?
比如,对于单词Google,不管鼠标指针放在其中哪个字符上,我都想返回单词Google。有办法办到吗?
A: 在单点捕捉模式下,
您只需要指定需要捕捉的点(屏幕坐标系), GetWord每次捕捉时返回两项内容: 1. 给定捕捉点处所在行的完整字符串 2.
给定点所在处字符在整个字符串中的索引位置(zero-based)。比如,您想捕捉鼠标所在处的文字。假设屏幕上显示的文字是:"Many
people use Google to search things. Google is a great searching engine."
如果您把鼠标指针放在第二个Google的第一个'o'字符上, GetWord将返回: 1. 整个字符串: Many people use
Google to search things. Google is a great searching engine. 2.
鼠标所在处字符在整个字符串中的索引位置: 42
在我们的实例程序(您可以在这里找到示例程序,http://www.textcapture.com),
上述两项内容分别为标记为'All Text' 和'Cursor Pos' . 鼠标所在出文字是根据上述两项内容计算获得的.
一般来讲,如果您想返回给定点处的完整单词,比如,对于Google这个单词,如果希望不论鼠标指针放在其中哪个字符上,都返回完整单词Google,一般需要一个字典,根据字典中的内容决定返回什么单词。对于某些简单的情形,可以不用字典而利用正则表达式来确定应该返回什么单词.
为了方便您的使用, GetWord SDK中提供了一个基于正则表达式的例子, 该例子位于GetWord
SDK安装目录中的Sample\PlugIn_Demo\Token目录下
Back to top
Q17:
我用Visual C++
6.0生成Unicode版本的程序,链接器(linker)报告了如下错误:"libcmtd.lib(wincrt0.obj) :
error LNK2001: unresolved external symbol _WinMain@16".
这是什么原因导致的?应该如何修复这个错误?
A:
您需要设置程序的入口点(Entry-point)函数. 请按以下步骤设置: (请参阅
Q12
以获得进一步的信息)
1. 打开项目文件 (*.dsw)
2. 单击"Project"->"Settings..." 打开"Project Settings"对话框
3. 单击"Link"标签,在"Category"组合框下选择"Output"
4. 在"Entry-point symbol"编辑框中输入wWinMainCRTStartup
5. 单击"OK"关闭对话框,然后重新编译项目既可
Back to top
Q18:
我以前安装过GetWord文本抓取引擎,当我更新到最新版本后,重新编译时编译器提示某些函数不可用,这是怎么回事?
A:
这是因为GetWord最新版本的库程序添加了一些新的API函数,
您重新添加对最新版本取词引擎库的引用(reference)既可.
Back to top
Q19:
我的GetWord版本不能进行PDF取词,这是怎么回事?
A:
GetWord支持各种版本的Adobe Acrobat Standard, Adobe Acrobat
Professional, Adobe Acrobat Reader(7.0及以上)的屏幕取词.
如果不能抓取PDF页面上的文字,请检查以下可能的原因:
1. 检查使用的是否是GetWord v2.0及以上的版本, GetWord v1.x不支持PDF屏幕取词;
2. 检查是否已正确安装了PDF屏幕取词插件. 安装以前,请先关闭Adobe Acrobat/Acrobat Reader,
然后运行GetWord的工具程序install_plugin.exe安装PDF屏幕取词插件;
3. 如果您当前使用的是Acrobat Professional, 它附带了一个Autotray.exe程序,
请检查是否该程序正在运行. 如果正在运行, 从进程管理器中杀掉此进程, 然后重新运行install_plugin.exe工具程序安装PDF屏幕取词插件;
4. 您正在抓取的文字是图片格式. GetWord不能抓取图片中的文字;
5. 您当前登录到操作系统中的是一个受限用户(limited user account), 没有写入权限, 不能够往Adobe
Acrobat/Acrobat Reader的插件目录中安装插件. 请用管理员帐户(Administrator
account)登录, 然后重新运行install_plugin.exe工具程序安装PDF屏幕取词插件.
在注册控件和安装PDF屏幕取词插件时,您需要以管理员身份运行. 正确注册好控件并安装好PDF屏幕取词插件后,
可以以一般用户身份运行.
Back to top
Q20:
我用GetWord抓取QQ的聊天记录,为什么抓取不了?
A:
部分杀毒软件和防火墙软件,存在误杀,会误把一些正常程序当作病毒或恶意程序。可能您的杀毒软件和防火墙软件误把GetWord判定为此类软件,从而造成GetWord不能正常抓词。请检查GetWord是否在您杀毒软件和防火墙软件的禁止列表中,如果在,解除禁止,并把GetWord添加到允许列表中即可。
此外,部分软件和防火墙软件,具有对某些特定程序的监控功能。比如,瑞星(一家中国的杀毒软件厂商)提供了一个叫“账号保险柜”的功能,可以监视常用的股票软件、聊天软件和网游软件。屏幕抓词必须要向被抓词的程序中注入代码,才能取到相应程序里的文本。如果开启了此类防护机制,将导致GetWord不能正常抓词。关闭相应的防护机制后,GetWord就可以正常取词了。以瑞星杀毒软件为例,具体操作步骤如下:1.
启动瑞星的“账号保险柜”,打开“账号保险柜”设置;2.
在左侧的软件列表中选择“聊天类”,然后在右侧面板中,去除“QQ”复选框的选择标志,然后单击"应用"(请参考Pic.4)。这样就可以利用GetWord对QQ正常取词了。
|
Pic.4 |
Back to top
|