Проверка программы, запущенной через Shell - VB

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

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

Я использую внешнюю программу для расчётов определённого вида, при этом запускаю её через Shell(). Как мне узнать, завершила ли она работу? (после этого я буду подгружать файл с данными) Заранее спасибо.

Решение задачи: «Проверка программы, запущенной через Shell»

textual
Листинг программы
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
 
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
 
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
Const SYNCHRONIZE = &H100000
Const WAIT_TIMEOUT = &H102
 
Public Sub ShellAndWait(CommandLine As String)
 
   Dim dwProcessID As Long
   Dim hProcess As Long
    
   dwProcessID = Shell(CommandLine, vbNormalFocus)
    
   If dwProcessID <> 0 Then
      hProcess = OpenProcess(SYNCHRONIZE, False, dwProcessID)
      If hProcess <> 0 Then
         Do While WaitForSingleObject(hProcess, 100) = WAIT_TIMEOUT
            DoEvents
         Loop
         CloseHandle hProcess
      End If
   End If
  
End Sub

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


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

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

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