雨陽 2022-12-18 02:14
浏览 28
已结题

在VBS中如何使用Sockets进行Tcp连接

遇到的现象和发生背景

一个工业软件的自动化,分为两部分,一部分是主程序,另一部分是软件的脚本
主程序的启动已经实现了许可限制,需要在软件的脚本(VBS)开发中也实现License控制

许可控制的思路
1.我用socket写了一个windows服务,用来提供License文件的解码与许可授权
2.主程序用TcpClient进行连接并获取模块授权,断开后终止所有模块授权
3.在工业软件的脚本(vbs)开发的功能中也需要去服务器获取License模块的授权,但是目前没有找到可以连接sockets的方法
4.打算用vb.net写一个dll然后让vbs去引用,在ExcelVBA中测试成功,在VBS中无法创建对象

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
Namespace zSockets
    <ComClass(SocketClient.ClassId, SocketClient.InterfaceId, SocketClient.EventsId)> _
    Public Class SocketClient
        'Implements iSocketClient
#Region "COM GUID"
        ' 这些 GUID 提供此类的 COM 标识 
        ' 及其 COM 接口。若更改它们,则现有的
        ' 客户端将不再能访问此类。
        Public Const ClassId As String = "4942b316-6ebc-4ca6-8499-5a6dd07e9e9e"
        Public Const InterfaceId As String = "d08ae6ff-aadd-4900-9510-abce13a0f8ec"
        Public Const EventsId As String = "91c03c86-cc88-4ab9-931d-e03c8520f844"
#End Region

        Private _ServerIP As String
        Private _ServerPort As Integer

        Private Client As TcpClient
        Private br As BinaryReader
        Private bw As BinaryWriter

        Private _State As String
          ......
    End Class
End Namespace
运行结果及详细报错内容

宿主WScript代码:
Set Socket = CreateObject("zSockets.SocketClient") (报错“系统找不到指定文件”)
宿主为第三方工业软件时,根本看不到我的类,只有一个命名空间

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

我尝试在dll中加入了接口定义,在宿主工业软件时,只能看到我的接口,但是接口都是虚函数,无法创建对象

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

希望能提供解决思路,谢谢

  • 写回答

1条回答 默认 最新

  • 雨陽 2022-12-18 14:08
    关注

    VBS中无法创建对象的问题解决了,原来是使用的WScript.exe的版本不对,我的操作系统是64位win10,但是注册表中使用的脚本解释器是System32里的,改到SysWow64里的WScript就可以了,但是在第三方工业软件的脚本里还是显示创建对象失败

    img

    评论

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 修改了问题 12月18日
  • 创建了问题 12月18日

悬赏问题

  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令