在C++里执行VBS 如何执行VBS命令啊 比如Wscript.Sleep 5000 '
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C++里执行VBS 如何执行VBS命令啊 比如Wscript.Sleep 5000 '相关的知识,希望对你有一定的参考价值。
先写好一个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就能打破界线。
参考技术A vbs不是在c++里面执行的 参考技术B 你可以直接用API函数 sleep 参考技术C 不是。。。如何把VBS转换为EXE文件
如下所示,我想要做一个把360网速测试剥离开来的绿色版,有一个TestSpeed.bat命令,双击之后去执行了360AppLoader.exe,并且会调用netmon文件夹的NetSpeed.dll文件。这样的确可以实现运行360网速测试,但是bat运行的时候会有一个黑框,很不爽。
于是可以做一个VBS文件去运行这个BAT命令,双击也可以执行,并且没有黑框了。但是VBS没法继续组装了(比如我要做一个软件外壳,然后点击一个按钮之后执行一个EXE文件),所以我们还需要把这个VBS转换为EXE
网上的确有VBS2EXE,但是效果很不理想,这里介绍一个AutoIT脚本工具,只有一行命令,即可运行这个VBS脚本。
当然,把TestSpeed.au3转换成EXE就方便多了。点击工具,编译脚本,然后设置一下目标文件名,改一下图标即可。
以上是关于在C++里执行VBS 如何执行VBS命令啊 比如Wscript.Sleep 5000 '的主要内容,如果未能解决你的问题,请参考以下文章