所以我想在我们的文档级 Excel VSTO 插件中捕获一些键盘命令。除了使用 VBA 并让我们的插件与 VBA 对话之外,我似乎找不到其他方法来做到这一点。任何帮助/示例将不胜感激。
我使用的是 Excel 2007。
最佳答案
一种方法涉及使用 Addin-Express 中的第三方解决方案。他们的产品包括将键盘快捷键作为属性添加到功能区菜单命令的功能。
另一种方法是通过一些 Win32 API 使用低级键盘 Hook ,这通常称为Windows 子类化。这是关于如何执行此操作的代码示例的精彩解释。请注意,要使此代码在 VSTO 中“工作”,您需要做的唯一“额外”事情是将
SetHook()
方法移至Startup
事件,并且关闭事件的 UnhookWindowsHookEx() 方法。
Check out the article on MSDN here by Stephen Toub.
- 最后是 Addin 类的
OnAction
属性的使用。此方法需要使用一些 VBA(就指向底层 .net 插件的回调方法而言),只要您愿意在解决方案中分发一些 VBA,就可以正常工作( 即带有 vba 项目的 xls 或 doc,或者可能是 native 插件)。请注意,您还需要标记comvisible = true
,并公开GetAutomationServiceObject
方法,以便您的 VBA 可以从 VBA 代码引用您的插件。
关于excel - 有没有一种方法可以仅使用 C# 而无需使用 VBA 来捕获 Excel VSTO 中的热键/快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297839/