Excel Addin和覆盖保存键盘快捷键

目前我已经inheritance了一个Word / Excel插件项目,做一个自定义的保存过程。 该项目在VS2010和Excel / Word 2007中

在addin这个词中,下面的xml被传回GetCustomUI调用,定义我们的自定义function

<commands> <command idMso="FileOpen" onAction="WordAddinOpen" /> <command idMso="FileSave" onAction="WordAddinSave" /> <command idMso="FileSaveAs" onAction="WordAddinSaveAs" /> </commands> 

当我在WordAddinSave函数中放置一个断点时,单击保存图标或按下Control-S,代码停在我的断点处。 如果我在打开的function中放置一个断点并按下Control-O,也会发生同样的情况

在Excel插件中,我有类似的xml被传回

 <commands> <command idMso="FileOpen" onAction="ExcelAddinOpen" /> <command idMso="FileSave" onAction="ExcelAddinSave" /> <command idMso="FileSaveAs" onAction="ExcelAddinSaveAs" /> </commands> 

但是,如果我在ExcelAddinSave函数中放置了一个断点,则代码只会停止,如果我单击保存图标,而不是键盘快捷方式。 如果我按下Control-S或Control-O,将会发生保存/打开文件的默认Excel行为,而不是我的自定义function。

ExcelAddinSave / ExcelAddinOpen在inheritanceBaseRibbon并实现Office.IRibbonExtensibility的类中定义,如下所示:

 [ComVisible(true)] public class CExcelRibbon : BaseRibbon, Office.IRibbonExtensibility { public CExcelRibbon() { } public string GetCustomUI(string ribbonID) { Assembly asm = Assembly.GetExecutingAssembly(); return GetResourceText(asm, "CExcelRibbon.xml"); //defines custom functionality } public void ExcelAddinOpen(Office.IRibbonControl control, bool cancel) { //custom open functionality snipped } public void ExcelAddinSave(Office.IRibbonControl control, bool cancel) { //custom save functionality snipped } //remaining class functionality snipped } 

因为我已经inheritance了这个项目,所以我不是Office Addins的专家,但是为什么excel没有在键盘快捷键Control-S / Control-O上调用我的Excel插件function呢?

注意:

当前的function是设置一个SetWindowsHookEx键盘钩子来预览Control-S / Control-O的所有按键。 然而,由于我们的环境,这看起来像是一个问题,因为它看起来Windows 7正在断开我们的关键button,因为它花了太长时间。 我已经使用下面的registry项进行了testing,并保持不变。 不过,从长远来看,我希望find一个更优化的解决scheme

  HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout