【问题标题】:Link Visual Basic with Python将 Visual Basic 与 Python 链接
【发布时间】:2012-02-19 16:25:49
【问题描述】:

我一直在寻找如何将 Visual Basic 与 python 文件链接

我已经通过在 Visual Basic 中使用 shell 进行了如此努力,但没有任何反应

我有一个名为 Go.py 的 python 文件,我想将 Visual Basic 按钮与它链接起来,并将返回值放入变量中

有什么想法吗?

【问题讨论】:

  • 你在使用 IronPython,对吧?
  • 那是你的问题。 VB.net 以 CLR 为目标,IronPython 也是如此。
  • 我会安装 IronPython,但我如何将 Visual Basic 与它连接起来?
  • 你为shell 参数传递了什么?您可能需要定位 python(或 pythonw)exe 的绝对文件路径,以及您尝试执行的脚本。
  • 去阅读 IronPython 文档。在您完成合理数量的研究之前,请勿在 stackoverflow 上提问。

标签: python visual-studio-2010 call


【解决方案1】:

首先,您可以使用Shell,尽管不幸的是它可能比您想象的要复杂。

您当前的问题很简单-Shell 无法直接运行 python 文件,因此您需要让Shell 调用cmd /c python.exe Go.py,并且您可能需要提供python.exe 的完整路径为好吧。

但是,您还想捕获结果,Shell 只返回进程 ID,而不是任何类型的进程输出。您可以查看一些examples of external process invocation,尽管它们没有明确介绍如何捕获输出。如果Go.py 输出到终端,您可能可以使用standard Windows output redirection 将输出捕获到文件中,然后在VisualBasic 中打开文件并读取值。

您也可以使用System.Diagnostics.Process(),而不是费尽心思尝试从Shell 中获取更多功能。 (具体来说,查看与输出重定向相关的ProcessStartInfo 类属性,它比使用Shell 的任何东西都给您更多的控制权。

【讨论】:

  • 我认为通过 "os.popen("cc.py").read()" 像 python 一样容易得到结果
  • @EngHamoud:很遗憾,情况并非如此——而且,即使在 Python 中,您也应该使用 subprocess 模块,其 Popen 类的功能非常类似于 VB 中的 System.Diagnostics.Process 类。
猜你喜欢
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多