本文由Markdown语法编辑器编辑完成。
1. 前言:
本文主要讲述如何将首信公司提供的医保实时结算的COM组件,进行二次封装,封装为可被其他应用程序调用的dll文件。
2. 基本步骤:
(1)下载首信提供的核心组件客户端安装文件并安装;
首信公司提供的医保核心组件的相关软件的下载地址为:
http://yb.capinfo.com.cn/yb/new.html
双击安装包,安装完成后,对软件进行相应的设置,安装路径默认即可。点击路径C:\Program Files (x86)\Capinfo\BeiJingMediCareClient\1.00.0000下的:RegeditConfig.exe,可以对该核心组件测试端进行设置。
主要设置的是“ICE默认主机地址”,将地址设为:210.75.200.74.
这个IP是首信专门为各HIS开发厂商提供的核心组件测试的外网服务器地址。
(2)基于oleview.exe等工具解析核心COM组件;
基于微软提供的IDE工具中的oleview工具,可以查看COM组件的接口。
假设本机已经安装了Visual Studio 2012, 在开始中找到Microsoft Visual Studio 2012->Developer Command Prompt for VS2012。
点击后,在打开的命令快捷界面中,输入oleview,按回车键可以进入查看本机已经注册的COM组件。
在打开的OLE/COM Object Viewer窗口中,选择左侧的
Type Libraries->MedicareCOM 1.0 类型库(Ver 1.0).
在左侧找到的MedicareCOM 1.0类型库处,鼠标点击右键,应该能够看到这个COM组件的详细描述。
但是,如果是Windows 10等系统,点击右键,在右键菜单中选择View时可能会弹出如下提示:
遇到这个问题时,应该是打开OLE/COM Object Viewer的权限不够,导致无法查看。
解决这个问题的方法为:直接在计算机硬盘中找到这个工具的exe,然后点击鼠标右键,选择以管理员身份运行,这样当再次打开这个查看器时,选择右键的View,便可以查看注册在本机中的医保组件的具体描述了。如下所示:
此时,选择左上角菜单栏中的File,选择Save as, 然后选择将医保组件的MedicareCom.IDL文件保存在本地中。
(3)基于midl编译IDL为.h和.c文件;
IDL文件是无法供其他程序直接调用接口的。为了能够将包含在IDL文件的COM组件接口解析出来,我们需要借助VS来编译出.h和.c文件。
在Visual Studio 2012中创建一个名称为MedicareCom的win32 console工程。
进入创建的MedicareCom.sln后,在左侧打开的文件列表中,在Source Files栏目处,点击鼠标右键,选择加载已有的文件,加载之前生成的IDL文件进该工程中。
在加载进本项目的MedicareCom.IDL文件处点击鼠标右键,选择右键此单中的Compile选项,进行编译。
当编译完成后,便可以在该工程的目录中,找到根据IDL文件编译出的.h和.c文件。
还有一个问题要注意:
由于现在的医保核心组件是在VS2012上面进行二次封装的,但是医院很多医生的操作系统还停留在了Windows XP 32位系统上,这样当编译出来的浏览器的exe在XP系统上运行时,会提示:“不是有效的Win32应用程序。”
后来经过在网上查询,得到的解决方案是在VS2012中编译应用程序时,修改一个链接的配置。
解决方案一:
如以下链接:
http://www.360doc.com/content/16/1005/07/9200790_595861419.shtml
修改Configuration Properties->Linker->System->
Minimum Required Version: 5.01.
如下图所示:
解决方案二:
修改如下:
Configuration Properties->General->Platform Toolset,
默认值是:Visual Studio 2012 (v110), 将这个设置项修改为:
Visual Studio 2012 - Windows XP (v110_xp)即可解决该问题。
如下图所示:
(4)封装核心组件接口为新的dll供程序调用。
当我们拥有了从IDL文件编译出来的.h和.c文件后,我们就可以根据自己项目的需要,编译出动态链接库和静态链接库,供我们在需要使用接口的时候调用它们了。
参考链接:
1. Can’t run OLEVIEW.EXE on Windows 10/64
https://social.msdn.microsoft.com/Forums/vstudio/en-US/3d3c8baa-f4fb-4eb2-86a4-5c20abb84790/cant-run-oleviewexe-on-windows-1064?forum=vclanguage
2. COM组件的编译
https://stackoverflow.com/questions/6811736/including-a-idl-file-in-a-c-project