一、简述
ActiveX插件源自微软,主要作为IE浏览器的插件程序,在这里我们不多介绍了,主要是对这方面应用不是很懂。前段时间由于工作需要了解了一些,通过网上查询的一些资料对如何生成以及如何使用ActiveX插件在这里做一下详细的记录。
二、如何生成ActiveX插件
其实生成一个ActiveX插件很简单,只需几步即可,不过前提是电脑上要装上VS。介绍一下我的电脑环境:VS2013 + win8 。
1、首先打开VS,新建一个MFC ActiveX控件项目,如下图。
2、进入到控件向导界面,一直点击下一步,直到控件设置界面,进行如下设置,(我们这里通过创建一个对话框来显示,所以这里创建的控件基于选择none)然后点击完成。
3、我们可以看到MFC已经帮我们完成ActiveX的框架了,我们可以在此基础上*添加代码。
4、打开项目的属性页,在“配置属性”中点“常规”,在右侧将“MFC的使用”设置为“在静态库中使用MFC”,然后“应用”,“确定”。这里选择在静态库中使用MFC,是因为在生成目标文件(xxx.ocx)时已经将需要的依赖包含在内,所以不需要再包含MFC的一些依赖库,可以直接在其他电脑上使用。
5、点击生成解决方案。在生成的过程中,如果电脑上开着杀毒软件会弹出如下提示框。其实在生成MyActiveXText.ocx文件时,会将其写入注册表,所以杀毒软件会提醒有程序在修改注册表。在这里我们忽略此次提醒。
在Debug文件夹下我们发现成功生成了ocx文件,而ocx文件也就是我们的ActiveX插件。
6、这里我们虽然成功生成了插件,但是未添加任何功能。选择资源视图页面,添加一个对话框,去除两个按钮,添加一个编辑框。然后修改对话框属性:Border改为None,Control改为Ture,ID改为IDD_MAIN_DIALOG,Style改为Child,Visible改为True。修改编辑框的ID为IDC_EDIT_INPUT。
资源视图在这个位置:
注意:关于对话框,一定要将其Visible属性改为True(也就是ID为IDD_MAIN_DIALOG的这个最外层对话框对应的Visible属性,其默认为False),否则,即使其它一切设置都没有问题,但是最后对话框还是不显示!
7、我们通过双击对话框,为对话框添加一个类,如下图:
8、在MyActiveDemoCtrl类中添加CActiveXDlg对象。
9、在CMyActiveXTextCtrl的onDraw方法中注释掉原有的绘制椭圆代码,添加绘制对话框的代码。
10、打开CMyActiveDemoCtrl的类向导,选择消息,然后双击WM_CREATE消息添加到我们程序中,这里当CMyActiveXCtrl类处理WM_CREATE事件,我们可以初始化对话框对象,在onCreate函数中添加如下代码:
11、对话框构建结束。选择类视图页面,现在添加对外调用接口。
在 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文件中查看:
13、用IE浏览器打开该HTML文件,会弹出下面的提示,点击 “允许阻止的内容”。
14、效果图
我们打开注册表可以看到我们的ActiveX插件已成功注册。
尾
此篇文章详细介绍了如何生成以及如何使用一个ActiveX插件。但是ActiveX插件只能在IE浏览器中使用,下一篇中将介绍NPAPI插件在火狐浏览器上的使用。