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

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

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

как сделать запуск стороннего приложения. В bat файле это выглядит вот так вот:
Листинг программы
  1. start system\1488.exe startsalo

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

textual
Листинг программы
  1. '############### БЛОК ПРОГРАММ ОБЕСПЕЧЕНИЯ ПРОЦЕССОВ ###################
  2. '###############   Позаимствовано у Брюса МакКинни   ###################
  3.  
  4. Const PROCESS_ALL_ACCESS = 2035711 '(&H1F0FFF)
  5.  
  6. Const INFINITE = -1                '(&HFFFFFFFF)
  7.  
  8. Const STILL_ACTIVE = 259           '(&H103)
  9.  
  10. Const WAIT_FAILED = -1             '(&HFFFFFFFF)
  11.  
  12.  
  13. Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
  14.                                              ByVal bInheritHandle As Long, _
  15.                                              ByVal dwProcessId As Long) As Long
  16.  
  17.  
  18. Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
  19.                                                      ByVal dwMilliseconds As Long) As Long
  20.  
  21.  
  22. Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, _
  23.                                                           lpExitCode As Long) As Long
  24.  
  25. Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  26.  
  27. ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  28. '::::   Ожидать завершения процесса и получить код завершения      :::::
  29. ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  30.  
  31. Function WaitOnProgram(ByVal idProg As Long, _
  32.               Optional ByVal WaitDead As Boolean) As Long
  33.  
  34. Dim cRead   As Long
  35. Dim iExit   As Long
  36. Dim hProg   As Long
  37. Dim iResult As Long
  38.  
  39.     '::: Получаем хэндл процесса
  40.  
  41.     hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
  42.  
  43.     If (WaitDead) Then
  44.  
  45.        '::: Ждем до победного конца
  46.      
  47.        iResult = WaitForSingleObject(hProg, INFINITE)
  48.  
  49.        '::: Если ожидание завершилось неудачно - возбудим ошибку
  50.  
  51.        If (iResult = WAIT_FAILED) Then Error Err.LastDllError
  52.  
  53.        '::: Получаем код завершения
  54.  
  55.        GetExitCodeProcess hProg, iExit
  56.  
  57.     Else
  58.  
  59.        '::: Пробуем получить код завершения
  60.  
  61.        GetExitCodeProcess hProg, iExit
  62.  
  63.        '::: Если процесс все еще в состоянии выполнения,
  64.       '::: не дадим системе зависнуть
  65.  
  66.        Do While (iExit = STILL_ACTIVE)
  67.           DoEvents
  68.           GetExitCodeProcess hProg, iExit
  69.        Loop
  70.  
  71.     End If
  72.  
  73.     '::: Закроем хендл
  74.  
  75.     CloseHandle hProg
  76.  
  77.     WaitOnProgram = iExit
  78.  
  79. End Function
  80.  
  81. '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  82. '::::   Запустиь программу ProgName с командной строкой CmdLine,   ::::
  83. '::::   получением кода завершения RC в окне стиля winStyle        ::::
  84. '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  85.  
  86. Public Sub ExecPrg(ProgName As String, _
  87.                    CmdLine As String, _
  88.                    RC As Integer, _
  89.                    winStyle As Integer)
  90.  
  91. Dim idProc As Long, iExit As Long
  92.  
  93.     idProg = Shell((ProgName + " " + CmdLine), winStyle)
  94.  
  95.     iExit = WaitOnProgram(idProg)
  96.  
  97.     RC = iExit
  98.  
  99. End Sub

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


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

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

15   голосов , оценка 3.533 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы