在Visual Basic 6中执行.exe程序

5

我是Visual Basic的新手。我正试图从VB中执行.exe文件,但我没有得到输出结果。我的.exe文件具有命令行参数。以下是我的代码:

Private Sub Command1_Click()

    Shell "D:\FEP\extractFEPData.exe data.txt", vbNormalFocus

End Sub

在命令提示符中,如果我输入命令extractFEPData.exe data.txt,它会解析文件。但是在VB中,单击命令按钮后没有任何反应。
请帮助我。
5个回答

6
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
                    ByVal hwnd As Long, _
                    ByVal lpOperation As String, _
                    ByVal lpFile As String, _
                    ByVal lpParameters As String, _
                    ByVal lpDirectory As String, _
                    ByVal nShowCmd As Long) As Long

Private Const SW_HIDE As Long = 0

Private Const SW_SHOWNORMAL As Long = 1

Private Const SW_SHOWMAXIMIZED As Long = 3

Private Const SW_SHOWMINIMIZED As Long = 2


Private Sub Label1_Click()

    ShellExecute Me.hwnd, "Open", "G:\PN Technologies\VB\Krishna & Co\KrishnaCo.exe", vbNullString, "C:\", SW_SHOWNORMAL

End Sub

2

0

(假设您想捕获输出)

如果您正在使用VB.NET,则需要使用一些.NET函数(请参见此处),或者如果您正在使用VB6,则需要使用一些win32 API(请参见此处)。


0
你需要设置当前目录吗?你只传递了文件名,而不是完整路径。
ChDrive "d:" 
ChDir "d:\fep" 
Shell "D:\FEP\extractFEPData.exe data.txt", vbNormalFocus 

VB6手册


0

您可以使用WShell.Exec方法运行程序并返回一个WshScriptExec对象,该对象具有StdOut属性,该属性是一个TextStream对象,您可以读取。

这可能有点笨拙,因为它只支持阻塞调用。但是,您可以使用API调用来运行外部进程,并将其标准I/O流重定向到VB6程序可以从中读取/写入的匿名管道。这需要更多的工作,但您可以获得更多的控制权。

也许您正在寻找其他东西?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接