VB运行VBS程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB运行VBS程序相关的知识,希望对你有一定的参考价值。

用VB写一个程序,点击command1后,运行c:\run.vbs
run.vbs内容为:
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c run.bat",vbhide
即运行同级目录下的run.bat
run.bat内容为:
dir d: >1.txt
即显示D盘的文件并写入结果到同级目录的1.txt
请问要怎么写这个VB程序,才可以完成这个连锁运行呢?使得1.txt可以成功生成
还是不行啊,仍然提示无效的过程调用或参数,是不是不完整啊?

调用shell函数(很久不用了,希望正确)

private sub command1_click()
dim x as integer
x=shell("c:\\run.vbs",1) \'本行已修改
end sub

x无用,但是必须得有
shell函数后面还得有一个窗口类型
参考技术A shell "c:\run.vbs"

从 Windows 服务运行 VB 脚本

【中文标题】从 Windows 服务运行 VB 脚本【英文标题】:Run VB Script from Windows Service 【发布时间】:2013-09-18 11:44:10 【问题描述】:

我用 C# 编写了一个小型 Windows 服务,它执行 .BAT 和 .VBS 脚本。以下代码触发 .vbs 脚本:

string path = "C:\\Path\\To\\MyScript.vbs";
Process p = new Process();
p.StartInfo = new ProcessStartInfo();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WorkingDirectory = Environment.SystemDirectory;
p.StartInfo.FileName = Path.Combine(Environment.SystemDirectory, "cmd.exe");
p.StartInfo.Arguments = "/C C:\\Windows\\System32\\cscript.exe //Nologo \"" + path + "\"";
p.StartInfo.ErrorDialog = false;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.OutputDataReceived += OutputDataReceived;
p.ErrorDataReceived += OutputDataReceived;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

try

p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.WaitForExit();

catch  // 

代码编译并运行,没有任何异常。但是,可能有问题,因为 VBS 脚本直到最后才执行。在脚本中,我打开一个 telnet 会话并输入一些命令。当我在 WinForms 应用程序中运行相同的代码和相同的脚本时,一切正常。

我认为问题是由我的服务引起的,该服务以本地系统运行。

有什么想法吗?

编辑

这是我的 VBScript:

set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "cmd"
WScript.Sleep 1000 

WshShell.SendKeys "telnet 127.0.0.1 3000"
WshShell.SendKeys "ENTER"
WScript.Sleep 2000

WshShell.SendKeys "reboot application"
WshShell.SendKeys "ENTER"
WScript.Sleep 2000

由于某种原因,telnet 命令从未执行,但进程仍然以 exitcode '0' 结束...

【问题讨论】:

你调试了服务,看看会发生什么? 我做到了,但我没有收到异常或任何错误消息... 您可能不会收到异常,但 Process.Start() 可能会抛出错误代码。检查 process.ExitCode 你应该得到描述原因的整数。 感谢您的提示。该过程以“0”退出,因此看起来一切正常。我将添加上面的 VB 脚本以提供更多信息。 【参考方案1】:

知道了 - 当没有用户登录时,SendKeys 不起作用。代码本身运行良好。

【讨论】:

以上是关于VB运行VBS程序的主要内容,如果未能解决你的问题,请参考以下文章

vb.net2005中如何调用外部vbs文件

如何用vb.net 调用VBS文件?

WIN7 64位系统任务计划程序里运行VBS脚本 报错,脚本本身没问题!请问怎么解决?

怎样用cmd执行vbs脚本,求简单实用命令

.vbs文件怎么运行

vbs怎么产生0-10的随机数呀?