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控件

2、添加功能及方法

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

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

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

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

c、保存,封装成ocx

保存:

封装成ocx:

文件-->生成xxx.ocx

到目前为止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点击运行使用现存的浏览器运行,打开后右键-->查看源

 

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

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

<OBJECT classid="clsid:10BE8624-D817-40E0-A5A3-8AF6C377D103" width="400px" height="200px"> </OBJECT>

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

点击是

 

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

IE设置的ActiveX选项:

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

确认后刷新页面即可。

 

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

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

Public Function helloWorld(ByVal nama As String)

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

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

c、修改下html,如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>test</title>
</head>
<body>
	<OBJECT  id="ActiveXId" classid="clsid:10BE8624-D817-40E0-A5A3-8AF6C377D103" width="400px" height="200px"> </OBJECT>
	
	<hr/>
	<input type="text" value="张三" id="name" />
	<input type="button" value="测试VB方法" onclick="hello()" />
	<script type="text/javascript">
		var abc =document.getElementById("ActiveXId");
		
		function hello(){
			var name = document.getElementById("name").value;
			var res = abc.helloWorld(name);
			alert(res);
		}
	</script>
</body>
</html>

d、点击运行效果如下

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

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

确认

下一步

 

完成,新建项SumDll.h

添加代码:

#ifndef SUMDLL_H
#define SUMDLL_H

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

#endif

 

新建SumDll.cpp

添加代码:

#include "SumDll.h"

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

 

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

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

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

打开,添加以下代码

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

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

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

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

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

<hr/>
	<input type="text" value="32" id="intA" />
	<input type="text" value="4" id="intB" />
	<input type="button" value="测试VB调用Dll" onclick="testAdd()" />
	<script type="text/javascript">
		
		function testAdd(){
			var intA = document.getElementById("intA").value;
			var intB = document.getElementById("intB").value;
			var res = abc.testDllAdd(intA,intB);
			alert(res);
		}
	</script>

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

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

丨Anna丨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值