Excel加载并覆盖保存键盘快捷键

时间:2014-09-08 22:42:34

标签: c# excel visual-studio-2010 excel-2007 office-addins

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

在addin这个词中,以下xml被传递回GetCustomUI调用,定义了我们的自定义功能

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

当我在WordAddinSave函数中放置一个断点,然后单击保存图标或按Control-S时,代码将在我的断点处停止。如果我在我的打开功能中设置断点并按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行为,而不是我的自定义功能。

ExcelAddinSave / ExcelAddinOpen在继承BaseRibbon并实现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
}

因为我继承了这个项目,我不是Office Addins的专家,但为什么excel不会在键盘上调用我的Excel插件功能快捷键Control-S / Control-O?

注意:

当前功能是设置SetWindowsHookEx键盘挂钩以预览Control-S / Control-O的所有按键。但是,由于我们的环境,这看起来像是一个问题,因为看起来Windows 7正在断开我们的按键挂钩,因为它花了太长时间。我用以下的reg键设置测试了它,它保持不变。但是,从长远来看,我想找到一个更优化的解决方案

 HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout

0 个答案:

没有答案