屏幕取词

陌上柳絮 2015-12-13 11:05:42
我调用金山词霸的组件,XdictGrp.dll,实现屏幕取词,怎么不起作用,取不到词?
...全文
254 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ustcer_iim 2016-07-30
  • 打赏
  • 举报
回复
请问你现在调用金山词霸的组件,XdictGrp.dll,实现屏幕取词了吗?
赵4老师 2015-12-21
  • 打赏
  • 举报
回复
'将XdictGrb.dll放在system32下.运行regsvr32 XdictGrb.dll注册.
'新建工程,引用XdictGrb.dll.
'加三个Label到窗体.
Option Explicit
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_NOMOVE = &H2 '不移动窗体
Private Const SWP_NOSIZE = &H1 '不改变窗体尺寸
Private Const Flag = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1 '窗体总在最前面
Private Const HWND_NOTOPMOST = -2 '窗体不在最前面
Implements IXDictGrabSink
Private gp As GrabProxy
Dim f As Integer
Dim ls As String
Private Sub Form_Load()
    ls = ""
    f = FreeFile()
    Open "c:\XDictGrb.txt" For Append As #f
    Set gp = New GrabProxy
    With gp
        .GrabEnabled = True '是否有效
        .GrabInterval = 5 '指定抓取时间间隔
        .GrabMode = XDictGrabMouse '模式(鼠标是否加按键)
        .AdviseGrab Me '接口指向自身
    End With
    SetWindowPos Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
End Sub

Private Sub Label2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Form1.Top = 600 - Form1.Top
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Form1.Top = 600 - Form1.Top
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set gp = Nothing
    Close #f
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)
    If ls <> SentenceString Then
        ls = SentenceString
        Print #f, ls
        Clipboard.Clear
        Clipboard.SetText ls
    End If
    If 0 <= lCursorX And lCursorX <= 559 Then
        If 0 <= lCursorY And lCursorY <= 39 Then
            Form1.Top = 600
        End If
        If 40 <= lCursorY And lCursorY <= 79 Then
            Form1.Top = 0
        End If
    End If
End Function
陌上柳絮 2015-12-21
  • 打赏
  • 举报
回复

这个链接里的代码,你试过吗,可以取词吗
cdcjk 2015-12-20
  • 打赏
  • 举报
回复
重要的是api 人家给你授权,给你说明文档
devmiao 2015-12-20
  • 打赏
  • 举报
回复
http://www.cnblogs.com/jiangj/archive/2010/09/26/1836159.html
陌上柳絮 2015-12-20
  • 打赏
  • 举报
回复
我现在用的是hook做的,通过拦截ExtTextOUT函数来读取鼠标当前的字符,但是有个问题,在xp系统上读取到的字符(汉字,英文,字母)都是对的,但是到了win7系统上只能能显示汉字,英文和数字都是乱码,请问这是怎么回事
exception92 2015-12-14
  • 打赏
  • 举报
回复
重要的是api 不要总以为有个dll 任何事情都可以做。
秋的红果实 2015-12-13
  • 打赏
  • 举报
回复
你的知道组件的用法才行,人家给你授权,给你说明文档

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧