日期:2014-05-16  浏览次数:20347 次

C#开发ActiveX,实现访问SQL数据、移动鼠标事件,绘图,Javascript操作ActiveX

一、
开发环境
1、VS2005 C#
2、访问的数据库 SQL2000
二、建立项目和项目配制
1、建立“Windows 控件库”,命名为“MyControl”,并把“UserControl1”控件改名为“WEB”。
2、选择“MyControl”项目“属性”,在“生成”,设置“为COM Interop 注册”为选择状态,选择“生成序列化程序集”为“关闭”状态,一般也可以设置为“自动”状态。如图:
??????????????
??? ????

3、找到项目下的“AssemblyInfo.cs”文件,
? (1)增加代码:


[assembly: AllowPartiallyTrustedCallers()]

注:允许部分受信任的代码调用具有强名称的程序集。如果没有此声明,则只有完全受信任的调用方才可以使用这类程序集

(2)把“[assembly: ComVisible(false)] ”修改为"[assembly: ComVisible(true)]"
注:ComVisible属性:控制程序集中个别托管类型、成员或所有类型对 COM 的可访问性。
????
??? (3)把"[assembly: Guid("8a4af041-84fd-4d8c-aed2-3916f6135bf4")]"注释掉,不用。

? 每次重新生成项目,classid都会变,网页引用classid不固定,所以说这行代码基本没用(实践证实是这样的,原因不明)。
???????????
???

4、找到项目代码文件“WEB.cs”。增加Guid属性,可以在开发环境里选择“工具”—>“创建GUID”,创建唯一的GUID。
??? (1)增加对“using System.Runtime.InteropServices;”命名空间的引用。

(2)
在定义类的前一行增加"[Guid("F7D892EA-9546-3BEB-A8D9-67A859A407D6")]"

注:主要是给这个项目的这个组件定义一个固定的classid,方便网页对classid对象的引用。也是代替“assembly: Guid”属性。如图:

????

这时候项目环境就配制完成了。下面就可以写代码了。
5、生成项目后,可以看看本机的这个组件的Guid和我们设置的是否一致,如果不一致的话,我们是无法正确引用classid的,在网页中也无法显示相应的组件。
?????? 找到“Microsoft Visual Studio 8\Common7\Tools\Bin”目录下的“OleView.Exe”程序,运行该程序,选择“.NET Category”,如图:

???

三、
网页引用MyControl项目组件,也就是通常意义上讲的ActiveX。


<object? id="MyControl" name="MyControl" classid="clsid:F7D892EA-9546-3BEB-A8D9-67A859A407D6" Width="500" Height="400" VIEWASTEXT />
注:在这里注意一下classid与Guid设置的是否一致就可以了。
四:演示效果SQL数据访问、移动鼠标事件、绘画、javascript操作组件。
????????
???
源代码,数据库,说明文档下载

http://dl.dbank.com/c0sc41jhxt


谢谢转载引用本文! 转载时如有可能请保留以下链接, 作者将表示感谢!
原文地址:http://www.bmpj.net/thread-1206-1-1.html

1 楼 drcjian 2011-08-04  
没必要用c#写ActiveX,难道你要用户去装framework???