VB6银联读卡之旅(一)__简单ocx封装应用

最近接手银行卡读卡任务,由于应用于C/S框架的html页面中,使用IE浏览器打开,利用IE的activex控件采用vb开发集成OCX。由于对该项目属性以及刚接触OCX封装,期间遇到了很多问题。本文章主要讲问题记录下来供日后回顾。

一、vb环境搭建

安装包百度网盘:vb6.0qyjtzwb_xpgod  提取码:59d2

学习文件百度网盘:链接:https://pan.baidu.com/s/1cB-WVIv4qTNkDpmOqtyNFw  提取码:tcb2 

二、开发简单的OCX

1、新建ActiveX控件

VB6银联读卡之旅(一)__简单ocx封装应用_第1张图片

2、添加功能及方法

1)、使用工具栏添加一个按钮,点击按钮打印出当前时间

a、将工具栏中的按钮拖入工程_UserControl1中

VB6银联读卡之旅(一)__简单ocx封装应用_第2张图片

b、双击按钮添加对应方法

Private Sub Command1_Click()
    MsgBox (Now())
End Sub

VB6银联读卡之旅(一)__简单ocx封装应用_第3张图片

c、保存,封装成ocx

保存:

VB6银联读卡之旅(一)__简单ocx封装应用_第4张图片

封装成ocx:

文件-->生成xxx.ocx

VB6银联读卡之旅(一)__简单ocx封装应用_第5张图片

到目前为止ocx已经封装好了,接下来开始在页面是调用。

d、注册ocx,注册分为两种方法一种是使用Regsvr32 text.ocx注册,另一种是将test.ocx文件放如对应的System目录下,32位放入C:\Windows\System32目录下 64位放入C:\Windows\SysWOW64目录下

本文采用第一种方式:在test.ocx所在目录下新建install.bat文件,编辑文件添加以下代码:

%~d0
cd %~dp0
echo 卸载测试OCX控件
Regsvr32 -u test.ocx
echo 注册测试OCX控件
Regsvr32 test.ocx

echo 注册成功
pause

添加完成后保存,执行!(或者在该目录shift + 右键-->在此处打开命令窗口  cmd模式运行Regsvr32  test.ocx)

e、写测试页面,获取CLSID ,每一个ocx文件一旦创建都是固定的只有一个。

两种方式:

方式一:VB点击运行使用现存的浏览器运行,打开后右键-->查看源

VB6银联读卡之旅(一)__简单ocx封装应用_第6张图片

 

VB6银联读卡之旅(一)__简单ocx封装应用_第7张图片

方式二、将ocx拖入到GetComComponentCLSID.exe 工具(百度网盘 提起码:8jb3)获取

VB6银联读卡之旅(一)__简单ocx封装应用_第8张图片

f、新建test.html页面添加一下代码

 

VB6银联读卡之旅(一)__简单ocx封装应用_第9张图片

打开测试页面如下(注:使用ie打开)若提示如下点击允许:

点击是

VB6银联读卡之旅(一)__简单ocx封装应用_第10张图片

 

最后页面完成效果如下(如果点击以上两步还是一片空白则需配置IE设置的ActiveX选项):

VB6银联读卡之旅(一)__简单ocx封装应用_第11张图片

IE设置的ActiveX选项:

internal选项-->安全-->受信任的站点-->自定义安全级别

VB6银联读卡之旅(一)__简单ocx封装应用_第12张图片

VB6银联读卡之旅(一)__简单ocx封装应用_第13张图片

VB6银联读卡之旅(一)__简单ocx封装应用_第14张图片

VB6银联读卡之旅(一)__简单ocx封装应用_第15张图片

确认后刷新页面即可。

 

2)、写一个方法,当调用该方法传入一个姓名作为参数时,返回hello + 参数 +  !!

a、测试二在原来的基础上进行添加不在重新。VB项目添加如下代码:

Public Function helloWorld(ByVal nama As String)

    helloWorld = "Hello " & nama & "!!"
    
End Function

VB6银联读卡之旅(一)__简单ocx封装应用_第16张图片

b、保存。重新生成ocx,重新生成ocx后,需重新运行install.bat文件进行注册

c、修改下html,如下:





test


	 
	
	

d、点击运行效果如下

VB6银联读卡之旅(一)__简单ocx封装应用_第17张图片

3)、测试调用动态库dll方法,使用c++写一个dll动态库,并在vb中调用动态库中的方法

a、测试使用vb调用dll中的方法,先使用c++新建一个dll文件

VB6银联读卡之旅(一)__简单ocx封装应用_第18张图片

确认

VB6银联读卡之旅(一)__简单ocx封装应用_第19张图片

下一步

VB6银联读卡之旅(一)__简单ocx封装应用_第20张图片

 

完成,新建项SumDll.h

VB6银联读卡之旅(一)__简单ocx封装应用_第21张图片

添加代码:

#ifndef SUMDLL_H
#define SUMDLL_H

extern "C" int __declspec(dllexport) add(int x, int y);

#endif

VB6银联读卡之旅(一)__简单ocx封装应用_第22张图片

 

新建SumDll.cpp

VB6银联读卡之旅(一)__简单ocx封装应用_第23张图片

添加代码:

#include "SumDll.h"

int add(int x, int y)
{
	return x + y;
}

 

VB6银联读卡之旅(一)__简单ocx封装应用_第24张图片

保存后,右键项目-->生成

VB6银联读卡之旅(一)__简单ocx封装应用_第25张图片

成功后再该目录下,拷贝SumDll.dll文件到对应的System目录下,32位放入C:\Windows\System32目录下 64位放入C:\Windows\SysWOW64目录下   

b、VB工程添加,右键工程-->添加-->添加模块

VB6银联读卡之旅(一)__简单ocx封装应用_第26张图片

打开,添加以下代码

Option Explicit
Public Declare Function add Lib "SumDll.dll" (ByVal a As Integer, ByVal b As Integer) As Integer

VB6银联读卡之旅(一)__简单ocx封装应用_第27张图片

c、ctrl+s 保存。添加方法如下

'测试调用动态库dll
Public Function testDllAdd(ByVal a As Integer, ByVal b As Integer)
    testDllAdd = add(a, b)
    
End Function

VB6银联读卡之旅(一)__简单ocx封装应用_第28张图片

d、保存,生成test.ocx,生成ocx后需重新双击运行install.bat文件进行注册

e、test.html页面,添加代码如下


VB6银联读卡之旅(一)__简单ocx封装应用_第29张图片

f、完成后运行效果如下:

VB6银联读卡之旅(一)__简单ocx封装应用_第30张图片

测试源码:vbtest.rar  链接:https://pan.baidu.com/s/1In5oX6IjCbOc2uPFxEZ-rg  提取码:dc75 

你可能感兴趣的:(VB6银联读卡之旅)