如何使用VBS脚本调用C++写的DLL函数

如何使用VBS脚本调用C++写的DLL函数,第1张

先注册dll

调用方法如下芦好伏

Set x = CreateObject("工程名.类名")

x.函数名陪携

'工程名就是编译后的dll文件名跟vbs调用普通的dll文件一样的格式

注意 最袜拍快回答 那人说的是vbs调用api的方法 与你的要求并不相同你要的是调用自己写的dll

先写好一个VBS脚本放在相对于主程序(要调用VBS的程序)的某个目录下,比如主程序叫“main.exe”位置是“D:\test”,VBS脚本(叫“test.vbs”)放在“D:\test\A\B\C”,那么调用的命令(C/C++)是:

system("cd/d D:\\test")

system("\"A\\B\\C\\test.vbs\"")

原理是:CMD脚本可以直接调用VBS脚本,上面的system是用来调用CMD命令的,而CMD命令中可以调用另外的脚本(CMD脚本或VBS或程序等)。所以这样写是间接调用VBS脚本,借正帆早助CMD调用了VBS

注意:第一句执行的CMD命令是把CMD的当前目录切换到正确的位置,程序调用CMD命令时CMD的当前目录不程序当前目录,而是CMD的默认路径;system函数的头文件是stdlib.h。

完整示例代码:

#include <windows.h>

#include <string>

using namespace std

int main() {

  // VBS调用命令文本(使用相对路径的写法, 注意首尾要加双引号)

  char vbs[] = "\"..\\test.vbs\""

  // 获取当前目录字符串的长度

  int bufLen = GetCurrentDirectory(0, NULL)

  // 分配字符串空间

  char* pwd = new char[bufLen]

  // 正式获取当前目录字符举雀串

  GetCurrentDirectory(bufLen, pwd)

  // 组装cd命令

  string cmd(pwd)

  cmd.insert(0, "cd/d ")

  // 调用CMD命令, 转移到程序运行目录

  system(cmd.data())

  // 调用CMD命令, 间接调用指定的VBS脚本

  system(vbs)

  delete[] pwd

  return 0

}

注意:如果使用开发环境调试的话可能会出现命令执行错误的现象,原因是开发环境调试时的当前目录不是exe文件所在目录,在实际直接轿首执行程序时的当前目录就是exe文件所在目录

示例VBS脚本(test.vbs):

MsgBox("testVBS")

测试结果:

我用VC6写的C++,VBS脚本test.vbs在图中“try10”目录下,执行的程序“try10.exe”在“Debug”目录下。

P.S. 只要这个语言能调用CMD命令,CMD能调用的这个语言就都能调用,并不存在不界线,借助CMD就能打破界线。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12402410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存