【发布时间】:2025-12-01 08:00:02
【问题描述】:
巴比伦词典和其他一些词典允许在任何 Windows 程序中单击任何单词 并自动识别光标下的单词,并在已安装的词典中搜索该单词时立即打开词典窗口。 另一方面,您可以打开字典,输入您的单词并按 Enter,结果将是相同的。
有一个 Delphi 表单,包含一个文本标签,例如带有单词“Automaton”。
我的问题是:
如何将一个单词从我的 Delphi 应用程序直接发送到字典窗口,就像手动输入并按 Enter 一样?
最好的办法是通过windows机制发送一些消息,但如果太复杂,还有另一种解决方案,所以第二个答案:正如我所描述的,我们需要模拟一个[Ctrl+鼠标左键]点击一个表单,其中这个词显示在表单上 [我的 Delphi 应用程序屏幕上的视觉标签],确切地说,在这个标签的某个中心像素上。
您能否提供一个建议,如何在 Delphi 中做一件事或另一件事?
** 编辑: AppActivate 的问题是:Babylon dict 有一个位于托盘中的守护进程部分。 在任务管理器中,应该输入文本的真实窗口也被命名为“Babylon”。 因此 AppActivate('Babylon') 尝试将应用程序的非可视部分置于前面。
您对如何确定窗口句柄或应用程序的真实视觉部分有什么建议吗?在任务管理器中,我重复视觉和非视觉部分都命名为“Babylon”。
【问题讨论】:
-
试过 'SendKeys.pas' 和 AppActivate() 但它似乎不适用于巴比伦
-
在我看来,这实际上是关于巴比伦而不是德尔福。像这样的任何接口问题的简单部分通常在您控制的代码中。困难的部分在您无法控制的代码中。我会尝试巴比伦文档/支持论坛等。
-
好的,但是还有什么方法可以将光标定位在delphi表单标签的中间并模拟Ctrl+鼠标左键单击该像素?
-
@EugeneP 如果你的应用有焦点,那么这个动作肯定会在你的应用而不是巴比伦结束。
-
@EugeneP 你为什么要这样做?
标签: windows delphi delphi-7 windows-messages