是否有一种低开销的方法可以使用Delphi钩住鼠标双击?

是否有一种低开销的方法可以使用Delphi钩住鼠标双击?,delphi,delphi-xe,mouse-hook,Delphi,Delphi Xe,Mouse Hook,下面是我想在Delphi XE中执行的操作: 在另一个应用程序中捕获双击,这样当双击发生并突出显示鼠标下方的文本时,将根据突出显示的文本在我的应用程序中触发一系列事件 我知道使用系统范围的鼠标挂钩可以实现这一点,但是。。。由于我的应用程序和其他应用程序在许多情况下都将托管在终端服务或citrix环境中,因此我不太愿意使用鼠标挂钩来实现这一点,因为我担心资源成本。(我正在描绘服务器承载数百个鼠标挂钩,每个用户一个……不寒而栗)。我是不是太谨慎了?鼠标挂钩的性能和稳定性是多少?在TS或citrix环

下面是我想在Delphi XE中执行的操作:
在另一个应用程序中捕获双击,这样当双击发生并突出显示鼠标下方的文本时,将根据突出显示的文本在我的应用程序中触发一系列事件

我知道使用系统范围的鼠标挂钩可以实现这一点,但是。。。由于我的应用程序和其他应用程序在许多情况下都将托管在终端服务或citrix环境中,因此我不太愿意使用鼠标挂钩来实现这一点,因为我担心资源成本。(我正在描绘服务器承载数百个鼠标挂钩,每个用户一个……不寒而栗)。我是不是太谨慎了?鼠标挂钩的性能和稳定性是多少?在TS或citrix环境下呢?如果我的直觉是正确的,而且多个挂钩的成本太高,有没有其他方法可以做到这一点


我无法访问其他应用程序的源代码和第三方richedit控件,在该控件中发现的文本已被修改到无法识别的程度,并且在使用发布时不响应API。帮助?

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


你担心开销是对的。每次窗口调用
PeekMessage
GetMessage
并且要检索鼠标消息时,都会调用鼠标钩子(),并且每个运行的应用程序的每个窗口都会调用鼠标钩子。即使钩子只是使用
CallNextHookEx()
将事件传递给下一个处理程序,它也会对系统产生影响。我怀疑在TS下运行多个会话会非常糟糕

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

你担心开销是对的。每次窗口调用
PeekMessage
GetMessage
并且要检索鼠标消息时,都会调用鼠标钩子(),并且每个运行的应用程序的每个窗口都会调用鼠标钩子。即使钩子只是使用
CallNextHookEx()
将事件传递给下一个处理程序,它也会对系统产生影响。我怀疑在TS下运行多个会话会非常糟糕