首页 > 解决方案 > 什么可能导致 COM 组件被注册(在 Visual Studio 参考 COM 部分中显示)但在 Office ActiveX 组件中不可见?

问题描述

我正在尝试将自定义 ActiveX 组件添加到 PowerPoint 幻灯片中,我一直在尝试很多东西,我的 powerpoint 版本是 32 位,现在我正在尝试使其尽可能简单。该项目是 AnyCPU 和 .net 4.7。

VSTO 不符合我的需要,所以这不是一个选项(据我所知,它不允许您向幻灯片添加自定义控件,我需要)

[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("87622EEA-5A6A-4F1B-A56A-AC0F88603EF6")]
public interface IBasicActiveXSampleInterface
{
    string testOne();
}

[ClassInterface(ClassInterfaceType.None)]
[Guid("B2B334B3-2785-40C6-A3B9-1CEF9D7D4D94")]
[ProgId("EKATONXSampleProg")]
public class BasicActiveXSample : IBasicActiveXSampleInterface
{
    public string testOne()
    {
        return "test 1234";
    }
}

还在装配级别声明:

[assembly: ComVisible(true)]

我在项目属性中禁用了注册 COM 并添加了构建后事件,认为这可能是一个位问题,因此项目由 .net 4 regasm(框架和框架 64)注册。

该组件显示在 COM 组件列表中,在 Visual Studio 中添加引用,但无论我做什么,它都不会在其他控件下的 powerpoint 开发人员模式下显示(但其他控件工作得很好,我可以将媒体播放器添加到幻灯片例如)。

编辑:最终目标是拥有一个可见的 winform 控件来托管 WPF 内容,但是一旦我注册了一个用 C# 编写的 activeX 控件,我就会有宾至如归的感觉,我尝试从一开始就遵循稀缺的教程(并且几乎没有文档)关于这个主题,除了我的控件随机显示在列表中并且在添加错误说 powerpoint 无法读取注册表时崩溃之外,所有的都失败了。

我查看并复制无济于事的页面列表:

https://www.codeguru.com/csharp/.net/net_general/comcom/article.php/c16257/Create-an-ActiveX-using-a-Csharp-Usercontrol.htm

https://codedocu.com/Office-365/Office/COM-Controls/Code_colon_-Create-your-own-ActiveX-Component-in-Visual-Studio-2017-and-Office-2016-365?2075

https://codedocu.com/Details_mobile?d=2382&z=1&t=Create+C%23+COM+Control+for+Office

标签: c#comactivexoffice-interopcom-interop

解决方案


推荐阅读