ActiveX插件的使用

时间:2022-02-21 21:02:22

一、简述

ActiveX插件源自微软,主要作为IE浏览器的插件程序,在这里我们不多介绍了,主要是对这方面应用不是很懂。前段时间由于工作需要了解了一些,通过网上查询的一些资料对如何生成以及如何使用ActiveX插件在这里做一下详细的记录。

二、如何生成ActiveX插件

其实生成一个ActiveX插件很简单,只需几步即可,不过前提是电脑上要装上VS。介绍一下我的电脑环境:VS2013 + win8 。


1、首先打开VS,新建一个MFC ActiveX控件项目,如下图。

ActiveX插件的使用


2、进入到控件向导界面,一直点击下一步,直到控件设置界面,进行如下设置,(我们这里通过创建一个对话框来显示,所以这里创建的控件基于选择none)然后点击完成。

ActiveX插件的使用


3、我们可以看到MFC已经帮我们完成ActiveX的框架了,我们可以在此基础上*添加代码。

ActiveX插件的使用


4、打开项目的属性页,在“配置属性”中点“常规”,在右侧将“MFC的使用”设置为“在静态库中使用MFC”,然后“应用”,“确定”。这里选择在静态库中使用MFC,是因为在生成目标文件(xxx.ocx)时已经将需要的依赖包含在内,所以不需要再包含MFC的一些依赖库,可以直接在其他电脑上使用。
ActiveX插件的使用


5、点击生成解决方案。在生成的过程中,如果电脑上开着杀毒软件会弹出如下提示框。其实在生成MyActiveXText.ocx文件时,会将其写入注册表,所以杀毒软件会提醒有程序在修改注册表。在这里我们忽略此次提醒。

ActiveX插件的使用

在Debug文件夹下我们发现成功生成了ocx文件,而ocx文件也就是我们的ActiveX插件。

ActiveX插件的使用


6、这里我们虽然成功生成了插件,但是未添加任何功能。选择资源视图页面,添加一个对话框,去除两个按钮,添加一个编辑框。然后修改对话框属性:Border改为None,Control改为Ture,ID改为IDD_MAIN_DIALOG,Style改为Child,Visible改为True。修改编辑框的ID为IDC_EDIT_INPUT。

资源视图在这个位置:

ActiveX插件的使用

ActiveX插件的使用

注意:关于对话框,一定要将其Visible属性改为True(也就是ID为IDD_MAIN_DIALOG的这个最外层对话框对应的Visible属性,其默认为False),否则,即使其它一切设置都没有问题,但是最后对话框还是不显示!


7、我们通过双击对话框,为对话框添加一个类,如下图:

ActiveX插件的使用


8、在MyActiveDemoCtrl类中添加CActiveXDlg对象。

ActiveX插件的使用


9、在CMyActiveXTextCtrl的onDraw方法中注释掉原有的绘制椭圆代码,添加绘制对话框的代码。

ActiveX插件的使用


10、打开CMyActiveDemoCtrl的类向导,选择消息,然后双击WM_CREATE消息添加到我们程序中,这里当CMyActiveXCtrl类处理WM_CREATE事件,我们可以初始化对话框对象,在onCreate函数中添加如下代码:

ActiveX插件的使用ActiveX插件的使用

11、对话框构建结束。选择类视图页面,现在添加对外调用接口。

ActiveX插件的使用

在 CActiveXDlg中添加如下代码:

CString CActiveXDlg::getEditContent()
{
CString strEditContent;
GetDlgItemText(IDC_EDIT_INPUT, strEditContent);

return strEditContent;
}

在CMyActiveXTextCtrl中添加如下代码:

BSTR CMyActiveXTextCtrl::GetEditContent()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

CString strResult = m_dlg.getEditContent();

// TODO: 在此添加调度处理程序代码

return strResult.AllocSysString();
}

12、重新生成解决方法,如果没有错误,则该控件就会在本机中注册(上面已经提到过)。然后利用下面的HTML代码保存到.html文件中进行测试:

<HTML>
<HEAD>
<TITLE>TestMyActiveXDemo</TITLE>
</HEAD>
<OBJECT ID="ActiveXTestCtrl" WIDTH=500 HEIGHT=150 classid="CLSID:C8FEA6AA-4649-4DA1-9C1F-624D27812722">
</OBJECT>
<BODY>
<p><input type="button" value="OutputContent" id="btnOK" onclick="getContent();"></input>
</BODY>
<script language="javascript">
function getContent()
{

alert(ActiveXTestCtrl.GetEditContent());
}
</script>
</HTML>

这里的CLSID需要注意,这个id在我们CMyActiveXTextCtrl.cpp 中,也可以在CMyActiveXTextCtrl.idl文件中查看:

ActiveX插件的使用

ActiveX插件的使用


13、用IE浏览器打开该HTML文件,会弹出下面的提示,点击 “允许阻止的内容”。
ActiveX插件的使用


14、效果图

ActiveX插件的使用


我们打开注册表可以看到我们的ActiveX插件已成功注册。

ActiveX插件的使用


此篇文章详细介绍了如何生成以及如何使用一个ActiveX插件。但是ActiveX插件只能在IE浏览器中使用,下一篇中将介绍NPAPI插件在火狐浏览器上的使用。