在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 详细的activeX控件开发教程

详细的activeX控件开发教程

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:3.80M
  • 下载次数:19
  • 浏览次数:163
  • 发布时间:2020-07-10
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
非常详细的ActiveX控件开发教程,主要介绍vs2008c#开发ActiveX控件在开发到打包到更新的具体操作图解
并把控件库命名为 ActiveX如图34 添加新项目 ?| 项目类型P 模板① NET Framework3.5器注 Visnal stadio已安装的板 Windows neb wiNdows窗体应用程序 回类库 智能设备 N应用程序 F浏览器应用程序 +Office 数据库 控制台应用程序 Windows服务 Reporting 用户控件库 'FF自定义控件库 国空项目 lindows窗体控件库 workflow 2 则试 我的板 数据库项目 其他语言 中其他项目类型 搜索联机模板 中测试项自 用于创建在 Windows窗体应用程序中使用的控件的项目( RET Framework3.5) 名称① 位置C ADemo\Activate 览①) 确定 取消 图3-4 现在解决方案资源管理器的情况如图3-5: 「解决方案资源管理器 回员 解决方案“ Activektest'(1个项目 “国 Properties 由引用 白国 Activex.cs Activex. Designer. cs 图 Activel.res 图3- 3.3更改项日属性:右键瓜击“ ActiveX”如图3-6 D解决方案资源管理器- Activel ③团回回员 解冲方家 weTTest”(1个项目 生成了 重新生成① 调试G〕 剪切c 粘贴① 移除 重命名 卸载项目〔 在 Windows资源管理器中扌 属性① 图36 在ⅤS的工作区域出现了如下图的界面如图3-7 应用程序 配置C):|/A 了平台):[/A 生成 程序集名称) 默认命名空间): 生成事件 ctive Activex 目标 Framework G) 输出类型 1. NET Framework 3.5 类库 资源 启动对象@) 服务 〔未设置 程序集信息 设置 资源 指定应用程序资源的管理方式 引用路径 图标和清单C 签名 清单确定应用程序的具体设置。要嵌入目定义清单,请首先将它添加到项目中,然后从 以下列表中选择它。 代码分析 傲认图标〕 」口 清单 嵌入带默认设置的清单 C资源文件( 图 单击“稈序集信息(①.”弹出“稈序及信息”如图3-8: 选“使程序集COM可见(M) 程序集信息 ? x 标题): ActiveX 说明① 公司C) 产品吧 ActiveX 版权 Copyright o 2010 商标 程序集版本[) 文件版本):pp0 GUIDG): 89£e4ecc-51f4-4199-aef8-1a5282cbc01d 非特定语言):「无 程序集可见〕 确定 取消 图38 选择“生成”选项卡,并勾选“为COM互操作注册(P)”如图3-9: 注意:此处是在 debug状念下修改的,如果是调到 release状念下,还需要再设置一下。 应用程序 c):活动0bug 平台):活动ucP 生成* 生成事件 条件编译符号 调试 定义 DEBUG常量 资源 问定义 TRACE常量 目标平台G Any CPU 服务 厂允许不安全代码() 设置 厂忧化代码亿) 引用路径 错误和警告 警告等级( 签名 取消告( 代码分析将警告视为错误 无① C特定警告〔) C全部C 输出 输出路径 bin\Debug\ 浏览) XML文档文件C 因CO互操作注册( 2 生成序列化程序集):「自动 高级① 图3-9 34修改 Assemblylnfo.cs文件如图3-10 解决方案资涯管理器一解决方案“·早X 团国员 网解决方案“ ActiveXTest”(1个项目 Active 日- Properties CEl AssemblyInfo.cs 回引用 4-a UserControllcs 图3-10 引用命名空间: using System. Security is *A: Assembly: AllowPartiallyTrustedCallers o] AssemblyInfo.cs文件添加后如图3-11 1 E using Syst em Reflection 2 using Syst em Runtime CompilerServices 3 using System. Runtime Interop Services 5 using System Security; //by EagleInSky 2010-01-13 10:53 9//有关程序集的常规信息通过下列属性集 控制。更改这些属性值可修改 11与程序集关联的信息。 2 Assembly: AllowPartiallyTrustedcallers OT//by EagleInSky 2010-01-13 10: 53 14 [assembly: AssemblyDescriptionr-sxy 13 assembly 15: Assembly: AssemblyConfiguration()] 16 [assembly: AssemblyCompany(" )] 17 [assembly: AssemblyProduct("ActiveX")] 18 [assembly: Assembly Copyright( Copyright o 2010)1 19 [assembly SeI blyTrademark()] 20 [assembly: AssemblyCulture(") 21 24/将 Comvisible设置为 false使此程序集中的类型 25//对CO组件不可见。如果需要从OM访问此程序集中的类型, 26//则将该类型上的 Comvisible属性设置为true 27 [assembly: ComVisible(true)] 28 29如果此项目向CM公开,则下列GUID用于类型库的ID 30 Assembly: Guid("89fedecc-51f4-4199-aef8-1a5282cbc01d)] n也1A上一=mAMn 图3-11 3.5为控科( User Controlled)添加内容 把 Usercontrol l.cs重命名为你需要的名字。这里我命名为: ActiveX 此 AcliveⅩ主要包括一个 Button控件和一个 TexTBox控件,Bun控件的 Click事 件是弹出一个 MessageBox对话框,内容是 TextBox中的内容。再添加一个公共方 这样做可以达到两个目的: 目的一:添加一个方法,供BS前台程序直接调用,从而实现业务功能 目的二: Acliveⅹ控件可以提供B/S程序UI界面,可以响应BS程序中对UI 的操作事件实现业务功能 为 ActiveX.cs添加命名空间: using system. Runtime. InteropServices 首先:为控件创建GUID,这个编号将用于B/S系统的客户端调用时使用。 创建方法:T具一>创建GUD()如图3-12~3-13 工具〔〕 )分析)窗口)帮助 附加到进程) CtrltAlttP 点设备安全管理器 创建GmG Dotfuscator Community Edition 0LE/CM对象查看器 HCF Service Configuration 外部工具) 导入和导出设置g) 自定义c) 选项 图3-12 Create gull Choose the desired format below, then select"Copy" to copy the results to the clipboard (the results can then be Copy pasted into your source code) Choose"Exit "when done New guiD GUID Format Exit o 1. MPLEMENT_ OLECREATEL I 2. DEFINE GUID(. 3. static const struct GUID=..J C 4 Registry Format (ie (xxxxxxx-xxxx.xxxx)) Result /{59EA8A504FC1405aA471595247AB2E41} IMPLEMENT_ OLECREATEK<class>>, <<extenal_ name>> 0x59ea8a50.0x4c1.0x406a.0ka4.0k71.059.052.047.0kab.0k2e 图3-13 把GUID复制下来,放在 Activex. cs类中 name space Activex GUid("59EA8A50-4FC1-406a-A471-595247AB2E41) public partial class UserControl: UserControl 并添加 Click方法,和公共方法 ForDefault( private void button1 Click(object sender, EventArgs e) Messagebox.Show("您想说:"-this. textBox1.Text. ToString()); public string ForDefaultO return"此方法用于在前台调用,以表明前台页面可以用JS调用控 件类中的方法!!!"; 做到这一步之后, Activex类的情况如图3-11: 2*项目名:C# Activex控件开发 3*作着: EagleInSky2010-01-13 4**************************** 6日 using Syster 7i using System. Collections. Gen 8 using System Component Model eric 9 using System. Drawing 10 using System. Data 11 using System. Linq 12 using System. Text using System. Windows Forms 15Lusing System Runtime InteropServices 17 E namespace Activex 18| [Guid("59EA8A50-4FC1-406a-471-595247A2E41")] 20 21E public partial class UserControll: UserControl 22 23 public UserControl1( InitializeComponent O 26 28 private void but ton1 Click (object sender, EventArgs e) 2 messagEbox.Show("您想说:"+this. text Box1.Text. ToString(), 31 32 33白 oublic string ForDefaultO return"此方法用于在前台调用,以表明前台页面可以用Js调用控件类中的方法!!! 401 图 3-14 其次:为了让 Active控件获取客戶端的信任,控件类还需要实现一个名为 TObjectSafety”的接口。先创建该接口(注意:不能修改该接口的 GUD值)。 创建接口:右键 Activex工程一>添加->新建项如图3-15~3-16: ×[解决方案资源管理器- ActiveX 员 解决方案“ ActivexTest1个项目 生成Q 重新生成 清理巫〕 运行代码分析 计算代码度量值 图新建项〕 添加①〕 彐现有项G) 添加引用巫) 亲建文件夹①〕 添加服务引用( Windows窗体g).员查看类关系图 到用户控件Q) 设为启动项目) 回组件) 调试G 类〔) 剪切〔r 图3-15 加新项- Activel ? x 类别c 模板①〕 V1ualc#项 Visnal stαdio已装的模板 Web Windows forms 数据库单元测试 曰“关于”框 WPF HTML 页 ④]sipt文件 常规 LINQ to sQl类 代码 MD父窗体 数据 cWCF服务 ndos窗体 Reporting 田 Windows服务 a" ndows脚本宿主 Workflow XML架构 XL文件 XsLT文件 的安装程序类 用报表 报表向导 目本地数据库 本地数据库缓存 )程序集信息文件 代码文件 调试器可视化工具 光标文件 自基于服务的数据库 ■接口 空接口定义 名称① IOjectSafety. cs 匚添加)取消 图3-16 复制以下代码到 lObjectSafety.cs中的相应位置 using System. Runtime InteropServices namespace ActiveX IComImport, GuidAttribute( CB5BDC81-93C1-11CF-8F20 00805F2CD064)] [InterfaceTypeAttribute(ComInterfaceType Interface IUnknown) public interface 1ObjectSafety Preserves int GetInterlaceSalety Options (ref Guid riid,[MarshalAs(UnmanagedType U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType. U)] ref int pdwEnabledOptions) LPreserveSigo int SetInterfaceSafetyOptions (ref Guid riid, [MarshalAs (UnmanagedType U1)] int dwOptionSet Mask, [MarshalAs(UnmanagedType U4 int dwEnabledOptions 然后,在 Activc X控件类中集成并实现接口: [Guid("59EA8A50-4FC1-406a-A471-595247AB2E41")] public partial class UserControl1: UserControl, OBject Safety 并拷贝以下代码到 Activcⅹcs控廾类中 # region 1Objectsafety成员 private const string IID IDispatch-100020400-0000-0000 C000-00000000046 9337 l private const string IID_IDispalchEx-"laber9860-c720-11do Ocg0dcaa9) private const string IID IPersistStorage=10000010A-0000 0000-C000-0000000006 private const string IID IPersistStream =[00000109-0000 0000-C000-0000000046 private const string IID IPersistProperty Bag =37D84F60 42CB-1CE8135-00AA004BB851} private const int INTERFACESAFE FOR UNTRUSTED CALLER 0x00000001; private const int INTERFACESAFE FOR UNTRUSTED DATA 0x00000002 private const int S OK=0 private const int E FAIL= unchecked((int)0x80004005 private const int E NOINTERFACE= unchecked((int)0x80004002) private bool fSafeForScripting = true private bool fSafeForlnitializing-true 【实例截图】
【核心代码】

标签:

实例下载地址

详细的activeX控件开发教程

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警