2

巴比伦词典和其他一些词典允许单击任何 Windows 程序中的任何单词并自动识别光标下的单词,并在已安装的词典中搜索该单词时立即打开词典窗口。另一方面,您可以打开字典,输入您的单词并按 Enter,结果将是相同的。

有一个 Delphi 表单,包含一个文本标签,例如带有单词“Automaton”。

我的问题是:

如何将一个单词从我的 Delphi 应用程序直接发送到字典窗口,就像您手动键入并按 Enter 一样?

最好的解决方案是通过 Windows 机制发送一些消息,但如果太复杂,还有另一种解决方案,所以第二个答案:正如我所描述的,我们需要模拟一个 [Ctrl+鼠标左键] 单击一个表单,其中这个词显示在一个表单上[我的 Delphi 应用程序屏幕上的一个可视标签],准确地说,在这个标签的某个中心像素上。

您能否就如何在 Delphi 中做一件事或另一件事给出建议?

** 编辑:AppActivate 的问题是:Babylon dict 有一个位于托盘中的守护进程部分。在任务管理器中,应该输入文本的真实窗口也被命名为“Babylon”。所以 AppActivate('Babylon') 试图将应用程序的非可视部分放在前面。

您对如何确定窗口句柄或应用程序的真实视觉部分有什么建议吗?在任务管理器中,我重复视觉和非视觉部分都命名为“巴比伦”。

4

1 回答 1

1

我无法提供答案,只能提供一些见解和建议......

有某些应用程序“拦截”键盘和鼠标指令,如果它们被软件模仿,则基本上“无效”它们。一般来说,您只会在适当的防病毒软件(如卡巴斯基)中看到这一点……但是:

一些(不是很多,但有一些)程序挂钩键盘和鼠标输入的方式,作为副作用,行为方式相同。如果您尝试了上述评论中给出的所有建议,但无法让巴比伦触发动作,那么巴比伦的行为很可能与我所描述的一样。

如果我怀疑是真的,那么您尝试的方法根本不可能(至少,不使用任何简单的 Pascal 代码本身...... ASM 可能能够做到,但这超出了我的知识范围)。

更好的解决方案可能是做一些研究,看看您是否可以使用以下任何选项: 1) Babylon 是否有一个管道或 API 可以用来连接您的应用程序与它?2) 您需要的 Babylon 的特定功能是否可以通过作为 Babylon 的一部分分发的一个(或多个)DLL 文件访问?3) 是否有替代使用巴比伦来满足您的需求?

我知道这不是一个这样的答案(当然不是你想听到的),但它可能会为你指明一个更好的方向。

于 2011-04-14T19:00:50.840 回答