系统范围的右键单击上下文钩子

时间:2011-09-22 04:13:11

标签: visual-c++ hook systems-programming

**你好..

我正在创建英语到古吉拉特语词典WinForm应用程序。

我需要在右键单击上下文菜单中设置系统范围的挂钩以进行文本选择。

这意味着当这个应用程序运行时,如果用户从任何程序中选择单词并右键单击它,则该单词的gujarati含义应显示为菜单项。

怎么做?

或任何其他选项,如Registery Programming,shell extentions等......?

我必须这样做,即使你说它不可能。

所以请帮助我。**

1 个答案:

答案 0 :(得分:1)

挂钩鼠标活动很容易。请参阅SetWindowsHookEx,以及有关在SO中挂钩的许多问题。这样,您可以判断鼠标右键单击的时间。

获取所选文本是更难的部分。对于初学者,请参阅WindowFromPoint。您必须识别控件,并在适当的时候从中获取所选文本。如果控件很复杂,使用简单的Win32函数并不总是可行。

将翻译添加到右键菜单可能是不可能的部分。向资源管理器上下文菜单添加内容不是问题,因为资源管理器提供了这种可能性。但是各种应用程序将具有各种右键单击菜单,而无法扩展它们。无论出于何种原因,他们甚至可能不会使用Win32作为菜单。一个更好的选择,IMO,将是以下之一:

  1. 忘记更改右键菜单。使用您想要的任何内容打开选择点旁边的窗口,让应用程序显示自己的右键菜单。
  2. 如果用户右键单击,例如按shift键,则显示您自己的右键单击菜单,并且不将消息传递给应用程序。因此,用户只能看到一个菜单,这是您的菜单。用户当然必须知道这种组合。