我用的是aximp命令来生成两个dll文件和一个class来使用的,两个Dll添加引用之后,通过class来初始化 然后添加到windformhost;声明:OCX控件已注册
1 private static AxDSSPlayBackLib.AxDSSPlayBack _dss; 2 #endregion 3 4 #region [构造函数] 5 public DahuaDSSRecordPlayer() 6 { 7 InitializeComponent(); 8 _videoFile = new Dictionary<string, NET_RECORDFILE_INFO>(); 9 _provider = HI.Provider; 10 HookEvent(); 11 _dss = new AxDSSPlayBackLib.AxDSSPlayBack(); 12 _dss.BeginInit(); 13 panelPlayer.Controls.Add(_dss); 14 _dss.Width = panelPlayer.Width; 15 _dss.Height = panelPlayer.Height; 16 _dss.EndInit(); 17 _dss.OnMessage += new AxDSSPlayBackLib._DDSSPlayBackEvents_OnMessageEventHandler(_dss_OnMessage); 18 string str = ""; 19 string[] arr; 20 if (System.Configuration.ConfigurationManager.AppSettings["Dssvalue"] != null) 21 { 22 str = System.Configuration.ConfigurationManager.AppSettings["Dssvalue"].ToString(); 23 } 24 if (str != "") 25 { 26 arr = str.Split('|'); 27 if (arr.Length == 4) 28 { 29 _dss.LoginServer(arr[0], short.Parse(arr[1]), arr[2], arr[3]); 30 } 31 } 32 }
代码总是在执行到
private static AxDSSPlayBackLib.AxDSSPlayBack _dss; #endregion #region [构造函数] public DahuaDSSRecordPlayer() { InitializeComponent(); _videoFile = new Dictionary<string, NET_RECORDFILE_INFO>(); _provider = HI.Provider; HookEvent(); _dss = new AxDSSPlayBackLib.AxDSSPlayBack(); _dss.BeginInit(); panelPlayer.Controls.Add(_dss); _dss.Width = panelPlayer.Width; _dss.Height = panelPlayer.Height; _dss.EndInit();
_dss.EndInit();的时候出现异常,

首先OCX肯定是要注册的,然后把ocx调用类实例化,存在一个dic里,需要的时候再取出来,