Как сделать запуск стороннего приложения - VB

Узнай цену своей работы

Формулировка задачи:

как сделать запуск стороннего приложения. В bat файле это выглядит вот так вот:

Решение задачи: «Как сделать запуск стороннего приложения»

textual
Листинг программы
'############### БЛОК ПРОГРАММ ОБЕСПЕЧЕНИЯ ПРОЦЕССОВ ###################
'###############   Позаимствовано у Брюса МакКинни   ###################
 
Const PROCESS_ALL_ACCESS = 2035711 '(&H1F0FFF)
 
Const INFINITE = -1                '(&HFFFFFFFF)
 
Const STILL_ACTIVE = 259           '(&H103)
 
Const WAIT_FAILED = -1             '(&HFFFFFFFF)
 
 
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
                                             ByVal bInheritHandle As Long, _
                                             ByVal dwProcessId As Long) As Long
 
 
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
                                                     ByVal dwMilliseconds As Long) As Long
 
 
Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, _
                                                          lpExitCode As Long) As Long
 
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'::::   Ожидать завершения процесса и получить код завершения      :::::
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
Function WaitOnProgram(ByVal idProg As Long, _
              Optional ByVal WaitDead As Boolean) As Long
 
Dim cRead   As Long
Dim iExit   As Long
Dim hProg   As Long
Dim iResult As Long
 
    '::: Получаем хэндл процесса
 
    hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
 
    If (WaitDead) Then
 
       '::: Ждем до победного конца
       
       iResult = WaitForSingleObject(hProg, INFINITE)
 
       '::: Если ожидание завершилось неудачно - возбудим ошибку
 
       If (iResult = WAIT_FAILED) Then Error Err.LastDllError
 
       '::: Получаем код завершения
 
       GetExitCodeProcess hProg, iExit
 
    Else
 
       '::: Пробуем получить код завершения
 
       GetExitCodeProcess hProg, iExit
 
       '::: Если процесс все еще в состоянии выполнения,
       '::: не дадим системе зависнуть
 
       Do While (iExit = STILL_ACTIVE)
          DoEvents
          GetExitCodeProcess hProg, iExit
       Loop
 
    End If
 
    '::: Закроем хендл
 
    CloseHandle hProg
 
    WaitOnProgram = iExit
 
End Function
 
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'::::   Запустиь программу ProgName с командной строкой CmdLine,   ::::
'::::   получением кода завершения RC в окне стиля winStyle        ::::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
Public Sub ExecPrg(ProgName As String, _
                   CmdLine As String, _
                   RC As Integer, _
                   winStyle As Integer)
 
Dim idProc As Long, iExit As Long
 
    idProg = Shell((ProgName + " " + CmdLine), winStyle)
 
    iExit = WaitOnProgram(idProg)
 
    RC = iExit
 
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.533 из 5
Похожие ответы