2019年整理ActiveX控件制作
ACTIVEX网页控件开发(详细)

步步学ACTIVEX网页控件开发转载自IT168 [ / ]第1页:创建ActiveX控件本文将首先介绍如何使用Visual Studio开发一个简单的ActiveX控件,然后介绍ActiveX控件开发相关的基础知识,比如方法,属性和事件等,最后介绍如何利用这些知识,实现ActiveX控件和网页页面之间的通信。
MyActiveX控件的效果图简介ActiveX是由Microsoft在90年代中期提出的一项技术。
利用ActiveX技术,开发者可以创建像Java小程序applet一样的小型应用程序。
这些应用程序可以被下载然后在Microsoft的浏览器中运行。
这篇文章是为那些想学习如何开发他们的第一个ActiveX控件的Visual C++开发者准备的。
当我自己尝试学习这些技术的时候,我发现很多针对ActiveX技术的资料都已经不再适用了,都已经过时了,或者丢失了很多关键性的信息,这些都使得我在为我的项目创建一个ActiveX控件的时候,变得困难重重。
这篇文章将帮助你实现ActiveX网页控件开发的快速入门。
本文将首先介绍如何使用 Visual Studio开发一个简单的ActiveX控件,然后介绍ActiveX控件开发相关的基础知识,比如方法,属性和事件等,最后介绍如何利用这些知识,实现ActiveX控件和网页页面之间的通信。
另外,你也将学习到如何在默认的Internet Explorer安全设置下取消掉控件加载过程中的警告或者错误提示,使你的控件成为一个“安全”的ActiveX控件。
在本文中,我们将创建一个实际的ActiveX控件。
在控件加载的过程中,它将显示一个动态的进度条,告诉用户控件正在加载并处理信息。
同时,这个控件也将展示如何在ActiveX控件和Web页面之间传递信息。
本文将引导你一步步地利用Microsoft Visual Studio 2005完成ActiveX控件的开发工作。
创建ActiveX控件要创建一个ActiveX控件,首先启动Visual Studio 2005,执行下面这些步骤:1.选择“文件”菜单,然后选择“新建”->“项目”。
用C#编写ActiveX控件

您正在看的C#.NET教程是:用C#编写ActiveX控件。
首先,建立一个WinForm控件项目HelloWorld,并拖入一个Label控件,文字设为HelloWorld,如图:UserControl1.cs内容如下:using System;using System.Collections;using ponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;namespace HelloWorld{/**//// <summary>/// UserControl1 的摘要说明。
/// </summary>public class Demo : erControl{private bel label1;/**//// <summary>/// 必需的设计器变量。
/// </summary>private ponentModel.Container components = null;public Demo(){// 该调用是Windows.Forms 窗体设计器所必需的。
InitializeComponent();// TODO: 在InitComponent 调用后添加任何初始化}/**//// <summary>/// 清理所有正在使用的资源。
/// </summary>protected override void Dispose( bool disposing ){if( disposing ){if( components != null )components.Dispose();}base.Dispose( disposing );}组件设计器生成的代码#region 组件设计器生成的代码/**//// <summary>/// 设计器支持所需的方法- 不要使用代码编辑器/// 修改此方法的内容。
ocx控件制作步骤

ocx控件制作步骤制作activex控件(ocx)步骤1.安装IDE(.NET)2.第一步3.第二步4.第三步双击解决方案中的backup3Ctrl5.第四步制作按钮控件需要编辑的事件属性中得到按钮按下事件,编辑代码void Cbackup3Ctrl::OnLButtonDown(UINT nFlags, CPoint point) {if( MessageBox("确定要开始帐前备份吗?", "确定",MB_YESNO|MB_DEFBUTTON2)==IDYES)WinExec("c:\\中心日终\\backup_before.bat", SW_SHOW); elsereturn;COleControl::OnLButtonDown(nFlags, point);}6.第五步在代码中找OnDraw方法:填写代码// Cbackup3Ctrl::OnDraw - 绘图函数void Cbackup3Ctrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { DoSuperclassPaint(pdc, rcBounds);CSize Extent = pdc->GetT extExtent("备份中");CPoint pt( rcBounds.CenterPoint().x - Extent.cx/2, rcBounds.CenterPoint().y - Extent.cy/2 );int nMode = pdc->SetBkMode(TRANSPARENT);pdc->TextOut(pt.x, pt.y, "备份中");}7.第六步生成解决方案在D:\net\backup3\Debug下会生成一个backup3.ocx控件,在系统中注册就可以使用C:\WINDOWS\system32\regsvr32.exeD:\net\backup3\Debug\backup1.ocx 注:如果用IDE进行编译的话,会自动注册到系统注册表中,无需在进行手动注册,如果投放生产的时候,需要手动注册。
如何制作Activex控件

如何制作Activex控件¾使用VC6编写ActiveX控件A.创建工程,选择“ATL COM AppWizard”选项,填写Project name,如图一所示:图一B.点击“下一步”,进入图二,选中“Dynamic Link Library(DLL)”,然后选择“Finish”按钮,完成工程的创建工作。
图二C.像工程中添加类,该类完成ActiveX控件中实际需要完成的工作,添加类的方式有两种,区别在于创建时是否可以选择从哪些基类继承。
1.选择VC6工具栏上的“Insert-〉new class”按钮,弹出如图三所示界面,在该界面上填写相应名称,点击“OK”按钮完成类的添加工作。
图三按照这种方式添加生成的类的继承关系可以参看图四图四2.选择VC6工具栏上的“Insert-〉new ATL Object”选项,弹出如图五所示界面图五选择“Objects-〉Simple Object”选项,点击“Next”按钮,弹出如图六所示界面图六在该页面上填写相应得类名称即可,同时选择“Attributes”页,在页面上选择从哪些基类继承,如图七所示图七设置完成后,选择“确定”按钮,完成类的添加。
D.在刚刚添加的类中添加函数,完成相应的功能。
1.在头文件中添加函数声明,如图八所示2.在IDL文件中添加以下代码,如图九所示3.在CPP文件中添加函数定义,如图十所示E.编译工程,生成ActiveX控件¾制作CAB文件Internet软件分发单位是“软件包”,它由包含.INF文件或软件分发.OSD文件(或两者都包括)的.CAB文件所组成。
一个分发单位也可以包含软件组件,如ActiveX控件,DLL文件等。
在制作CAB文件时,可以使用Windows自带的工具IEXPress.exe,该工具位于(C:\windows\system32)目录下。
A.编写INF文件INF文件的格式如图十一所示,该INF文件可以包含多个文件,本例中只包含了一个DLL文件。
ActiveX控件的动态创建和删除

ActiveX控件的动态创建和删除4. Active X 控件的动态创建和删除以上论述的方法适合于控件在应用程序[ying yong cheng xu]工具箱(TOOLBOX )中的情况,而Active X 控件一般在应用程序[ying yong cheng xu]运行机器上,但没有在工具箱中,这种情况则需要先进行注册,方法是利用 Regsvr32 在 Windows 环境中注册,或者在 VB 代码中进行注册,方法如下:Shell(Systempath &“ regsvr32.exe /s /I" & MyControlName, vbHide)其中Systempath 是Regsvr32.exe 所在的路径,MyControlName 是控件名字(包括路径)若要撤销,可以如下操作:Shell(Systempath &“ regsvr32.exe /s /U" &MyControlName, vbHide)下面讨论注册但是未出现在工具箱( TOOLBOX )中的 Active X 控件的情况,这其中也包括 VB 自带的一些 Active X 控件的使用。
具体的方法就是利用VBControlExtender 对象。
VBControlExtender 对象与EventInfo 相结合能提供事件陷井捕捉,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编程设计控件的事件,声明时若使用WithEvents 关键字,则会有个特殊的事件ObjectEvent(Info As EventInfo) ,它能捕捉到对象使用 RaiseEvent 产生的所有事件, EventInfo 数据结构[jie gou][shu ju jie gou]映射[ying she]了事件的名称、参数个数和参数的值。
VBControlExtender 和 EventInfo 相结合,采用 Select Case 就可以预先将不同类对象的事件放置一起,各自独立[du li]运作。
VC++编写ActiveX控件详解

VC++编写ActiveX控件ActiveX这门技术是通过生成“*.ocx”文件来实现的。
先来了解下OCX文件,在百度百科上面对OCX是这样解释的:“.ocx是ocx控件的扩展名,OCX 是对象类别扩充组件。
如果你用过Visual Basic或者Delphi一类的可视化编程工具,那么对控件这个概念一定不会陌生,就是那些工具条上的小按钮,如EditBox,Grid,ImageBox,Timer等等。
每个控件都有自己的事件、方法和属性。
使用了控件的编程非常容易。
首先,在程序的设计阶段可以设置一些属性,如大小,位置,标题(caption)等等;在程序运行阶段,可以更改这些属性,还可以针对不同的事件,调用不同的方法来实现对该控件的控制。
控件就好像一块块的积木,程序要做的事只是将这些积木搭起来。
控件的最大好处是可以重复使用,甚至可以在不同的编程语言之间使用,例如你可以在VB中嵌入用VC开发的控件。
”里面最后一句话比较重要,就是用VC开发的OCX控件,你可以在其它语言里面都能调用,这样很好的实现了功能化组件的良好循环使用,而且还可以实现跨语言地调用(例如,你完全可以用C#调用C++开发的OCX控件)。
下面开始介绍,如何用VC++一步步生成你想要的“*.ocx”文件。
1. 建立最简单的ocx文件并进行调试1.1 建立最简单的ocx文件VC->新建项目->MFC ActiveX WinZard一路点击“确定”,直到点击“完成”。
最后VC++会自动生成一些文件,这些文件就构成了ActiveX的基本模板,文件的主要结构如下:直接编译一下,然后在Debug目录下面就会生成一个名为“ocxDemo.ocx”的控件注册文件,然后利用“regsvr32”命令就可以实现本机对此控件的注册,然后就可以使用本语言或者跨语言编写程序时引用此控件来实现相应的功能(后面将会讲到)。
1.2 ocx调试方法:VC++自带有一个调试控件的工具“ActiveX控件测试容器”,通过三种方式可以打开:1.点击“调试”按钮,会出现如下对话框:然后浏览"C:\Program Files\Microsoft Visual Studio\Common\Tools\TSTCO N32.EXE“2. 系统的“开始“-》“程序”-》“Microsoft Visual C++ 6.0”-》“Microsoft Visual C++ 6.0 Tools”-》“Active Control Test Container”3. VC++开发环境中的“工具”-》“ActiveX Control Test Container”通过上面的任意一种方法,都可以调出下面的程序:右击空白区域,插入控件,然后会弹出下面的对话框:选中指定控件,然后点击确定,控件就被加载到此工具中了,然后可以通过这个工具来看此控件的相关事件响应等等。
调用ocxActiveX控件详解(做一个简单的ocx控件)

调⽤ocxActiveX控件详解(做⼀个简单的ocx控件)最近做的项⽬都和插件有关,就是在页⾯中调⽤插件的⽅法,然后进⾏操作。
插件就是ocx ActiveX控件,具体的说明可以⾃⼰去了解⼀下,在这⾥就不做赘述。
具体调⽤⽅式很简单:1、在页⾯中写⼀个object标签,标签中定义⼀个classid属性,这个属性是获取到插件的关键<object id="ocx" classid="clsid:c998ae90-5ffc-4a58-97d2-490a414bd6e5"></object>2、直接在js中获取到这个dom,然后就可以调⽤插件中的⽅法let ocx = document.getElementById("ocx");let sum = ocx.Add(1,2);在使⽤过程中遇到了很多问题,于是⾃⼰去摸索了⼀下如何制作⼀个ocx插件,也能够帮助⾃⼰加深⼀些使⽤⽅⾯的了解。
这⾥使⽤Visual Studio Community 2019,先下载必须的组件和依赖包。
使⽤C++的桌⾯开发和Visual Studio扩展开发这两项必须要勾选。
然后桌⾯开发中还需要勾选与MFC相关的库,如果不勾选的话⽆法新建MFC项⽬勾选完成后就开始下载相关的包,这个过程需要等待⼀会。
下载完成后就可以开始新建⼀个项⽬,在这⾥选择MFC ActiveX控件,命名为MyMFCActiveXControl然后就会⽣成⼀系列控件名,头⽂件等等的⽂件名,这⾥基本上不⽤做什么操作,直接完成就好。
唯⼀需要注意的是⼀个控件类型ID,这个ID我们后⾯会⽤到。
点击完成后,就会⽣成⼀系列与插件相关的⽂件,这些⽂件⾥⾯包含了插件的类,头⽂件,描述等信息。
因为不是专门学习C++的,不对⾥⾯的原理和结构进⾏探究,就取我需要的内容就⾏。
来找⼀找那个神奇的classid。
用VB做ActiveX控件

用VB做ActiveX控件用VB做ActiveX控件我们都知道在使用Visual Basic的时候可以使用很多现有的控件,像VB中的基本控件。
然而,只有这些基本的控件在很多的时候都不能满足我们的实际需要,因此还需要更多的能够实现其他特有功能的控件。
我们可以看到,在VB的部件中包含了大量的控件。
这些控件包含在VB中自带的ActiveX控件库中。
这些控件大大补充了VB的功能,其实可以这么说,在VB中谁掌握了对控件的使用,谁将更成功的运用VB写出功能强大的程序。
在VB中不但可以使用现有的ActiveX控件,更叫人兴奋的是可以利用VB创建自己的ActiveX控件。
下面我们一起讨论一下关于VB中创建ActiveX控件的基本知识。
ActiveX是Microsoft的术语,他是一组包括控件、DLL和ActiveX文档的组件,他通常是以动态连接库形势存在,因此必须在一个叫容器的可独立执行的软件中运行,比如VisualBasic,VisualC++,Internet Explorer等。
因此ActiveX控件和容器必须都支持一些特定的接口协议。
ActiveX应包括属性,事件和方法这些特殊机制,他也是创建ActiveX控件的核心。
在这个制作步骤中我们看到要利用一个VB中的UserControl对象,他是创建ActiveX控件的基础。
我先简单介绍一下UserControl 对象的基本知识吧。
VB创建的ActiveX控件包括UserControl控件和构成ActiveX控件的基本控件,称为构成控件。
这些基本控件实际上就是像CommandButton和Label控件等。
UserControl对象的设计界面和标准工程的Form设计界面没有什么差别。
我们可以直接在UserControl对象上面设计控件的外观,将代码添加在Code页面中,一切都是那么的熟悉。
UserControl以普通的文本文件格式存储,该文件包含UserControl以及他的构成控件源代码和属性值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PROPPAGEID( CMyPropPage::guid ) PROPPAGEID( CLSID_CFontPropPage ) PROPPAGEID( CLSID_CColorPropPage ) PROPPAGEID( CLSID_CPicturePropPage )END_PR OPPAGEIDS(CSampleCtrl) 请注意,BEGIN_PROPPAGEIDS 宏中的属性页数为 4。它表示 ActiveX 控件支持的属性页数。
NULL);
}
三.属性页控件变量关联到属性
1.在项目类中添加一个属性propname (名字中不要有下划线)。
错误:Invalid OLE external name : prop_name。是因为名字不符合规则
添加自定义属性页
如果系统提供一个自定义属性页不够用。则按以下步骤添加:
1.ActiveX工程中,资源视图中“Dialog”节点,添加 Dialog并选择 IDD_OLE_PROPPAGE_SMALL。并 修改其名字。
2.在类向导中,添加新类,注意其基类和 dialogID(选择你新建的对话框).
我们先定义个设置的值是 IDS_Camera_IP_CAPTION(名字)。
在这个属性页类的构造函数 由newPropPage::newPropPage() : COlePropertyPage(IDD,0) 改为:newPropPage::newPropPage() : COlePropertyPage(IDD,
PROPPAGEID(newPropPage::guid) PROPPAGEID(classname::guid) END_PROPPAGEIDS(CClockCtrl) 改变其总数,并将新建的属性页其加入
4. 完善属性页
二.设置自定义属性页的名字
在资源的string table中添加两个string一 个是新建属性页的标题,一个是新建属性页 的名字。(在字符表中修改后,必须在程 序中对应位置修改)
{
if (bRegister)
return
AfxOleRegisterPropertyPageClass(AfxGetInstance Handle(),
m_clsid, IDS_VIDEO_Camerapara);
else
return AfxOleUnregisterClass(m_clsid,
I标题,出现空指针。再定义一个标题:
IDS_VIDEO_Camerapara(options标题)
BOOL Ccameraparam::CcameraparamFactory::UpdateR egistry
(BOOL bRegister)
下面学习添加属性和方法。
控件注册与注销
控件必须注册才可以使用。在globals中有注册函 数DllRegisterServer和注销函数 DllUnregisterServer。
Vc++编译控件时,最后对ACtivx控件调用全局 函数进行注册。
可以手动注册:开始->运行->regsvr32 E:\Clock.ocx 或者vc++->tool->register control
注意 如果不能访问控件常用属性页,可能
是因为没有在当前的操作系统中正确地注 册 MFC DLL (MFCxx.DLL)。导致这种情 况的原因通常是安装了 Visual C++和。 Net多个MFC库,
如果常用属性页不可见通过在命令行中用 DLL 的完整路径名运行 RegSvr32.exe 来注册 DLL。 。
ActiveX控件制作
在系统开发过程中,控件的使用可以有效 的帮助程序的开发,但是系统提供的控件 不能满足用户的所以要求。于是我们可以 开发满足自己要求的Activx控件。
下面介绍一个简单ACtivx控件的制作
1,新建MFC Activx control wizard工程, 名为MyClock,选择创建空的工程。生成的 控件有3个类和2个接口。
{
FireNewMinute();
}
CString str=time.Format("%H:%M:%S");
pdc->TextOut(0,0,str);
得到时间时静止的,可以设置一个时钟函数,更新 时间
添加常用属性页
MFC 提供了三个与 ActiveX 控件一起使用的常用属性页: CLSID_CColorPropPage、 CLSID_CFontPropPage 和 CLSID_CPicturePropPage。
3程序中添加:程序中有个属性页表 添加头文件 #include "classname.h" 修改属性表 BEGIN_PROPPAGEIDS(CClockCtrl, 4) PROPPAGEID(CClockPropPage::guid) PROPPAGEID(CLSID_CColorPropPage)
应用程序类:CMyclockApp 主窗口类:CMyclockCtrl 对话框类,显示控件属性页
CMyclockPropPage 接口是外部调用控件功能的函数集合,
一些纯虚函数,在主窗口类中进行实现
运行时选择下面的方式:控件是无法独立运行,必须使用 容器来测试控件。
查看其方法和属性页:方法只有aboutBox,属性页为空。
控件注销,使用regsvr32 程序, regsvr32 /u E:\Clock.ocx 注销
默认生成的控件功能是在CMyclockCtrl :: ondraw中画一个椭圆。可以修改为下面时间函 数
CTime time=CTime::GetCurrentTime();
if(0==time.GetSecond())