• c#使用activex控件


    一、不生成具有强名称的程序集

    1.使用下面这两个命令将COM控件转换成.Net程序集

    aximp c:““windows““system““shdocvw.dll

    tlbimp mshtml.tlb

    aximp将产生两个文件:AxSHDocVw.dll and SHDocVw.dll.

    tlbimp将产生MSHTML.dll,它包含了3000多个 DHTMLDOM的接口,所以转换可能需要一些时间.

    2. 上面产生的DLL文件直接可由.Net应用程序调用了。

    二、生成具有强名称的程序集

    1.用sn 命令生成三个snk文件,分别是后面将要生成的程序集的密钥文件

    Sn –k AxSHdoc.snk

    Sn –k shdocvw.snk

    Sn –k mshtml.snk

    2.使用上面aximp 和 tlbimp 生成这三个程序集文件,这些命令加上/keyfile:可选项

    aximp c:““windows““system““shdocvw.dll /keyfile:AxSHDOC.snk shdocvw.snk

    tlbimp mshtml.tlb /keyfile:mshtml.snk

    这样就可以生成具有强名称的程序集了。

    3.把它们加到程序集缓存中,分别调用

    Gacutil axshdocvw.dll

    Gacutil shdocvw.dll

    Gacutil mshtml.dll

    打开全局程序集缓存,就可以看到这三个程序集已经在列表中了。

    在C:““winnt““assembly也可以看到了。

    调用ActiveX控件编写播放器时,遇到了不少问题!

    播放器如

    using System;

    using System.Drawing;

    using System.Collections;

    using System.ComponentModel;

    using System.Windows.Forms;

    using System.Data;

    using MediaPlayer;

    namespace AdvancePlayer

    {

    /**//// summary

    /// Form1 的摘要说明。

    /// /summary

    public class Form1 : System.Windows.Forms.Form

    {

    private AxMediaPlayer.AxMediaPlayer axWindowsMediaPlayer1;

    private System.Windows.Forms.OpenFileDialog openFileDialog1;

    private System.Windows.Forms.MainMenu mainMenu1;

    private System.Windows.Forms.MenuItem menuItemOpen;

    private System.Windows.Forms.MenuItem menuItemClose;

    private System.Windows.Forms.MenuItem menuItemInitSize;

    private System.Windows.Forms.MenuItem menuItemFullScreen;

    private System.Windows.Forms.MenuItem menuItemShowAudioCtrl;

    private System.Windows.Forms.MenuItem menuItemShowPositionCtrl;

    private System.Windows.Forms.MenuItem menuItemShowTrackbarCtrl;

    private System.Windows.Forms.MenuItem menuItemFile;

    private System.Windows.Forms.MenuItem menuItemVideo; [Page]

    private System.Windows.Forms.MenuItem menuItemWindow;

    /**//// summary

    /// 必需的设计器变量。

    /// /summary

    private System.ComponentModel.Container components = null;

    public Form1()

    {

    //

    // Windows 窗体设计器支持所必需的

    //

    InitializeComponent();

    //

    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码

    //

    }

    /**//// summary

    /// 清理所有正在使用的资源。

    /// /summary

    protected override void Dispose( bool disposing )

    {

    if( disposing )

    {

    if (components != null)

    {

    components.Dispose();

  • 相关阅读:
    cf #787 (div3)
    SQL Server之一行多列转多行
    System.arraycopy()和Arrays.copyOf()是深拷贝or浅拷贝
    quartz时间表达式Cron总结
    Leetcode 728. 自除数
    遇到个C++ MAP问题,有谁会的么?
    Leetcode 733. 图像渲染(牛,做出来了)
    Leetcode 661. 图片平滑器(终于解决)
    Leetcode 748. 最短补全词(今天结束)
    Leetcode 717. 1 比特与 2 比特字符(可以,一次过)
  • 原文地址:https://www.cnblogs.com/dlbird/p/1893342.html
Copyright © 2020-2023  润新知