如何从公开的COM接口方法中触发代码?

时间:2015-02-21 19:03:50

标签: c# plugins com

我公司使用的软件允许创建插件,但插件必须是COM对象,并且显示下面显示的IProfilePlugIn界面:

namespace profile
{
    [Guid("CE694B21-9547-11D3-8606-BB9193E3F22C")]
    [TypeLibType(192)]
    public interface IProfilePlugIn
    {
        [DispId(9)]
        void AppClose();
        [DispId(8)]
        void AppCloseQuery(ref bool CanClose);
        [DispId(10)]
        void AppIdle();
        [DispId(11)]
        void AppOpen(ref bool ShowQuickStart, ref bool Continue);
        [DispId(3)]
        void ClientNotification(IProfileClient ProFileClient, string FileName, string ClientID, int Action, ref int Response);
        [DispId(7)]
        void ExecuteAction(string AActionID, ref bool Handled);
        [DispId(2)]
        void FieldChangeNotification(IProfileClient ProFileClient, int UniqueID);
        [DispId(4)]
        int GetAboutBoxBitmap();
        [DispId(15)]
        void GetEncryptionType(ref int EncryptionType);
        [DispId(14)]
        void GetLicenseCode(ref string LicenseCode);
        [DispId(13)]
        void GetLicenseName(ref string LicenseName);
        [DispId(6)]
        IProfileDialog GetProfileDialog();
        [DispId(5)]
        int GetSplashBitmap();
        [DispId(1)]
        void Initialize();
        [DispId(12)]
        bool RTUNotification(IProfileClient ProFileClient, int RTUType, out string AError);
    }
}

有一种方法AppOpen(ref bool ShowQuickStart,ref bool Continue);在程序首次打开时执行。例如,如何在该方法期间弹出一个消息框而不必实现所有其他方法?

据我所知,我必须在VS中创建一个ClassLibrary,然后将其标记为ComVisible并从接口继承并添加GUID属性和ClassInterfaceType,但这就是我迷失的地方。

我知道一旦创建了这个,我必须注册COM对象并对程序执行一些注册表更改以使用该插件。

我需要做什么才能制作MessageBox.Show(" Test");在AppOpen方法中执行?

1 个答案:

答案 0 :(得分:1)

  

我需要做什么才能制作MessageBox.Show(“Test”);在AppOpen方法中执行?

void AppOpen(ref bool ShowQuickStart, ref bool Continue)
{
    MessageBox.Show ("Test");
}