使用 COM 加载项替换 Excel XP 中的“打开文件”对话框

发布于 2024-12-06 14:33:46 字数 414 浏览 0 评论 0原文

我正在为 Excel XP 开发一个 C# 插件,我需要使用自己的对话框处理文件打开和保存事件。我设法通过(基本上)在 Excel 应用程序对象上传递 WorkbookBeforeSave 事件并取消默认行为来完成此保存。有一个 WorkbookOpen 事件,但该事件在打开文档后触发,而不是在用户单击“打开”按钮或按 Ctrl-O 时触发。

这是一个类似的问题,尽管该解决方案适用于更高版本的 Office,对我不起作用: 在 COM 加载项中替换 Word 的“打开文件”对话框

我无法简单地自定义普通的“文件打开”对话框 - 我需要完全替换它。有什么想法吗?

I am working on a C# add-in for Excel XP for which I need to handle file open and save events with my own dialogs. I managed to do this for save by (basically) handing the WorkbookBeforeSave event on the Excel Application object and cancelling the default behaviour. There is a WorkbookOpen event, but it is fired after a document has been opened, not when the user clicks the Open button or presses Ctrl-O.

Here is a similar question, though the solution is for later versions of office and won't work for me: Replacing Word's Open File Dialog in a COM Add-in

I cannot simply customise the normal File Open dialog - I need to replace it entirely. Any ideas?

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

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

发布评论

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

评论(1

七七 2024-12-13 14:33:46

一种有点古怪的方法是从 Excel 的 com 接口接收 WindowActivate 事件(对于 excel10 为 dispID 0x614)。然后跟踪最后一个 hwnd 并观察它何时发生变化。如果是excel doc窗口(我想你可以使用spy++来找出excel窗口名称)

One somewhat hacky way would be to sink the WindowActivate event from Excel's com interface (dispID 0x614 for excel10). Then keep track of the last hwnd and watch for when it changes & if it is the excel doc window (I think you can use spy++ to find out the excel window names)

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