Выполнение .exe из Visual Basic 6 - PullRequest
       53

Выполнение .exe из Visual Basic 6

3 голосов
/ 24 октября 2010

Я новичок в Visual Basic.Я пытаюсь выполнить .exe файл из VB.Но я не получаю вывод.У моего .exe есть аргументы командной строки.Ниже приведен мой код

Private Sub Command1_Click()

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

End Sub

В командной строке cmd Если я дам команду extractFEPData.exe data.txt Это файл анализируется.Но в VB после нажатия командной кнопки ничего не происходит.

Пожалуйста, помогите мне.

Ответы [ 5 ]

4 голосов
/ 07 февраля 2014
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 голосов
/ 25 октября 2010

В прошлом я всегда использовал ShellExecute Win32 API. Вы можете найти отличные рекомендации по его использованию из VB6 ниже.

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

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

0 голосов
/ 24 октября 2010

Вам нужно установить текущий каталог?Вы передаете только имя файла, а не полный путь.

ChDrive "d:" 

ChDir "d: \ fep" Оболочка "D: \ FEP \ extractFEPData.exe data.txt", vbNormalFocus

Руководство по VB6

0 голосов
/ 25 октября 2010

Вы можете сделать это с помощью метода WShell.Exec, чтобы запустить программу и вернуть объект WshScriptExec со свойством StdOut, представляющим собой объект TextStream, который вы можете прочитать.поддерживает только блокировку звонков.Однако вы можете использовать вызовы API для запуска внешнего процесса и перенаправления его стандартных потоков ввода-вывода в анонимные каналы, из которых программа VB6 может читать / записывать.Это больше работы, но вы получаете больше контроля.

Возможно, вы ищете что-то еще?

0 голосов
/ 24 октября 2010

(при условии, что вы хотите захватить выходные данные)

Вам необходимо использовать некоторые функции .NET (см. здесь ), если вы используете VB.NET или какой-либо Win32 API (см. здесь ) если вы используете VB6.

...