WPF 添加ACTIVEX 控件 ——System.Windows.Forms.AxHost+InvalidActiveXStateException异常

---恢复内容开始---

一、ACTIVEX及其相关概念

COM(Component Object Model,对象组件模型);

DCOM(Distributed COM,分布式对象组件模型);

CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构);

动态数据交换(Dynamic Data Exchange,DDE),解决了数据的更新,但数据格式仍是问题;

对象的链接与嵌入(Object Linking and Embedded,OLE),数据交换提高到“对象交换”;

ActiveX是指宽松定义的、基于COM的技术集合,而OLE仍然仅指复合文档;ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而 ActiveX则以提供进一步的网络应用与用户交互为主。

二、WPF 加入ACtiveX 控件

  使用 WindowsFormsHost 元素可将 Windows Forms控件放置到 WPF 元素或页面中。

  若要在 Windows Forms控件或窗体中承载 WPF 元素,使用 ElementHost控件

1.添加引用 WindowsFormsIntegration ;

2.创建 WindowsFormsHost 对象

        System.Windows.Forms.Integration.WindowsFormsHost host = new System.Windows.Forms.Integration.WindowsFormsHost();

3.实例化Activex控件 、初始化控件、控件复值到host

  txsl1 = new activex();

  host.Child = txsl1;

4.添加Host对象到WPF 窗体

this.mainGrid.Children.Add(host);

---恢复内容结束---

时间: 2024-12-29 13:02:17

WPF 添加ACTIVEX 控件 ——System.Windows.Forms.AxHost+InvalidActiveXStateException异常的相关文章

System.Windows.Forms.Control : Component, IOleControl, IOleObject, IOleInPlaceObject, IOleInPlaceActiveObject....

#region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll #endregion using System.Collections; using System.ComponentModel; using Syst

当前线程不在单线程单元中,因此无法实例化 ActiveX 控件

"/"应用程序中的服务器错误. 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件"c552ea94-6fbb-11d5-a9c1-00104bb6fc1c". 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Threading.ThreadStateException: 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件"

Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)

一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32位应用编程接口(Win32 API)和组件对象模型的一系列扩充和增强,目标是把计算机桌面环境与因特网环境集成起来,同时保护在Windows技术中现有的开发投资.微软的 ActiveX技术根本上就是修改过的OCX技术,使它能够跨越Internet,主要是使用WWW来传递控件.            A

System.Windows.Forms.ListView : Control

#region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll #endregion using System.Collections; using System.ComponentModel; using Syst

图解VC++开发ActiveX控件C#调用

1 新建ActiveX控件工程 2 编译,运行 使用下图所示VC++自带测试工具来测试ActiveX控件: 3 测试容器 插入刚做的ActiveXDemo1控件 4 添加属性 添加名为outstr的属性; 在控件的实现文件中加入黑体一句: void CActiveXDemo1Ctrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { // TODO: Replace the following code

C# 制作ActiveX控件并添加到网页

1.创建ActiveX控件--按钮 2.定义一个接口,并在控件中实现 3.部署安装 4.CAB打包 5.添加到网页中进行测试 一. 创建ActiveX控件--按钮 1.新建一个Window窗体控件库项目,命名为ActiveXDemo. 2.在自动生成的UserControl1页面上添加一个button 3.点击事件里我们只弹出一个MesageBox [csharp] view plain copy private void button1_Click(object sender, EventAr

Microsoft Windows Messenger ActiveX控件远程代码执行漏洞(MS11-027)

漏洞描述 此次扫描检测到目标主机尚未安装MS11-027/KB2508272漏洞相应的HotFix,也未安装可以修正该漏洞的Service Pack,这意味着目标主机可能存在MS11-027/KB2508272漏洞. Microsoft Windows是微软发布的非常流行的操作系统. Microsoft Windows Messenger ActiveX控件在实现上存在远程代码执行漏洞,远程攻击者可利用此漏洞在使用ActiveX应用程序中执行任意脚本代码. Microsoft Internet

针对Windows 64位系统中Matlab没有LED Control Activex控件的解决方法

Win 10 64bits系统中Matlab 64位软件没有LED Control Activex控件,LED ActiveX Control控件位于Gauges Blockset模块中,而Gauges Blockset模块只能安装在Matlab 32-bit的版本中(并不是一定需要安装在window 32-bit,本人测试环境为win10 64bit),在win10 64-bit环境下安装时默认安装的是Matlab 64-bit,所以不会安装Gauges Blockset模块,当然就不会有Ac

C#开发ActiveX控件

昨天写了篇博客<Winform 程序嵌入WPF程序 并发送消息>,没有说明为什么要嵌入WPF程序,那么今天就来唠叨唠叨其中的一个使用场景,开发ActiveX控件 首先,新建一个类库工程HuaYun.ActiveX,右键工程属性,在“应用程序”页,点击“程序集信息”按钮,在弹出的窗体里勾选“使程序集COM可见”,具体操作如下图 第二步,切换到“生成”的选项卡,勾选“为COM互操作注册”,如下图 第三步,在AssemblyInfo.cs里添加[assembly: AllowPartiallyTru