医保实时结算COM组件MedicareCOM.dll的接口解析

11 篇文章 6 订阅
11 篇文章 2 订阅

本文由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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inter_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值