【VS2017】将DLL封装成ActiveX控件(OCX文件)详细步骤

 

 

前言

  最近组内WEB工程师在做浏览器的加密卡识别登陆功能,由于JS不能进行太复杂操作,因此委托我使用C编写DLL库封装成OCX控件给他调用。我也是第一次编写该类程序,查阅了不少资料,在此分享给大家。

  本文使用的平台:Win10系统 + Visual Studio 2017软件

正文

建立工程

1、打开 Visual Studio 2017软件,点击【文件】、【新建】、【项目】。在弹出的窗口中选择【MFC ActiveX 控件】,点击【确定】。

2、不做修改、点击【下一步】,然后点击【完成】。

 

3、在VS2017【解决方案资源管理器】中初始化了下图所示几个文件。

编写接口

1、点击【视图】、【类视图】,在【类视图】窗口展开【CMFCActiveXControl1】和【CMFCActiveXControl1Lib】,如下图所示

 

2、【左键】点击【CMFCActiveXControl1】、进入【CMFCActiveXControl1.idl】页面,该页面中uuid的值为控件在系统中的唯一标识、WEB就是通过uuid调用控件方法。

3、在【CMFCActiveXControl1.idl】页面【_DMFCActiveXControl1】类的【methods】增加DLL函数接口。

     本文中将演示DLL文件的char *QcardCab_GetStoreID(); 函数入参为空、返回值为char *。由于js没有char类型,因此接口写作

[id(1)]BSTR QcardCab_GetStoreID(void);

4、在【解决方案资源管理器】中,点击【CMFCActiveXControlCtrl.h】文件,在【CMFCActiveXControl1Ctrl】类的【调度与事件】参数中增加QcardCab_GetStoreID接口的ID、以及函数的声明。

		dispidQcardCab_GetStoreID = 1L

5、在【解决方案资源管理器】中,点击【CMFCActiveXControlCtrl.cpp】文件,在文件头部增加

#include <comutil.h>
#pragma comment(lib, "comsuppw.lib")

 

6、在【CMFCActiveXControlCtrl.cpp】文件增加函数的调度映射

	DISP_FUNCTION_ID(CMFCActiveXControl1Ctrl, "QcardCab_GetStoreID", dispidQcardCab_GetStoreID, QcardCab_GetStoreID, VT_EMPTY, VTS_NONE)

7、在【CMFCActiveXControlCtrl.cpp】文件增加函数的定义

typedef char *(CALLBACK *_QcardCab_GetStoreID)();
BSTR CMFCActiveXControl1Ctrl::QcardCab_GetStoreID()
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	CString strResult;
	BSTR out;
	HINSTANCE hDLL = NULL;
	char *outstr = 0;
	_QcardCab_GetStoreID SigIn;
	hDLL = LoadLibrary(TEXT("./qcard_store_dll"));
	if (hDLL)
	{
		SigIn = (_QcardCab_GetStoreID)GetProcAddress(hDLL, "QcardCab_GetStoreID");
		outstr = SigIn();
		out = _com_util::ConvertStringToBSTR(outstr);
		strResult += out;
	}
	FreeLibrary(hDLL);

	return strResult.AllocSysString();
}

 

8、在【解决方案资源管理器】中,右键点击【CMFCActiveXControlCtrl】、【属性】、【常规】、【注册输出】项,选择【否】。注意【属性页】的平台选择和【编译器】选择一致。

 

9、8、在【解决方案资源管理器】中,右键点击【CMFCActiveXControlCtrl】、【生成】,即可生成OXC文件。

验证接口

1、下载OCX文件接口查看工具。

百度网盘:

链接:https://pan.baidu.com/s/1nWItfKFhg4K8CcyhkTNVFA 
提取码:kyli 

2、使用该软件,打开生成的oxc文件,即可看见新增接口函数。

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 从VS2008 DLL封装OCX的角度来看,这是一种将动态链接库(DLL)转换为ActiveX控件OCX)的过程。通过封装,可以将某个函数或一组函数作为可重用的控件提供给其他开发人员或应用程序使用。 首先,在VS2008中创建一个动态链接库项目,编写所需的功能函数。这些函数可以是通用的、可重复使用的功能,比如数据处理、算法等。确保这些函数在DLL中能够被正确地调用和执行。 接下来,通过定义控件接口(Interface),将DLL函数封装控件。通过使用COM(Component Object Model)技术,在DLL中添加COM接口并注册该接口,使得其他应用程序或开发人员能够使用这个控件。 之后,将DLL编译为OCX控件。在VS2008中,可以将DLL的编译配置更改为ActiveX控件的配置,并生相应的OCX文件。 在生OCX文件后,可以将该文件部署到其他开发环境中,并通过引用该控件,从而使用和调用其中的功能函数。 需要注意的是,封装OCXDLL应该具备良好的封装和设计,以便在其他环境中能够正确地使用。需要保证函数的参数、返回值等接口设计的一致性,并确保控件在其他环境中的稳定性和可用性。 总结起来,将VS2008 DLL封装OCX是通过定义控件接口、注册COM接口、编译为ActiveX控件等步骤实现的。通过这种方式,可以提供一种可重用、易于部署和调用的控件,以满足其他开发人员或应用程序的需求。 ### 回答2: VS2008是微软的集开发环境,用于开发Windows平台的应用程序。DLL(Dynamic Link Library)是一种动态链接库,封装了一些可重复使用的代码和函数,可以被不同的应用程序共享使用。OCX(OLE Control Extension)是基于COM(Component Object Model)的控件扩展,主要用于创建可视化的用户界面。 要将VS2008中的DLL封装OCX,首先需要创建一个OCX项目,在VS2008中选择“新建项目”,然后选择“MFC ActiveX Control Wizard”模板。根据需要设置项目名称、位置和所需的功能。 接下来,在项目中添加要封装DLL文件。可以通过右键点击“资源视图”中的“导入文件...”来添加DLL文件。选择要导入的DLL文件,然后点击“确定”进行导入。 然后,在OCX项目中提供对DLL函数和代码的封装。在OCX项目中的源文件中,可以使用DLL的导入库来调用DLL函数。根据需要,可以创建适当的封装函数,将DLL函数的参数和返回值与OCX控件的属性和方法进行映射。 接下来,可以设计和实现OCX控件的外观和交互功能。可以在OCX控件的资源视图中添加按钮、文本框等控件,设置控件的属性和事件。可以使用MFC提供的功能和技术,通过代码实现控件的功能和行为。 最后,可以将OCX控件为可执行文件。在VS2008中选择“生”菜单,点击“生解决方案”来生OCX文件。通过在其他应用程序中导入这个OCX文件,就可以使用封装DLL功能了。 通过以上步骤,就可以将VS2008中的DLL封装OCX控件,方便在其他应用程序中使用。 ### 回答3: VS2008是Visual Studio 2008的缩写,OCX则代表Object Linking and Embedding (OLE) Control Extension,是一种微软的ActiveX控件格式。 要将VS2008中的DLL封装OCX,可以按照以下步骤进行: 1. 打开Visual Studio 2008,并创建一个新的ActiveX控件项目。 2. 在项目中添加所需的DLL文件。可以使用“添加现有项”选项将DLL文件包含到项目中。 3. 在项目的资源管理器中,找到DLL文件,并右键单击该文件以打开属性窗口。 4. 在属性窗口中,将“扩展属性”下的“内容”设置为“yes”,并设置“独立内容”为“否”。 5. 在控件项目中添加与DLL文件相对应的接口和方法。接口和方法应该与DLL文件的功能相匹配。 6. 编译和生项目,生的结果将是一个OCX文件,其中包含了DLL文件封装后的控件。 7. 在其他项目中使用这个生OCX文件。可以通过将此OCX文件添加到项目的引用中,然后在项目中进行开发和使用。 封装后的OCX文件可以在其他应用程序中方便地使用,通过使用OCX提供的接口和方法,我们可以访问封装DLL文件的功能。这样,我们就可以简化对DLL文件的调用和使用,提高开发的效率和灵活性。 总之,要将VS2008中的DLL封装OCX,我们需要创建一个ActiveX控件项目,并将DLL文件添加到项目中。然后定义接口和方法,编译项目并生OCX文件。最后,将生OCX文件用于其他项目中。通过这种方式,我们可以方便地使用封装后的DLL文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值