How to use ActiveX with ASP.NET

爷,独闯天下 提交于 2019-12-24 03:11:59

问题


I have created an ActiveX component, but not able to access that ActiveX compoment in ASP.NET. It gives "Microsoft JScript runtime error: Automation server can't create object" error message while creating activeX object using javascript.

ActiveX Component Code:

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 Code:

<%@ 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:


If the ActiveX control is accessed with JavaScript, then the ActiveX control must be installed as a browser (IE only) add-on with permissions set to allow scripting. The error you are receiving is because the ActiveX control is not accessible in IE.

You can use ActiveX controls on the server (in ASP.NET), but it would be unusual. ActiveX controls are primarily for the browser, but since an ActiveX control is also a COM DLL, it is possible.

I recommend against developing your own ActiveX control, IE security has gotten tighter, and unless it is for internal use (i.e., behind a firewall), most people (visitors to your web page) will resist installing it on their computer.




回答2:


You probably need to register the DLL.

See this for a complete tutorial on how to go about this.

regasm AClass.dll /tlb /codebase



来源:https://stackoverflow.com/questions/2062794/how-to-use-activex-with-asp-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!