2010-01-14 118 views
2

我创建了一个ActiveX组件,但无法访问ASP.NET中的ActiveX控件。它使用JavaScript创建ActiveX对象时会出现“Microsoft JScript运行时错误:自动化服务器无法创建对象”错误消息。如何在ASP.NET中使用ActiveX控件

ActiveX组件代码:

using System.Runtime.InteropServices; 
using System.Windows.Forms; 

namespace FirstActiveX 
{ 
    [Guid("465F2D2E-C638-413e-A353-01E09DC4C7ED")] 
    [InterfaceType(ComInterfaceType.InterfaceIsDual)] 
    [ComVisible(true)] 
    public interface IMyActiveX 
    { 
     [DispId(1)] 
     string FirstName{ get; set;} 
     [DispId(2)] 
     string LastName { get; set; } 
     [DispId(3)] 
     string Address { get; set; } 
     [DispId(4)] 
     void Show(); 
    } 

    [Guid("8975D137-9D96-492c-87AE-37D653BADE16")] 
    [ProgId("FirstActiveX.MyActiveX")] 
    [ClassInterface(ClassInterfaceType.None)] 
    [ComDefaultInterface(typeof(IMyActiveX))] 
    [ComVisible(true)] 
    public class MyActiveX : IMyActiveX 
    { 
     #region IMyActiveX Members 

     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Address { get; set; } 

     public void Show() 
     { 
      MessageBox.Show(string.Format("Mr. {0} {1}, Address : {2}", FirstName, LastName, Address)); 
     } 

     #endregion 
    } 

} 

HTML代码:

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

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

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<script language="javascript" type="text/javascript"> 

    function UseActiveX() { 
     var x = new ActiveXObject("FirstActiveX.MyActiveX"); 
     x.FirstName = "Nirajan"; 
     x.LastName = "Singh"; 
     x.Address = "Kamothe, Navi Mumbai"; 
     alert(x.FirstName); 
     return false; 
    } 

</script> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:Button ID="btnShow" runat="server" Text="Show" OnClientClick="return UseActiveX();" /> 
    </div> 
    </form> 

</body> 
</html> 

回答

1

你可能需要注册DLL。

请参阅this了解如何进行此操作的完整教程。

regasm AClass.dll/TLB /基本代码

2

如果ActiveX控件被用JavaScript访问,则ActiveX控件必须安装为一个浏览器(IE只)附加设置为允许脚本权限。您收到的错误是因为ActiveX控件在IE中无法访问。

您可以在服务器上使用ActiveX控件(在ASP.NET中),但这很不寻常。 ActiveX控件主要用于浏览器,但由于ActiveX控件也是一个COM DLL,因此它是可能的。

我建议不要开发自己的ActiveX控件,IE的安全性变得更加紧张,除非是内部使用(即在防火墙后面),否则大多数人(访问您的网页)都会拒绝安装在他们的计算机上。

相关问题