【问题标题】:How to embed VBS in C# and run it?如何在 C# 中嵌入 VBS 并运行它?
【发布时间】:2012-07-25 22:16:19
【问题描述】:

我有一个运行良好的 VBScript。我有一个可以使用 cscript 程序运行 VBScript 的 C# 程序。

我想要做的是将 VBS 嵌入到 C# exe 中,使其成为一个文件并且能够运行 VBS 文件。我有什么办法可以将嵌入式 VBScript 文件作为参数传递给 cscript 或以其他方式运行嵌入式 VBS 文件?

【问题讨论】:

标签: c# .net vbscript


【解决方案1】:
Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"));

dynamic obj = Activator.CreateInstance(scriptType, false);
obj.Language = "vbscript";
string vbscript = "msgbox(\"test\")";
obj.Eval(vbscript);

【讨论】:

  • 执行此操作的 WinForms 应用程序的工作示例:cheeso.members.winisp.net/…
  • 我应该如何格式化 VBScript 的语法以使其工作? msgbox 示例有效,但在尝试使用 VBScript 保留字运行脚本时出现语法错误。
  • @L.B 这不起作用:Wscript.Echo("hello")。知道为什么吗?
【解决方案2】:

另一种方法是您可以通过子进程执行 CSCRIPT.EXE:

Process.Start("cscript.exe", "C:\\myscript.vbs");

但是,请记住,.NET 和 C# 与 VBS 脚本非常兼容。您可能只想将 VBS 代码直接重写为 C# 程序。

【讨论】:

  • 如果没有路径,嵌入式资源如何工作?我正在使用Assembly.GetExecutingAssembly() .GetManifestResourceStream("script.vbs"))
  • 将你的资源解压到一个临时文件,用这个临时文件执行 CScript。然后删除临时文件?
  • @PaulFarry 显然我可以这样做,但我正试图找到一种不暴露文件的方法。
  • @Jack 抱歉,但这并不明显。您没有在问题或评论中说明这是您测试的内容。
  • @PaulFarry 我已经提到我可以从 C# 程序运行该文件。我说“我想做的是将 VBS 嵌入到 C# exe 中,所以它是 one single file and be able to run the VBS file.”和“运行嵌入 VBS 文件的其他方式?”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2023-03-24
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多