vb实现仿金山词霸的屏幕取词功能
来源:互联网 发布:关闭淘宝店铺 编辑:程序博客网 时间:2024/05/18 00:37
来自http://hi.baidu.com/cavalry1/blog/item/70eaabde76b0df5acdbf1a7c.html
2007-06-20 12:33
今天想要做类似金山词霸屏幕取词的功能,在网上找了一些资料,发现都很复杂。既然金山词霸已经实
现了,借用之:
金山词霸中2005中带了一个XdictGrb.dll,其实是一个COM组件,并且实现了一个取词的插件框架。
其中的有以下内容:
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 XDictGrabFlagEnumConst XDictGrabDisableButton = 4不取按钮上的文字Const XDictGrabDisableCaption = 8不取标题栏的文字Const XDictGrabDisableMenu = 2不取菜单的文字Const XDictGrabOnlyEnglish = 1只取英文以上几个常量可以用与(AND)的方式进行组合。2.2 XDictGrabModeEnumConst XDictGrabMouse = 1使用鼠标取词Const XDictGrabMouseWithCtrl = 3使用鼠标加Ctrl取词Const XDictGrabMouseWithMiddleButton = 4使用鼠标加鼠标中键进行取词Const XDictGrabMouseWithShift = 2使用鼠标加Shift进行取词2.3 Enum XDictGrabPluginPriorityEnum 设定插件的优先级Const XDictGrabPriorityChief = 4Const XDictGrabPriorityGeneral = 1Const XDictGrabPriorityNormal = 2Const XDictGrabPrioritySpecial = 3
3 示例代码(使用VB6实现)
Option Explicit
Implements IXDictGrabSink
Private gp As GrabProxy
Implements IXDictGrabSink
Private gp As GrabProxy
Private Sub Form_Load()
Set gp = New GrabProxy
With gp
.GrabEnabled = True '是否有效
.GrabInterval = 30 '指定抓取时间间隔
.GrabMode = XDictGrabMouse '模式(鼠标是否加按键)
.AdviseGrab Me '接口指向自身
Set gp = New GrabProxy
With gp
.GrabEnabled = True '是否有效
.GrabInterval = 30 '指定抓取时间间隔
.GrabMode = XDictGrabMouse '模式(鼠标是否加按键)
.AdviseGrab Me '接口指向自身
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set gp = Nothing
End Sub
Set gp = Nothing
End Sub
Private Function IXDictGrabSink_QueryWord(ByVal WordString As String, ByVal lCursorX As Long, ByVal lCursorY As Long, ByVal SentenceString As String, lLoc As Long, lStart As Long) As Long
Label1.Caption = "当前坐标:" & "(" & lCursorX & "," & lCursorY & ")"
Label2.Caption = "当前语句:" & SentenceString
Label3.Caption = "当前字符:" & Mid(SentenceString, lLoc + 1, 1000)
Label1.Caption = "当前坐标:" & "(" & lCursorX & "," & lCursorY & ")"
Label2.Caption = "当前语句:" & SentenceString
Label3.Caption = "当前字符:" & Mid(SentenceString, lLoc + 1, 1000)
End Function
- vb实现仿金山词霸的屏幕取词功能
- vb实现仿金山词霸的屏幕取词功能
- 用金山词霸的dll文件实现屏幕取词-vb
- vb金山词霸的屏幕取词
- 用金山词霸的dll文件实现屏幕取词
- c# 实现金山词霸一样的屏幕取词
- c# 实现金山词霸一样的屏幕取词
- 关于金山词霸的屏幕取词1
- 关于金山词霸的屏幕取词2
- 关于金山词霸的屏幕取词3
- 金山词霸无法屏幕取词的解决方法
- Firefox 3中实现金山词霸屏幕取词
- 解决:金山词霸在Firefox 3中实现屏幕取词
- 金山词霸”屏幕取词技术揭密--转贴
- 用金山词霸进行屏幕取词
- delphi 金山词霸屏幕取词技术
- API HOOK 金山词霸取词功能原理
- API HOOK 金山词霸取词功能原理
- C#学习笔记
- mkdir命令(建立一个目录)
- 什么时候需要同步机制?
- 关于datagirdview导入和导出excel
- rmdir命令(删除一个目录)
- vb实现仿金山词霸的屏幕取词功能
- 好久没来了
- C++的基础知识
- Windows XP下, Simplejson安装方法
- 解决VS2005中不能单步执行asp.net的问题
- 开发一套地磅打印程序,小成就感,呵。
- cd命令(改变操作目录)
- 微软的面试题及答案-超变态
- 设计模式中结构型模式(六)享元模式(Facade)