4

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

Private Sub Command1_Click()

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

End Sub

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

请帮我。

4

5 回答 5

5
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
于 2014-02-07T11:37:46.867 回答
2

过去我一直使用ShellExecute Win32 API。您可以从下面的 VB6 中找到有关使用它的很好的参考资料。

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

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

于 2010-10-25T19:57:28.743 回答
0

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

ChDrive "d:" 
ChDir "d:\fep" 
Shell "D:\FEP\extractFEPData.exe data.txt", vbNormalFocus 

VB6手册

于 2010-10-24T17:44:06.750 回答
0

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

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

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

于 2010-10-25T15:34:07.027 回答
0

(假设您要捕获输出)

如果您使用的是 VB.NET,则需要使用一些 .NET 函数(请参阅此处);如果您使用的是 VB6,则需要使用一些 win32 API(请参阅此处)。

于 2010-10-24T08:36:35.560 回答