从Visual Basic 6执行.exe

时间:2010-10-24 08:28:03

标签: vb6 exe shellexecute

我是视觉基础的新手。我正在尝试从VB执行.exe文件。但我没有得到输出。我的.exe有命令行参数。以下是我的代码

Private Sub Command1_Click()

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

End Sub

在cmd提示符中如果我给出命令extractFEPData.exe data.txt它正在解析文件。但在VB中单击命令按钮后没有任何反应。

请帮帮我。

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

过去我一直使用ShellExecute Win32 API。你可以在下面的VB6中找到很好的参考资料。

http://support.microsoft.com/kb/238245

http://www.vbaccelerator.com/codelib/shell/shellex.htm

答案 2 :(得分:0)

(假设您想捕获输出)

如果您使用的是VB.NET,则需要使用一些.NET函数(请参阅here) 或者一些win32 API(参见here)如果您使用的是VB6。

答案 3 :(得分:0)

您需要设置当前目录吗?您只传递文件名,而不是完整路径。

ChDrive "d:" 

ChDir“d:\ fep” Shell“D:\ FEP \ extractFEPData.exe data.txt”,vbNormalFocus

VB6 Manual

答案 4 :(得分:0)

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

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

也许你正在寻找别的东西?