用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脚本技术实现,...
BS系统调用CS系统的exe附带入参,ie可以直接通过js进行调用CS的exe,谷歌等浏览器不能直接调用,目前在用的还算稳定尚未出现其他问题。 若非系统有需求,这辈子都不愿意碰BS的调用CS的EXE 遇到这种问题查都没地查
在C# WinForm应用中调用B/S架构中的JavaScript方法主要涉及到的是客户端与服务器端的交互问题。在传统的Web开发中,B/S架构通常由浏览器(客户端)与服务器(后端)组成,而C# WinForm是桌面应用程序,它们之间进行...
在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. **异常处理**:测试在各种异常情况下,如网络中断、数据格式错误等,...
标题中的“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功能来...
基于JAVA的BS框架的邮件系统客户端软件设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 基于JAVA的BS框架的邮件系统客户端软件设计实现源码,...