`
jackeysion
  • 浏览: 129793 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

(原创)在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打上勾 并点击"确定".
     然后切换到代码界面(可以是双击界面),添加一个函数
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) 已经成功调用了,当然自己的示例中少了许多异常的处理,只是作为一个参考.
分享到:
评论

相关推荐

    web通过注册表调用Bs客户端

    例如,如果BS客户端程序的路径存储在注册表中,Web应用可以通过JavaScript调用一个ActiveX对象,该对象具有访问注册表的权限,然后读取路径并执行程序。 具体步骤如下: 1. **创建或查找注册表项**:Web应用首先...

    B/S结构调用客户端默认打印机直接打印

    当用户在客户端(通常是Web浏览器)上打开一个网页并点击“打印”按钮时,常规操作是弹出一个打印机选择对话框,让用户选择要使用的打印机。然而,在某些场景下,为了提高用户体验或者出于自动化的需求,开发者可能...

    InstallAnywhere,BS架构程序打包成CS客户端安装包

    在软件开发过程中,有时候我们需要将基于浏览器的BS(Browser-Server)架构程序转换为客户端可以离线使用的CS(Client-Server)安装包。这时,一款强大的打包工具就显得尤为重要。InstallAnywhere是一款功能丰富的跨...

    PB做的BS界面系统

    标题中的“PB做的BS界面系统”指的是使用PowerBuilder(PB)开发的基于浏览器-服务器(Browser-Server,BS)架构的用户界面系统。PowerBuilder是一款强大的可视化编程工具,尤其擅长于构建数据库应用系统。在BS架构...

    PB11[1].5_WEB客户端编程技巧

    这样,当数据窗口的特定事件触发时,会直接执行预设的JavaScript脚本,而不是调用PB中的回调函数。目前,支持的客户端事件主要包括点击、双击、右键单击等。 客户端程序优化的策略可以通过JavaScript脚本技术实现,...

    c# winform 中怎样来调用B/S中的JavaScript的方法

    在C# WinForm应用中调用B/S架构中的JavaScript方法主要涉及到的是客户端与服务器端的交互问题。在传统的Web开发中,B/S架构通常由浏览器(客户端)与服务器(后端)组成,而C# WinForm是桌面应用程序,它们之间进行...

    谷歌浏览器调用CS的EXE

    BS系统调用CS系统的exe附带入参,ie可以直接通过js进行调用CS的exe,谷歌等浏览器不能直接调用,目前在用的还算稳定尚未出现其他问题。 若非系统有需求,这辈子都不愿意碰BS的调用CS的EXE 遇到这种问题查都没地查

    pb 实现仿BS界面 dw菜单 powerbuild

    在IT行业中,PowerBuilder(PB)是一款强大的第四代编程语言(4GL),主要用于开发企业级的应用程序,尤其在数据窗口(DW)技术方面表现出色。本文将深入探讨如何使用PowerBuilder实现一个仿浏览器-服务器(BS)界面...

    中控指纹仪 URU4000B BS JS调用 JAVA ASP 附带说明书 例子

    这款设备广泛应用于BS(Browser-Server,浏览器-服务器)架构的系统中,通过JavaScript(JS)调用来实现用户验证,同时与JAVA和ASP(Active Server Pages)技术相结合,提供了一种高效且安全的身份认证解决方案。...

    PB11中CS转BS步骤

    在PB11中,CS转BS步骤是一种常见的开发需求,以下是详细的知识点总结: 1. PB11开发环境安装 PB11开发环境安装是CS转BS步骤的基础,需要先安装windows的IIS5.0以上,然后安装asp.net framework 2.0。接着,下载IE ...

    BS系统接口调试active注册控件

    4. **调用测试**:在BS系统中,通过JavaScript或VBScript等客户端脚本语言调用ActiveX控件的方法,检查调用是否成功,返回值是否符合预期。 5. **异常处理**:测试在各种异常情况下,如网络中断、数据格式错误等,...

    BS与CS的websocket连接

    WebSocket是一种在客户端(Browser, B/S)和服务器端(Server, C/S)之间建立长连接的协议,它允许双方进行实时、双向的数据交换,极大地提高了Web应用的性能和响应速度。在传统的HTTP协议中,每次请求和响应都需要...

    Oracle+java+jsp BS/CS 管理系统客户端源代码

    标题中的“Oracle+java+jsp BS/CS 管理系统客户端源代码”指的是一个基于Oracle数据库、Java编程语言和JSP(Java Server Pages)技术开发的管理系统的客户端部分的源代码。这样的系统通常用于构建B/S(Browser/...

    CS和BS如何结合开发系统

    2. **瘦客户端**:在客户端只保留最基本的界面展示和用户交互功能,大部分业务逻辑和数据处理都在服务器上执行。VB可以创建一个轻量级的客户端应用,通过HTTP协议与Web应用交互,例如使用AJAX技术提高用户体验。 在...

    bs中js调用和设置quest3d中参数

    在本文中,我们将深入探讨如何在BS(Browser-Server,浏览器-服务器)模式下通过JavaScript(JS)调用和设置Quest3D中的参数。Quest3D是一款强大的实时3D应用程序开发工具,它允许开发者创建交互式的3D场景。在Web...

    基于BS体系结构开发应用系统

    这种结构的主要优势在于其无需在客户端安装额外软件,维护和升级便捷,且跨平台特性使其可以在多种操作系统上运行。此外,BS体系结构的开放性和可扩展性使得系统能够适应不断变化的需求,并可以通过防火墙确保安全性...

    PB11.5 WEB客户端编程技巧总结

    例如,`dw_1.OnClientItemChanged = "MyItemChanged"`会让数据窗口在客户端的ItemChanged事件触发时执行指定的JavaScript函数,而不是PB中的程序。支持的客户端事件包括clicked、DoubleClicked等,需要在事件前加上...

    ASP.NET(BS构架) 调用启动 IIS服务端exe程序案例

    ASP.NET(BS构架) 调用[启动] IIS服务端exe程序案例 一、本案例使用SB构架调用[启动]IIS服务端exe程序,实现服务端程序执行一系列操作。 二、如果需要启动 客户端 exe程序,则可以考虑使用javascript脚本。 三、...

    pb11 CS转BS详细资料

    PB11 CS转BS是指将基于PowerBuilder 11(PB11)的客户机/服务器(C/S)架构的应用程序转换成基于浏览器/服务器(B/S)架构的应用程序。这个过程涉及到多个步骤,主要是利用PB11的.NET Web Forms Application功能来...

    华旭金卡web调用

    在这个示例中,我们看到的是如何在Web环境中调用和集成这种卡片系统,以便在网页上实现与华旭金卡相关的功能,如身份验证、交易处理等。 首先,"技术文档"部分通常会包含详细的操作指南、API参考、常见问题解答和...

Global site tag (gtag.js) - Google Analytics