在bs系统中客户端调用dll组件(js调用pb写的com组件)

2024-03-27 03:18

本文主要是介绍在bs系统中客户端调用dll组件(js调用pb写的com组件),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用JavaScript直接调用dll组件或其他com组件是不行的,但是JavaScript可以调用activex控件,因此,为了实现js调用dll,在两者之间增加一层activex.即

JavaScript ---> activex ---> com组件
<--- <--- (返回结果)

这里activex是用vb6.0写的,因为感觉vb写activex比较方便,而且也比较容易学.
com组件是用pb8.0写的,并且在注册为com组件(regsvr32 *.dll)

第一步:
需要做一个PB的应用.为了简单起见,可以在PB的应用里只增加一个UO(如果不知道UO,可以学习一下PB的基本知识)具体为File--New 弹出的窗口中选tab PB Object , 选第一个Custom Class ,保存并命名为uo_test,然后给UO添加一个方法(在方法列表里右键--add),命名为 test_dll,给该方法加一个参数(string pname) , 然后方法体写return "hello , " + pname . 关闭uo
下面开始做dll:
File -- New 选Project选项卡,选择第二行最后一个"COM/MTS Component"
保存为test. 关闭其他的所有uo,只保留这个,这时工具栏只有2行,其中第二行保存按钮后面的三个分别为 Select Objects,Properties,Deploy就是打包dll用到的功能.
先选择 SelectObjects , 将需要的pbl和uo选上,ok. 再选择Properties,有三个tab选项卡,Genel: FileName dll的名字(全路径如D:\uo_test.dll),APpId和TypeLibraryId点击后面的new生成,下面有一个Type Library Version ,是对应dll的版本号.Post-Build Options中将第一项打勾. 选项卡Objects不用改,选项卡Library中将需要的PBl打勾, 点击OK. 最后点击Deploy,即生成了dll组件.
注册dll
通过使用命令: regsvr32 d:\uo_test.dll 注册为com组件
第二步:做activex控件
这里用的是vb6,当然可以选择其他语言如VC,Delphi等,本人对vb比较熟悉所以选择用vb做activex.
打开vb后新建一个"activex 控件"(英文版的是 Activex Control) 工程
将工程改名为 hello_uo,控件改名为CallTest(js里用到)
菜单: 工程 --> 引用 找到 PB80 generated typelib for : d: uo_test.dll打上勾 并点击"确定".
然后切换到代码界面(可以是双击界面),添加一个函数
Js代码
public function uo_test(pname as string) as String
dim obj as New uo_test.CoClass_test //uo_test为pb工程名,CoClass_test 为 CoClass_+PB的uo名
dim result as string
result = obj.test_dll(pname)//test_dll为pb的test这个uo里的方法(第一步)
uo_test = result //返回值
end function


将控件和工程分别保存为CallTest.ctl,hello_uo.vbp
点击菜单: 文件---生成hello_uo.ocx ,选择保存位置.(如d:根目录)
注册activex控件同PB的dll组件.regsvr32 d:\hello_uo.ocx
第三步:
好了,下面开始写js了. 做一个非常简单的页面:test_dll.html

Js代码
<html>
<head>
<title>测试读卡</title>
<script type="text/javascript">
function say(){
var obj = new ActiveXObject("hello_uo.CallTest");
var value = document.getElementById("username").value;
if (value == null){
value = "administrator";//默认值
}
var result = obj.uo_test(value);
alert(result);
}
</script>
</head>
<body>
<input type="text" name="username">
<input type="button" οnclick="say()" value="打个招呼">
</body>
</html>



代码解释:
其中new ActiveXObject("hello_uo.CallTest")里的字符串hello_uo为vb的工程名,CallTest为控件名
obj.uo_test(value)其中uo_test为vb里自己写的方法.

ok,至此 js -- activex -- com(dll) 已经成功调用了,当然自己的示例中少了许多异常的处理,只是作为一个参考.

这篇关于在bs系统中客户端调用dll组件(js调用pb写的com组件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/850759

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

MYSQL查询结果实现发送给客户端

《MYSQL查询结果实现发送给客户端》:本文主要介绍MYSQL查询结果实现发送给客户端方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql取数据和发数据的流程(边读边发)Sending to clientSending DataLRU(Least Rec

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹