运用金山词霸组件开发属于自己的屏幕取词模块!!
2009-10-01 21:41
543 查看
本软件是基于金山词霸组件进行Com
开发
,
所以需要你的机子上要装有金山词霸软件
!
使用金山词霸的屏幕取词功能(XdictGrb.dll)
1、接口
1.1 GrabProxy取词代理对象
Function AdviseGrab(XDictGrabSink As IXDictGrabSink) As Long
广播一个XDictGrabSink
(如果要实现取词功能,你需要自己来实现这个接口,具体的方法后面会有介绍。(
Visual Basic
的示例,使用其他语言类似)) 接口,在需要取词的时候会调用
XDictGrabSink
的
QueryWord
方法,你可以在这里实现你需要的功能。
Property GrabEnabled As Boolean 是否取词的属性
Property GrabMode As XDictGrabModeEnum
设定取词的属性,XDictGrabFlagEnum
的定义后面会讲到。
Property GrabFlag As XDictGrabFlagEnum
设定取词健,比如是否要结合Ctrl
或者
Shift.
Property GrabSystemCP As Long
这个属性暂时不太清楚。
Sub GrabWord(lCursorX As Long, lCursorY As Long)
取x,y
坐标的词,估计是屏幕坐标。
Sub UnadviseGrab(lCookie As Long)
取消对XDictGrabSink
接口的广播。
Property XDictGrabPlugins As IPluginsCollection
返回一个IPluginsCollection
集合。
1.2 IPluginsCollection插件集合对象
其中实现了一个插件的框架,但是如果只是要实现屏幕取词功能,也可以暂时不使用插件功能。
1.3 IXDictGrabPlugin插件接口
1.4 IXDictGrabROT接口
名字不太明白是什么意思,用来注册和反注册插件。
1.5 IXDictGrabSink
自己要实现的接口,参见后面的例子。
Function QueryWord(WordString As String, lCursorX As Long, lCursorY As Long, SentenceString As String, lLoc As Long, lStart As Long) As Long
可以在这个方法中实现你自己要做的功能,WordString
参数应该是鼠 标所在处的单词,
lCursorX
是鼠标当前
X
坐标,
lCursorY
是鼠标当前
Y
坐标,
SentenceString
是鼠标所在处整个句子,
lLoc
是鼠标所在处的字在整个句子中的位置,下标从
0
开始。
lStart
暂时不太清楚。
2、常量定义
2.1 XDictGrabFlagEnum
Const XDictGrabDisableButton= 4
不取按钮上的文字
Const XDictGrabDisableCaption= 8
不取标题栏的文字
Const XDictGrabDisableMenu= 2
不取菜单的文字
Const XDictGrabOnlyEnglish= 1
只取英文
以上几个常量可以用与(AND)
的方式进行组合。
2.2 XDictGrabModeEnum
Const XDictGrabMouse= 1
使用鼠标取词
Const XDictGrabMouseWithCtrl= 3
使用鼠标加Ctrl
取词
Const XDictGrabMouseWithMiddleButton= 4
使用鼠标加鼠标中键进行取词
Const XDictGrabMouseWithShift= 2
使用鼠标加Shift
进行取词
2.3 Enum XDictGrabPluginPriorityEnum设定插件的优先级
Const XDictGrabPriorityChief= 4
Const XDictGrabPriorityGeneral= 1
Const XDictGrabPriorityNormal= 2
Const XDictGrabPrioritySpecial= 3
3、代码实现:
//函数功能:初始化屏幕取词
;
bool
TGetWord::Initialize()
{
AfxOleInit();
if
(TDiction->CreateDispatch (_T("XdictGrb.GrabProxy")))
{
TDiction->SetGrabEnabled (TRUE);//是否取词的属性
TDiction->SetGrabInterval(10);//指抓取时间间隔
TDiction->SetGrabMode(1);//设定取词的属性
m_dwCookie = TDiction->AdviseGrab(TmySink);//挂接事件
}
else
{
AfxMessageBox(_T("你还未安装金山词霸组件
"));
return
false;
}
return
true;
}
//程序接口如下
:
STDMETHODIMP MySink::QueryWord(BSTR WordString, long lCursorX, long lCursorY, BSTR SentenceString, long *lLoc, long *lStart)
{
m_strGetWord=SentenceString;//鼠标所在语句
SendMessage(m_hWnd,WM_GETWORD,0,0);//向接收窗体发送接收取词词组的消息
return S_OK;
}
开发
,
所以需要你的机子上要装有金山词霸软件
!
使用金山词霸的屏幕取词功能(XdictGrb.dll)
1、接口
1.1 GrabProxy取词代理对象
Function AdviseGrab(XDictGrabSink As IXDictGrabSink) As Long
广播一个XDictGrabSink
(如果要实现取词功能,你需要自己来实现这个接口,具体的方法后面会有介绍。(
Visual Basic
的示例,使用其他语言类似)) 接口,在需要取词的时候会调用
XDictGrabSink
的
QueryWord
方法,你可以在这里实现你需要的功能。
Property GrabEnabled As Boolean 是否取词的属性
Property GrabMode As XDictGrabModeEnum
设定取词的属性,XDictGrabFlagEnum
的定义后面会讲到。
Property GrabFlag As XDictGrabFlagEnum
设定取词健,比如是否要结合Ctrl
或者
Shift.
Property GrabSystemCP As Long
这个属性暂时不太清楚。
Sub GrabWord(lCursorX As Long, lCursorY As Long)
取x,y
坐标的词,估计是屏幕坐标。
Sub UnadviseGrab(lCookie As Long)
取消对XDictGrabSink
接口的广播。
Property XDictGrabPlugins As IPluginsCollection
返回一个IPluginsCollection
集合。
1.2 IPluginsCollection插件集合对象
其中实现了一个插件的框架,但是如果只是要实现屏幕取词功能,也可以暂时不使用插件功能。
1.3 IXDictGrabPlugin插件接口
1.4 IXDictGrabROT接口
名字不太明白是什么意思,用来注册和反注册插件。
1.5 IXDictGrabSink
自己要实现的接口,参见后面的例子。
Function QueryWord(WordString As String, lCursorX As Long, lCursorY As Long, SentenceString As String, lLoc As Long, lStart As Long) As Long
可以在这个方法中实现你自己要做的功能,WordString
参数应该是鼠 标所在处的单词,
lCursorX
是鼠标当前
X
坐标,
lCursorY
是鼠标当前
Y
坐标,
SentenceString
是鼠标所在处整个句子,
lLoc
是鼠标所在处的字在整个句子中的位置,下标从
0
开始。
lStart
暂时不太清楚。
2、常量定义
2.1 XDictGrabFlagEnum
Const XDictGrabDisableButton= 4
不取按钮上的文字
Const XDictGrabDisableCaption= 8
不取标题栏的文字
Const XDictGrabDisableMenu= 2
不取菜单的文字
Const XDictGrabOnlyEnglish= 1
只取英文
以上几个常量可以用与(AND)
的方式进行组合。
2.2 XDictGrabModeEnum
Const XDictGrabMouse= 1
使用鼠标取词
Const XDictGrabMouseWithCtrl= 3
使用鼠标加Ctrl
取词
Const XDictGrabMouseWithMiddleButton= 4
使用鼠标加鼠标中键进行取词
Const XDictGrabMouseWithShift= 2
使用鼠标加Shift
进行取词
2.3 Enum XDictGrabPluginPriorityEnum设定插件的优先级
Const XDictGrabPriorityChief= 4
Const XDictGrabPriorityGeneral= 1
Const XDictGrabPriorityNormal= 2
Const XDictGrabPrioritySpecial= 3
3、代码实现:
//函数功能:初始化屏幕取词
;
bool
TGetWord::Initialize()
{
AfxOleInit();
if
(TDiction->CreateDispatch (_T("XdictGrb.GrabProxy")))
{
TDiction->SetGrabEnabled (TRUE);//是否取词的属性
TDiction->SetGrabInterval(10);//指抓取时间间隔
TDiction->SetGrabMode(1);//设定取词的属性
m_dwCookie = TDiction->AdviseGrab(TmySink);//挂接事件
}
else
{
AfxMessageBox(_T("你还未安装金山词霸组件
"));
return
false;
}
return
true;
}
//程序接口如下
:
STDMETHODIMP MySink::QueryWord(BSTR WordString, long lCursorX, long lCursorY, BSTR SentenceString, long *lLoc, long *lStart)
{
m_strGetWord=SentenceString;//鼠标所在语句
SendMessage(m_hWnd,WM_GETWORD,0,0);//向接收窗体发送接收取词词组的消息
return S_OK;
}
相关文章推荐
- Android 多模块多组件开发 - 打造属于自己的路由
- Android 多模块多组件开发 - 打造属于自己的路由
- Reactjs开发自制编程语言Monkey的编译器:使用组件的state机制实现屏幕取词
- 金山词霸”屏幕取词技术揭密(讨论稿)
- Siverlight 老是导致IE Crash? 关掉金山词霸屏幕取词!
- “金山词霸”屏幕取词技术揭密(讨论稿)
- 教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法
- Android 程式开发:(五)屏幕组件 —— 5.7 ScrollView滚动视图
- vb实现仿金山词霸的屏幕取词功能
- 关于金山词霸的屏幕取词3
- 教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法
- 基于ABP模块组件与依赖注入组件的项目插件开发
- (转)金山词霸屏幕取词C#应用(XdictGrb.dll)
- 解决:金山词霸在Firefox 3中实现屏幕取词
- 解决金山词霸和有道词典不能对pdf文档屏幕取词的方法
- 教你分分钟开发一个属于自己的python模块(一)——能够直接在浏览器打印的方法
- vb实现仿金山词霸的屏幕取词功能
- 基于C#利用金山取词组件实现屏幕取词功能
- NDK开发多模块的工作方式——设置、运用与思考
- (01)大型信息化系统组件 - 通用权限管理模块整体开发定位