替换 COM 加载项中 Word 的“打开文件”对话框

发布于 2024-08-04 03:11:18 字数 378 浏览 3 评论 0原文

我正在编写一个 Word COM 插件来替换 Open & 插件。用我自己的保存对话框。

对于保存对话框,我正在处理应用程序事件中的 documentBeforeSave 事件。这很好用。

对于打开的对话框,没有这样的事件,因此我当前正在处理“打开...”菜单项的 onClick,取消默认处理。如果用户确实使用此菜单项,则可以正常工作,但如果用户按 CTRL-O,他们仍然会得到原始对话框。

有没有更好的方法来连接这个对话框?如果没有,有没有办法优雅地处理这个按键,或者我应该解决键盘挂钩?

注意:该加载项最终应该可以在 Office 2003、2007 和 2010 上运行,但在不同的目标上使用不同的代码路径当然是完全没问题的。我对任何版本的任何解决方案都感兴趣。

I'm writing a Word COM Add-in that replaces the Open & Save dialogs with my own.

For the save dialog, I'm handling the documentBeforeSave event from the application events. This works fine.

For the open dialog, there is no such event, so I'm currently handling the onClick of the Open... menu item, canceling the default handling. This works ok if the user indeed uses this menu item, but if the user presses CTRL-O in stead they still get the original dialog.

Is there a better way to hook into this dialog? And if there isn't, is there a way to elegantly handle this keypress, or should I resolve to keyboard hooks?

Note: The add-in should eventually work on Office 2003, 2007 and 2010, but using different code-paths on different targets is of course perfectly fine. I am interested in any solutions on any version.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

屋顶上的小猫咪 2024-08-11 03:11:18

在 Word 2007+ 中,实现起来极其简单。只需通过功能区 XML 重新调整 FileOpen 命令的用途即可。

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <commands>
    <command idMso="FileOpen" onAction="doOpen" />
  </commands>
  ...

doOpen 方法有两个参数,第二个参数是允许您取消事件的输入/输出参数。

对于以前版本的 Office,我从未实现过完全无懈可击的解决方案。

In Word 2007+, this turns out to be incredibly simple to implement. Simply repurpose the FileOpen command through the ribbon XML

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <commands>
    <command idMso="FileOpen" onAction="doOpen" />
  </commands>
  ...

The doOpen method then has two parameters, the second being an in/out parameter allowing you to cancel the event.

For previous version of Office, I've never implemented a fully bulletproof solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文