zoukankan      html  css  js  c++  java
  • Silverlight使用自定义的COM组件

    Hi,

    code first:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    
    namespace ClassLibraryForPrint
    {
        [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
        public interface IComEvents
        {
            void OnPrintBegin(object sender, EventArgs e);
        }
    
        public delegate void ComDelegate(object sender, EventArgs e);
    
        [ComVisible(true)]
        [ComSourceInterfaces(typeof(IComEvents))]
        [ProgId("ClassLibraryForPrint.PrintDemos")]
        public class PrintDemos
        {
            public string Print()
            {
                if (OnPrintBegin != null) OnPrintBegin(this, new EventArgs());
                return "Printing";
            }
            public event ComDelegate OnPrintBegin;
        }
    
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Runtime.InteropServices.Automation;
    
    namespace SilverlightApplication171
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
                using (dynamic PrintDemos = AutomationFactory.CreateObject("ClassLibraryForPrint.PrintDemos"))
                {
                    AutomationEvent automationEvent = AutomationFactory.GetEvent(PrintDemos, "OnPrintBegin");
                    dynamic printStr = PrintDemos.Print();
                    label1.Content = printStr;
                }
            }
        }
    }

    Hope helpful

    Something need to do:

    1.set the ComVisible(true) in the file AssemblyInfo in properites folder in windows Class Lib.

    2.check the register for com interop in the property of the project.

    3.use the RegAsm.exe to register the dll.

    4.check the appcation is running in oob and in the out-of-browser setting ,be sure that require elevated trust is checked.

  • 相关阅读:
    COM+帐户权限注意事项
    [转]MVC和MVP的一些思考
    让VS智能感知Nhibernate的映射文件
    C#中使用Ftp一例
    [源码共享]以前用Remoting写的一个小游戏:Network Bomb
    wxwidgets学习与使用备忘录三(烦恼与便捷解决方案篇)
    regsvr32简介
    cocos2dx for XNA
    使用wxformbuilder进行wxwidgets的快速开发
    wxwidgets学习与使用备忘录一(下载、安装、配置篇)
  • 原文地址:https://www.cnblogs.com/otomii/p/2541466.html
Copyright © 2011-2022 走看看