屏幕取词

金山词霸中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  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 示例代码(使用VB6实现)
Option Explicit
Implements IXDictGrabSink
Private gp As GrabProxy
Private Sub Form_Load()
    
      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
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)
End Function
  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值