ActiveX“控件”和HTML对象标签

时间:2010-12-29 20:01:17

标签: c# activex

我从一些我负责更新的同事那里继承了一些代码。我在.NET出现之前编写代码的经验很少,所以我对COM和ActiveX之类的东西并不十分熟悉。

以下是代码类似的内容:

[Guid("0B84013E-A3D3-1f2f-5E61-4646813BF5DE")]
public interface IGenerator
{
    string GenerateFileName();
}

[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("D499F7A6F-BAC2-4604-BF12-10481C07E924")]
public class Generator : IGenerator
{
    public string GenerateFileName() {
        // implementation details not important
        return "abcdef.xyz";           
    }
}

项目生成一个使用regasm在机器上注册的dll文件:

regasm Generator.dll /tlb /codebase 

我们有一个网站正在使用如下代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script type="text/javascript" language="javascript">
    function Frob() {
                var as = new ActiveXObject("Test.Generator");
                var fn = as.GenerateFileName();
            }
    </script>
...

<img src="foo.jpg" onclick="Frob()" />

代码的问题是: 1)没有签名 2)他们必须使用regasm

自行注册程序集

我的任务是签署程序集并将其打包在CAB文件中,并将其放在网站上,以便提示用户以这种方式安装。

我到目前为止看到的教程告诉您将它打包在CAB中并将其放在网站上的OBJECT标记中:

http://msdn.microsoft.com/en-us/library/aa751974(v=vs.85).aspx

来自网站:

Microsoft Internet Explorer 4.0或更高版本以下列方式处理OBJECT对象和CODEBASE属性。

  1. 解析OBJECT对象并搜索CODEBASE属性。 如果缺少CODEBASE属性 或者以URL到对象开头 中的索引服务器 CodeBaseSearchPath,这个索引是 用于检索文件。

  2. 找到CODEBASE属性标识的.cab文件。

  3. 扩展.cab文件中的文件。

  4. 将扩展文件复制到用户的计算机(默认目录为\ windows \ occache)。

  5. 注册需要注册的对象和/或文件。

  6. 调用组件对象模型 (COM)CoCreateInstance函数 创建指定的实例 对象

  7. 我有一些问题/疑问:

    我的控件实际上没有用户界面。仍然把它放在OBJECT标签中是否有意义?

    我尝试将它放在object标签中并运行网站,它没有提示我安装任何东西。我如何让它工作?

0 个答案:

没有答案