【发布时间】:2014-05-06 05:33:07
【问题描述】:
在我使用 VSTO 的 PowerPoint 插件中,我正在实现一个 Application-level Mouse Hook 来捕获鼠标事件,例如双击、右键单击、鼠标悬停等,方法是使用从 Codeplex 下载的 MouseKeyboardActivityMonitor.dll。我这样做的原因是因为 PowerPoint 没有要收听的鼠标相关事件,并且它提供的事件不会在 PowerPoint 的编辑模式下触发。
在我的插件中,当用户单击图表时,会出现一个菜单,允许用户在图表上执行各种功能。一切正常。我已经捕获了鼠标事件并显示了自定义菜单,但是在执行某些操作后关闭菜单时会出现问题,PowerPoint 的默认菜单会出现在屏幕上。
示例:当用户双击图表时,我会像这样显示我的表单菜单。
//Listening to the MouseDoubleClick event
MyMouseHookListener.MouseDoubleClick += MyMouseHookListener_MouseDoubleClick;
//MouseDoubleClickEvent
void MyMouseHookListener_MouseDoubleClick(object sender, System.Windows.Forms.MouseEventArgs e)
{
FormMenu.ShowDialog(); //Displaying menu
}
这很好用,但是当用户关闭表单时,会出现 PowerPoint 图表的默认双击菜单。其他鼠标事件的问题也是如此。
如何禁用 PowerPoint 的事件菜单?
更新:
有一个名为Cancel 的bool 属性由PowerPoint 的WindowBeforeDoubleClick 和WindowBeforeRightClick 事件提供。如果设置为true,则会取消 PowerPoint 在触发事件时执行的默认操作。如何在我的 MouseHook 事件中访问此属性?
【问题讨论】:
标签: c# events mouseevent vsto powerpoint