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.

  • 相关阅读:
    最优装载(二分答案)
    最小生成树
    hibernate映射实体类查询时数据库空字段赋值给实体类报错的问题
    'hibernate.dialect' must be set when no Connection avalable
    简单了解一下oracle中的显示游标和存储过程
    oracle中的预定异常和自定义异常
    PL/sql中如何声明变量,常量,控制语句及for,loop,while和顺序控制的使用
    简单了解,使用oracle中的索引,表分区
    oracle中序列,同义词的创建
    数据库权限管理
  • 原文地址:https://www.cnblogs.com/otomii/p/2541466.html
Copyright © 2011-2022 走看看