用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打上勾 并点击"确定".
然后切换到代码界面(可以是双击界面),添加一个函数
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
<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" onclick="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客户端程序的路径存储在注册表中,Web应用可以通过JavaScript调用一个ActiveX对象,该对象具有访问注册表的权限,然后读取路径并执行程序。 具体步骤如下: 1. **创建或查找注册表项**:Web应用首先...
当用户在客户端(通常是Web浏览器)上打开一个网页并点击“打印”按钮时,常规操作是弹出一个打印机选择对话框,让用户选择要使用的打印机。然而,在某些场景下,为了提高用户体验或者出于自动化的需求,开发者可能...
在软件开发过程中,有时候我们需要将基于浏览器的BS(Browser-Server)架构程序转换为客户端可以离线使用的CS(Client-Server)安装包。这时,一款强大的打包工具就显得尤为重要。InstallAnywhere是一款功能丰富的跨...
标题中的“PB做的BS界面系统”指的是使用PowerBuilder(PB)开发的基于浏览器-服务器(Browser-Server,BS)架构的用户界面系统。PowerBuilder是一款强大的可视化编程工具,尤其擅长于构建数据库应用系统。在BS架构...
这样,当数据窗口的特定事件触发时,会直接执行预设的JavaScript脚本,而不是调用PB中的回调函数。目前,支持的客户端事件主要包括点击、双击、右键单击等。 客户端程序优化的策略可以通过JavaScript脚本技术实现,...
在C# WinForm应用中调用B/S架构中的JavaScript方法主要涉及到的是客户端与服务器端的交互问题。在传统的Web开发中,B/S架构通常由浏览器(客户端)与服务器(后端)组成,而C# WinForm是桌面应用程序,它们之间进行...
BS系统调用CS系统的exe附带入参,ie可以直接通过js进行调用CS的exe,谷歌等浏览器不能直接调用,目前在用的还算稳定尚未出现其他问题。 若非系统有需求,这辈子都不愿意碰BS的调用CS的EXE 遇到这种问题查都没地查
在IT行业中,PowerBuilder(PB)是一款强大的第四代编程语言(4GL),主要用于开发企业级的应用程序,尤其在数据窗口(DW)技术方面表现出色。本文将深入探讨如何使用PowerBuilder实现一个仿浏览器-服务器(BS)界面...
这款设备广泛应用于BS(Browser-Server,浏览器-服务器)架构的系统中,通过JavaScript(JS)调用来实现用户验证,同时与JAVA和ASP(Active Server Pages)技术相结合,提供了一种高效且安全的身份认证解决方案。...
在PB11中,CS转BS步骤是一种常见的开发需求,以下是详细的知识点总结: 1. PB11开发环境安装 PB11开发环境安装是CS转BS步骤的基础,需要先安装windows的IIS5.0以上,然后安装asp.net framework 2.0。接着,下载IE ...
4. **调用测试**:在BS系统中,通过JavaScript或VBScript等客户端脚本语言调用ActiveX控件的方法,检查调用是否成功,返回值是否符合预期。 5. **异常处理**:测试在各种异常情况下,如网络中断、数据格式错误等,...
WebSocket是一种在客户端(Browser, B/S)和服务器端(Server, C/S)之间建立长连接的协议,它允许双方进行实时、双向的数据交换,极大地提高了Web应用的性能和响应速度。在传统的HTTP协议中,每次请求和响应都需要...
标题中的“Oracle+java+jsp BS/CS 管理系统客户端源代码”指的是一个基于Oracle数据库、Java编程语言和JSP(Java Server Pages)技术开发的管理系统的客户端部分的源代码。这样的系统通常用于构建B/S(Browser/...
2. **瘦客户端**:在客户端只保留最基本的界面展示和用户交互功能,大部分业务逻辑和数据处理都在服务器上执行。VB可以创建一个轻量级的客户端应用,通过HTTP协议与Web应用交互,例如使用AJAX技术提高用户体验。 在...
在本文中,我们将深入探讨如何在BS(Browser-Server,浏览器-服务器)模式下通过JavaScript(JS)调用和设置Quest3D中的参数。Quest3D是一款强大的实时3D应用程序开发工具,它允许开发者创建交互式的3D场景。在Web...
这种结构的主要优势在于其无需在客户端安装额外软件,维护和升级便捷,且跨平台特性使其可以在多种操作系统上运行。此外,BS体系结构的开放性和可扩展性使得系统能够适应不断变化的需求,并可以通过防火墙确保安全性...
例如,`dw_1.OnClientItemChanged = "MyItemChanged"`会让数据窗口在客户端的ItemChanged事件触发时执行指定的JavaScript函数,而不是PB中的程序。支持的客户端事件包括clicked、DoubleClicked等,需要在事件前加上...
ASP.NET(BS构架) 调用[启动] IIS服务端exe程序案例 一、本案例使用SB构架调用[启动]IIS服务端exe程序,实现服务端程序执行一系列操作。 二、如果需要启动 客户端 exe程序,则可以考虑使用javascript脚本。 三、...
PB11 CS转BS是指将基于PowerBuilder 11(PB11)的客户机/服务器(C/S)架构的应用程序转换成基于浏览器/服务器(B/S)架构的应用程序。这个过程涉及到多个步骤,主要是利用PB11的.NET Web Forms Application功能来...
在这个示例中,我们看到的是如何在Web环境中调用和集成这种卡片系统,以便在网页上实现与华旭金卡相关的功能,如身份验证、交易处理等。 首先,"技术文档"部分通常会包含详细的操作指南、API参考、常见问题解答和...