无法使用C#创建activex对象

时间:2013-12-09 20:04:11

标签: c# activex

我正在客户端计算机上部署C#应用程序。应用程序需要从另一个程序访问代码,因此它可以从另一个应用程序的屏幕中删除文本。它在开发机器上正常运行,但在客户端机器上它抛出错误“ActiveX组件无法创建对象”这是我从哪里得到错误!

    private ExtraSession objExtraSession;
    private ExtraSessions objExtraSessions;
    private ExtraScreen objExtraScreen;
    private ExtraArea objExtraArea;
    private ExtraSystem objExtraSystem;
    protected void sessionInitializer()
    {
        try
        {
            objExtraSystem = (ExtraSystem) Microsoft.VisualBasic.Interaction.CreateObject("Extra.system");

            if (objExtraSystem == null)
            {
                MessageBox.Show("Could not create system");
                return;
            }
            objExtraSessions = objExtraSystem.Sessions;

            if (objExtraSessions == null)
            {
                MessageBox.Show("Could not create sessions");
                return;
            }
            if (!System.IO.File.Exists("C:\\Users\\" + userid + "\\Documents\\Attachmate\\EXTRA!\\Sessions\\SAS.edp"))
            {
                MessageBox.Show("File does not exist");
                return;
            }

            objExtraSession = (ExtraSession) Microsoft.VisualBasic.Interaction.GetObject("C:\\Users\\"+ userid + "\\Documents\\Attachmate\\EXTRA!\\Sessions\\SAS.edp");

            if (objExtraSession == null)
            {
                MessageBox.Show("Could not create session");
                return;
            }

            if (objExtraSession.Visible == 0)
            {
                objExtraSession.Visible = 1;
            }

            objExtraScreen = objExtraSession.Screen;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.StackTrace, "Failed to initialize Attachmate sessions");
        }
    }

错误是从objExtraSession =(ExtraSession)Microsoft.VisualBasic.Interaction.GetObject(“C:\ Users \”+ userid +“\ Documents \ Attachmate \ EXTRA!\ Sessions \ SAS.edp”)生成的;

我错过了一些步骤。请帮帮我。提前谢谢。

2 个答案:

答案 0 :(得分:4)

最可能的解释是您的开发计算机已安装ActiveX控件,但客户端计算机没有。阅读控件的部署文档,并执行部署到客户端计算机所需的内容。

答案 1 :(得分:0)

感谢您的所有回复...方法GetObject正在创建一个其activex组件未注册的对象...我通过查找相应的* .ocx文件并在文件上调用Regsvr32解决了这个问题...