2

这是我想在 Delphi XE 中做的事情:
捕获另一个应用程序中的双击,这样当它发生并且鼠标下方的文本被突出显示时,这会根据突出显示的文本在我的应用程序中触发一系列事件。

我知道使用系统范围的鼠标挂钩来执行此操作的方法,但是...由于我的应用程序和其他应用程序在许多情况下将托管在终端服务或 citrix 环境中,因此我不太愿意使用鼠标执行此操作挂钩,因为我担心资源成本。(我正在想象服务器托管数百个鼠标钩子,每个用户一个......不寒而栗)。我是不是太谨慎了?鼠标钩的性能和稳定性能打多少?TS或者citrix环境下呢?如果我的直觉是正确的并且多个钩子的成本太高,还有其他方法吗?

我无权访问其他应用程序的源代码,并且在其中发现文本的第 3 方 Richedit 控件已被修改得面目全非,并且在发布时不响应 API。帮助?

4

1 回答 1

4

如果不使用系统范围的鼠标挂钩 AFAIK,这是不可能的。

您担心开销是正确的。鼠标钩子(MouseProc)在每次窗口调用PeekMessageGetMessage有鼠标消息被检索时被调用,并且它将为每个运行的应用程序的每个窗口调用。即使您的钩子只是使用 将事件传递给下一个处理程序CallNextHookEx(),它也会对系统产生影响。我怀疑在 TS 下运行的多个会话会非常讨厌。

于 2012-04-10T04:16:19.733 回答