我的ActiveX控件如何在Internet Explorer中接管打印,另存为,查找等?

时间:2009-09-15 12:25:39

标签: internet-explorer winapi activex ole

我有一个ActiveX控件,可以在IE中显示给定文件格式的文档,就像Adobe有一个显示PDF的ActiveX控件一样。

我的控件是一个整页控件,就像PDF查看器一样 - 它使用IE自己的EnableFullPage mechanism接管IE的整个客户区。

我想控制与文档相关的各种菜单和工具栏命令:打印,打印预览,页面设置,另存为,全选,复制,查找等。我猜这里必须有一个官方API,因为PDF查看器可以做到这一点。 (请注意,例如打印嵌入式ActiveX 控件的标准机制不适用 - 我需要显示自己的“打印”对话框并控制整个过程,就像PDF查看器一样。)

(在IE8之前,我能够通过使用Win32子类化来破解IE本身,这是令人讨厌的但是有效。但是IE8将标签内容保持在与工具栏不同的过程中,所以这不是没有DLL的选项注入,我可以看到Adobe PDF veiwer没有这样做。这就是为什么我认为有一个官方机制。)

2 个答案:

答案 0 :(得分:2)

可能是某些与DocObjects相关的界面,可能是IOleInPlaceFrame + IOleCommandTarget

答案 1 :(得分:1)

您可以使用ActiveDoc sample作为Anders建议实现活动文档服务器的基础。正如他所指出的那样,添加IOleCommandTarget可以控制菜单项。