如何用c#来制作一个activeX控件或类似的东西

active|activex|控件

Q cat:
操作系统: 2000/xp
编程工具: vs.net 2003 /c#
问题: 我想制作一个activeX控件或类似的东西,有用户界面的,然后想在ie中使用,通过Vbscript与其进行数据交换,在以前好像可以使用vb就能做到,但是现在是vs.net 2003企业版,好像已经进化了,activeX成了老的技术,那vs.net如何解决这种类似的问题?如果要使用c#来编程的话,具体如何操作?还要有界面。

A回答:

在C#中和ActiveX控件对应的是Windows控件库(User Controls)。
在IE中激活Windows Forms控件可以分五步来完成:
* 创建Windows Forms控件;
* 创建一个包含对象标签的HTML文档;
* 创建虚拟目录,复制并设置权限;
* 配置代码访问权限;
* 运行该控件。
1. Windows Forms控件:SimpleControl.dll
几乎所有的Windows Forms控件都可以用,但在这个例子里,我们使用的是包含在.NET Framework SDK QuickStart Tutorial Creating Controls中的SimpleControl控件。
2. HTML文档: SimpleControl.html
接下来一步是生成内有一个对象tag的HTML文档,以激活Windows Forms控件。此外,还要加入一些脚本和输入tag(input tags)到该控件的示范程序入口。
<object id="simpleControl1"
classid="http:SimpleControl.dll#Microsoft.Samples.WinForms.Cs.SimpleControl.SimpleControl"
height="300"
width="300">
<param name="Text" value="Simple Control">
</object>

对象tag:
classid包含两个有趣的部分:导向控件库的路径和全名(fully qualified name),中间用“#”隔开。如果您熟悉ActiveX对象tag的话,您会发现我们没有使用GUID。在Windows 表单中,路径和全名(fully qualified name)合并在一起的整体被用来当作唯一的识别符。
参数tag被用来设置控件的属性:“name”参数是属性名,而“value”参数则是属性的值。
脚本:
<script>
function ChangeText() {
simpleControl1.Text = text1.value;
}

</script>

--------------------------------------------------------------------------------
<input type="text" id="text1">
<input type="button" value="Change Text" onclick="ChangeText()">

您可以写一个脚本来获得控件的程序入口,页面上的按钮和文本框已关联到一个简单的函数ChangeText,以设置该控件的text属性。为了是修改的结果体现出来,控件必须重绘(调用invalidated()实现)。
完整代码
下面是这个例子完整的HTML代码:
<html>

<script>

function ChangeText() {
simpleControl1.Text = text1.value;
}

</script>

<body>

<p>Simple Control</p>
<br>
<br>

<object id="simpleControl1"
classid="http:SimpleControl.dll#Microsoft.Samples.WinForms.Cs.SimpleControl.SimpleControl"
height="300"
width="300">
<param name="Text" value="Simple Control">
</object>

<br>
<br>

<input type="text" id="text1">
<input type="button" value="Change Text" onclick="ChangeText()">

</body>

</html>
3. 虚拟目录:
创建一个新的虚拟目录,并将控件(SimpleControl.dll)和HTML文档(SimpleControl.html)放到这个目录里。
注意:将该虚拟目录的执行权限设置为“脚本”,如果将执行权限设置为“脚本& 执行”的话,控件将不能正常激活。
4 配置代码访问权限
如果你是在intranet运行这个例子,并且没有改变.Net Framework的安全策略,这个例子可以正确运行了。如果你改变了安全策略,或者你打算从Internet网站运行,你需要配置Internet Explorer或者改变安全策略。一个办法将控件运行和下载的页面加入信任域。可以在Internet Explorer使用以下步骤完成:
1. 选择“工具|选项”
2. 选择"安全"项
3. 选择"受信任的站点"
4. 点击“站点”按钮。
5. 添加你的站点
6. 点击“确定”

你也可以配置.net framework安全策略。SDK文档中包括了如何配置安全策略的内容。
5. 运行控件:
用IE浏览器里指明虚拟目录和SimpleControl.html文件,即运行该控件。如果控件没有被正常激活,则可能需要重启一下IE或清空assembly下载缓存(assembly download cache)。
注意: 您可以使用gacutil /ldl查看您的assembly下载缓存的内容。可以使用gacutil /cdl清除缓存内容。
建议参考文章Using Windows Forms Controls in Internet Explorer(http://windowsforms.net/articles/iesourcing.aspx)。

cat: 谢谢你的回答,如何能得到全名(fully qualified name)?c#建立的控件都能用吗?跟普通控件有区别吗?我希望控件下载到客户端运行的(出现安全警告没关系),能行吗?
答:上面的Microsoft.Samples.WinForms.Cs.SimpleControl.SimpleControl就是全名,你可以在项目的属性对话框中设置根命名空间。一般建立的C#控件都可以使用,不过这方面还没有确切的资料。一般控件下载不是大问题,只要安全选项设好了就可以。但是一个大问题是在没有安装过.NET平台的机器上需要安装大约20M的.NET平台文件,有点麻烦。

时间: 2024-11-01 06:50:51

如何用c#来制作一个activeX控件或类似的东西的相关文章

c++ mfc activex-开发一个activex控件调用另一个Activex控件

问题描述 开发一个activex控件调用另一个Activex控件 我现在利用Vc++2010开发一个新的控件项目,其中一个显示画面要插入其他厂家的activeX控件,想利用其中的功能,做进一步的功能增强.但是我发现尽管项目编译没有报错,但在实际运行调用过程根本实现不了.通过断点追踪发现,那个显示画面的m_hWnd在生成过程中为0x0000000.但是如果移除那个厂家的activex控件,那个显示画面的m_hWnd在生成过程中为非零.请教高手其中的原因?请问activeX控件的二次封装能否实现?最

如何用ATL创建ActiveX控件

演示截图: 代码简介或代码解析:        如何用ATL创建ActiveX控件 实现了一个ActiveX控件,它在一个圆内部有个正多边形,当用户在多变形内部单击将会使多边形的边数在当前的基础上+1,在多变形外部单击将会使多边形的边数在当前的基础上-1,并能改变多边形的颜色.最后举了两个例子说明了如何使用这个刚刚生产得控件.一个是把该控件应用到网页中,一个则是用于一个基于对话框的程序中.详细代码请下载压缩包. (一) 创建工程 (1) 打开VC6集成开发环境,按新建按钮,选择PROJECT标签

问一个关于ActiveX控件的问题

问题描述 我在WEB上嵌了一个ActiveX控件,用JS调用ActiveX控件的方法来完成一些操作.我现在希望在有些情况下,这个控件不在WEB上显示,直接用后台的JAVA程序去调用这个ActiveX控件的方法来完成一些操作请问各位高手,有什么办法可以做到吗?补充一下:这个ActiveX控件是我们买的产品,所以没法重用那些操作方法的代码.要不然直接把那些代码复制到后台就OK了. 解决方案 解决方案二:自己顶一下解决方案三:不行.activeX是客户端的.服务端程序不能直接操作.解决方案四:既然ac

ActiveX控件注册的几种方法

本文中的程序原为VC++所编写,略改动一些,将程序用C++Builder编写. ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX控件的前身就是OLE控件.由于ActiveX控件与开发平台无关,因此,在一种编程语言上开发的ActiveX控件可以无须作任何修改,即可在另一种编程语言中使用,其效果如同使用Windows通用控件一样.如:在VC++中开发的ActiveX控件,不作任何修改即可应用于VB中.由此可见,通过使用Activ

ActiveX控件的安全初始化和脚本操作 和 数字签名SIGN

摘要:数字签名SIGN保证控件在下载时候的安全性.如果你的代码已经经过数字签名,即使用户IE的安全设置很高也能下载,安装并登记.但是在页面上初始化,或者用脚本运行这个控件,为了保证安全性,还需要进行MARK.         数字签名SIGN     曹晓峰         摘要:数字签名保证控件的安全性.数字签名使用证书.证书一般有个人证书和授信公司证书.个人证书是对个人的信任,由个人承担责任,控件每次下载时需要进行确认.公司证书是由第三方公司发布的,保证控件的安全性,公司证书需要付费.Win

C#调用ActiveX控件的疑问,调用成功,但是如何进入代码程序

问题描述 最近编了一个ActiveX控件,客户端是个读卡器.<objectid="csharpActiveX"classid="clsid:F742E011-3467-4447-B069-C5BF3D148EF9""></object><inputid="Button10"type="button"value="连接读卡器"onclick="Connect(

【转】ActiveX控件注册的几种方法

from:http://hi.baidu.com/estellejiang/blog/item/af16e862bbd1d3d7e6113aa7.html      ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX控件的前身就是OLE控件.由于ActiveX控件与开发平台无关,因此,在一种编程语言上开发的ActiveX控件可以无须作任何修改,即可在另一种编程语言中使用,其效果如同使用Windows通用控件一样.如:在VC++

在C++中用ActiveX控件显示PDF文件

PDF介绍 PDF是"Portable Document Format 可移植文档格式"的缩写,它是Adobe公司开发的一种电子文档格式,已经成为国际通用的电子文档交换事实标准.PDF文件可以在各种平台下阅读.编辑.发布.该文件格式支持字体.图像.甚至任何附件的嵌入. Adobe公司提供了两种软件用于处理PDF文档,分别是Acrobat及Acrobat Reader:前者功能强大,不仅能阅读,还可以创建或编辑PDF文档,但要收费:后者只具备阅读功能,为免费软件. 用ActiveX控件显

用C#编写ActiveX控件(一)

active|activex|控件  前些日子做一个Web项目,必须自己编写一个ActiveX控件.如今的ActiveX控件大多是使用VB/C++来开发的,而我对他们并不熟悉,因此考虑使用熟悉的C#编写ActiveX控件.     首先,建立一个WinForm控件项目HelloWorld,并拖入一个Label控件,文字设为HelloWorld,如图:   UserControl1.cs内容如下:  using System;  using System.Collections;  using S