Vb6 从Visual Basic 6向控制台程序发送命令

Vb6 从Visual Basic 6向控制台程序发送命令,vb6,process,console-application,command-line-interface,Vb6,Process,Console Application,Command Line Interface,我在windows上有一个控制台程序(一个编译版的curl命令行),您可以在其中编写命令并返回。如何将命令发送到此控制台应用程序并将结果返回到VB6?我知道您可以使用Windows脚本主机的DOS命令来执行此操作,但正如您看到的,我要运行的命令不在command.exe中 谢谢 您可以使用Microsoft.XMLHTTPActiveX对象发出HTTP请求,如下所示: Set request = CreateObject("Microsoft.XMLHTTP") request.open "PO

我在windows上有一个控制台程序(一个编译版的curl命令行),您可以在其中编写命令并返回。如何将命令发送到此控制台应用程序并将结果返回到VB6?我知道您可以使用Windows脚本主机的DOS命令来执行此操作,但正如您看到的,我要运行的命令不在command.exe中


谢谢

您可以使用
Microsoft.XMLHTTP
ActiveX对象发出HTTP请求,如下所示:

Set request = CreateObject("Microsoft.XMLHTTP")
request.open "POST", url, false
request.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
request.send postData
response = request.responseText

您应该能够将这个curl作为子进程运行,将其标准I/O流重定向到匿名管道。然而,VB6中没有任何东西可以直接支持这一点

一种方法是通过添加对Windows脚本主机对象模型的引用,使用与WSH脚本相同的内容。另一种不产生控制台窗口的更干净的方法涉及大量API调用,以创建子进程、管理子进程以及在VB6程序中读/写匿名管道。如果您还没有创建一个组件来完成这项工作,那么这将是更多的工作。

Domingo-

好吧,我假设既然你提到了它,你就知道如何使用WSH库了。您需要的唯一其他信息是执行所需命令的字符串。您可以在Windows 95/98/Me中使用此字符串运行DOS命令:

Dim sMyCommandLine As String

sMyCommandLine = "command.exe /c MYCOMMAND"
但是,您更可能使用基于NT的操作系统,如Windows NT、2000、XP、Vista或7,在这种情况下,您应该使用:

sMyCommandLine = "cmd.exe /c MYCOMMAND"

您可以使用
Shell
函数启动控制台应用程序,但它不会返回子进程的结果——批处理脚本中的所谓
Errorlevel


对于
Shell的阻塞替换,您可以。

抱歉,正如我所说,我想使用我拥有的特定控制台应用程序。为什么?您应该能够使用XMLHTTP做任何事情,而且应该更快。好吧,XMLHTTP只支持HTTP。Curl可以使用其他协议。