`
lujar
  • 浏览: 512212 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

delphi中使用词霸2005的动态库XdictGrb.dll实现屏幕取词

阅读更多

delphi中使用词霸2005的动态库XdictGrb.dll实现屏幕取词

     近日来,在网上发现关于屏幕取词技术的捷径,搜索很长时间,发现实现方式以VB出现的居多,但是通过Delphi来实现的却好象没有看到,自己参考着VB的相关代码琢磨了一下通过delphi来实现的方式。


     其实也差不多,唯一不同的只有一个地方就是取词对象GrabProxy的AdviseGrab这个方法,该方法的参数是一个IXDictGrabSink 的接口类型,在Vb中是AdviseGrab(Me)就可以了,但是在delphi中则不能简单使用AdviseGrab(self)来,在前面 TForm1 = class(TForm)的这个Form类声明必须在继承一个接口才行,所以应该改成 TForm1 = class(TForm,IXDictGrabSink),然后实现IxDictGrabSink接口的方法QueryWord,该方法就是用来取词的。
function QueryWord(const WordString: WideString; lCursorX: Integer; lCursorY: Integer;
         const SentenceString: WideString; var lLoc: Integer; var lStart: Integer): Integer;safecall;


此时你就可以通过类似于Vb中来进行指定了,AdviseGrab(self)就将接口指向了他自己。

但此之前,你必须先得到XDICTGRB_TLB单元,你可以通过delphi的
Project---->Import Type Library..来把该动态库引用进来,然后创建单元,或是简单的,你直接把他创建成一可用的控件。
然后在窗体中调用。

当成控件来使用如下:

   直接拖到窗体上,然后将窗体代码中的TForm1 = class(TForm)改成

TForm1 = class(TForm,IXDictGrabSink),并且实现IXDictGrabSink接口中的方法的声明

function QueryWord(const WordString: WideString; lCursorX: Integer; lCursorY: Integer;
                       const SentenceString: WideString; var lLoc: Integer; var lStart: Integer): Integer;safecall;

然后在指定他的属性

   GrabProxy1.GrabInterval := 1;//指定抓取时间间隔
   self.GrabProxy1.GrabMode := XDictGrabMouse;//模式(鼠标是否加按键)
   self.GrabProxy1.GrabEnabled := true;//是否有效
   self.GrabProxy1.AdviseGrab(self);//接口指向自身

然后就是屏幕取词方法的实现

function TForm1.QueryWord(const WordString: WideString; lCursorX,
  lCursorY: Integer; const SentenceString: WideString; var lLoc,
  lStart: Integer): Integer;
begin
   //Label1是当前鼠标的位置,Lcursorx,LCursorY表示鼠标的位置
  Label1.Caption := '(' + inttostr(lCursorX) + ',' +inttostr(lCursorY) + ')';
  //Label2是当前鼠标指向的位置的字符串,保留在(SentenceString)中
  Label2.Caption := '当前语句:' + SentenceString ;
  //Lloc鼠标在语句中的位置 ,label3得到当前字符串
  Label3.Caption := '当前字符:' + Midstr(SentenceString,lloc+1,1);
end;

方法二:不使用控件,通过使用createOleObject(str)函数来实现动态创建该取词对象

同样引用OleServer, XDICTGRB_TLB两个单元,然后

TForm1 = class(TForm)改成

TForm1 = class(TForm,IXDictGrabSink),并且实现IXDictGrabSink接口中的方法的声明

之后声明变量Gp: variant;

在窗体的Show中写代码如下:

procedure TForm1.FormShow(Sender: TObject);
var
  i: IXDictGrabSink;
begin
   //声明一个接口变量,然后把自己赋给该变量以便后面的方法调用接口
   i := self;
   //创建对象
   gp := CreateOleObject('XdictGrb.GrabProxy');
   //指定属性
   gp.GrabEnabled := true;
   gp.GrabInterval := 1;
   gp.GrabMode := XDictGrabMouse;
   gp.AdviseGrab(i);
end;

然后实现接口的取词方法。

注意:在窗体的Close事件中要写上 gp := 0;将创建的取词对象释放掉,否则窗体关闭的时候会出错哦!

分享到:
评论

相关推荐

    C#利用XdictGrb.dll实现屏幕取词源码

    本文将详细探讨如何使用C#语言结合XdictGrb.dll库实现屏幕取词的功能。XdictGrb.dll是一个专为屏幕取词设计的动态链接库,它允许开发者获取鼠标指针下显示的文本,这对于开发翻译工具或者学习辅助软件非常有用。 ...

    C#屏幕取词实例 利用 金山词霸 组件XdictGrb.dll

    本篇文章将深入探讨如何在C#编程环境中,利用金山词霸提供的组件XdictGrb.dll来实现屏幕取词。 首先,我们需要了解XdictGrb.dll是什么。这是一个由金山词霸提供的动态链接库(DLL),包含了用于与金山词霸软件进行...

    金山词霸中带了一个XdictGrb.dll,利用它可以实现鼠标取词。

    XdictGrb.dll,全称为“Xdict Grabber Dynamic Link Library”,是金山词霸中用于实现屏幕文字识别和取词功能的模块。动态链接库(DLL)是一种可执行文件,它包含了一系列可供其他程序调用的函数或数据,以此实现...

    VB 屏幕取词 使用XdictGrb.dll实现

    总的来说,使用XdictGrb.dll在VB中实现屏幕取词涉及了DLL的引用、API函数的调用、鼠标事件的监听、多线程处理以及用户交互设计等多个方面的知识。通过熟练掌握这些技能,你可以创建出高效且易用的屏幕取词工具。

    C#利用金山词霸的xdictgrb.dll实现鼠标取词.mht_C#_

    本教程将深入探讨如何利用C#结合金山词霸的xdictgrb.dll动态链接库,实现在Windows操作系统上进行鼠标取词功能,为用户提供实时的翻译服务。这个功能在学习、办公或日常使用中非常实用,能够提升用户对英文文本的...

    VFP屏幕取词控件 XdictGrb.dll VB封装

    本文将详细介绍如何在Visual FoxPro(VFP)环境中,通过VB(Visual Basic)封装金山词霸的屏幕取词控件XdictGrb.dll,实现屏幕取词功能。 首先,XdictGrb.dll是金山词霸提供的屏幕取词动态链接库,它允许开发者在...

    XdictGrb.dll 下载

    金山词霸中2005中带了一个XdictGrb.dll,其实是一个COM组件,并且实现了一个取词的插件框架。 http://hi.baidu.com/ykhykh/blog/item/8ebecb119214f112b9127ba5.html 教程。

    C# 源码利用金山词霸 取词 自带XdictGrb.dll

    本示例的核心在于`XdictGrb.dll`,这是一个金山词霸提供的动态链接库(DLL),它包含了金山词霸的API接口,允许外部程序调用其功能,如获取单词的翻译、发音等信息。通过引用这个DLL,开发者可以实现在自己的C#应用...

    xdictgrb.dll

    金山词霸2005桌面跳动最佳答案 你的系统是... 金山词霸2005在xp系统sp2下屏幕取词出现桌面闪烁的现象。现在,只要您点击下载 将下载的文件xdictgrb.dll替换词霸安装目录下的同名文件即可轻松解决这个问题。

    XdictGrb.dll (金山词霸)

    金山词霸中2005中带了一个XdictGrb.dll,其实是一个COM组件,并且实现了一个取词的插件框架。 http://hi.baidu.com/ykhykh/blog/item/8ebecb119214f112b9127ba5.html 教程。

    XdictGrb.dll (金山词霸2005)

    金山词霸中2005中带了一个XdictGrb.dll,其实是一个COM组件,并且实现了一个取词的插件框架,是出了名的难找,亲测可用,用于.net中划词翻译的开发.

    XdictGrb.dll-(金山词霸)

    金山词霸中2005中带了一个XdictGrb.dll,其实是一个COM组件,并且实现了一个取词的插件框架。 http://hi.baidu.com/ykhykh/blog/item/8ebecb119214f112b9127ba5.html 教程。

    金山词霸2005XdictGrb.rar

    描述中的解决方案是,用户在完成金山词霸的安装后,不立即启动程序,而是去金山的官方网站下载一个名为“xdictgrb.dll”的动态链接库文件。这个文件可能是修复安装中缺失或不兼容的组件,用户需要将这个新下载的dll...

    XdictGrb.dll

    金山词霸的XdictGrb.dll,可用于屏幕取词

    c#鼠标屏幕取词(金山词霸dll)

    本项目涉及的是在C#环境下利用金山词霸的DLL(动态链接库)文件,实现一个鼠标屏幕取词的功能。这个功能允许用户在屏幕上悬浮鼠标时,自动识别并翻译选中的单词或短语,极大地提高了语言学习和工作的效率。 首先,...

    解决取词问题的xdictgrb.dll

    如题,金山词霸太差劲,官方网站也不提供这个05的下载了,估计他们是准备抛弃05了,这个词典业绩吧更新。nnd

    Delphi屏幕取词的例子

    在给定的“Delphi屏幕取词的例子”中,我们关注的是如何利用Delphi调用金山词霸的动态链接库(DLL)实现屏幕取词功能。这个功能允许用户在屏幕上选择一个单词或短语,并通过金山词霸获取其翻译和定义,极大地提高了...

    金山词霸闪屏补丁XDictGrb

    补丁XDictGrb.dll是这个修复方案的核心,它是一个动态链接库(Dynamic Link Library)文件,是金山词霸程序运行时不可或缺的一部分。当用户将这个补丁覆盖到金山词霸的安装目录中,替换原有的同名文件,就可以解决...

    屏幕取词金山研究,金山词霸手机屏幕取词,Delphi

    在这个项目中,我们关注的是如何在Delphi编程环境中利用金山词霸的XdictGrb.dll动态链接库来实现这一功能。 首先,`XdictGrb.dll`是金山词霸提供的一个核心组件,它包含了屏幕取词所需的各种功能接口。这个库文件...

    c# 实现的屏幕取词

    XdictGrb.dll是金山词霸提供的一款动态链接库文件,它是金山词霸API的一部分,用于第三方程序调用金山词霸的功能,如屏幕取词、翻译等。通过引用这个控件,开发者可以轻松地在自己的应用程序中集成金山词霸的词汇...

Global site tag (gtag.js) - Google Analytics