Вызов программы с программы (с ключем) - VB

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

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

Проблема следующего характера нужно чтобы при нажатии на кнопку вызывалась программа 'sndrec32.exe' с определенными ключами, а конкретнее запись файла по указанному пути. При повторном нажатии запись прерывалась. Путь к файлу берется из ComboBox. Заранее благодарю.

Решение задачи: «Вызов программы с программы (с ключем)»

textual
Листинг программы
Const STILL_ACTIVE = &H103&
 
Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Byte
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type
 
Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessId As Long
    dwThreadId As Long
End Type
 
Declare Function CreateProcessA Lib 'kernel32' (ByVal _
         lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
         lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
         ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
         ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
         lpStartupInfo As STARTUPINFO, lpProcessInformation As _
         PROCESS_INFORMATION) As Long
 
Declare Function GetExitCodeProcess Lib 'kernel32' _
            (ByVal hProcess As Long, lpExitCode As Long) As Long
'//hProcess - это идентификатор процесса, создаваемого CreateProcess, _
  берется из PROCESS_INFORMATION, проверять в цикле, _
  если в lpExitCode = 0 - процесс завершен, _
  либо, пока lpExitCode = STILL_ACTIVE, процесс активен.
 
Public Function RUN_PROC(EXEC_PATH As String, _
                    ByRef hProcess As Long) As Integer
 
Dim PI As PROCESS_INFORMATION
Dim SI As STARTUPINFO
Dim I As Integer
 
    SI.cb = Len(SI)
 
    I = CreateProcessA(0&, EXEC_PATH, 0&, 0&, 1&, &H20&, 0&, 0&, SI, PI)
    If I = 0 Then
        hProcess = -1
        RUN_PROC = -1
        Exit Function
    End If
    
    hProcess = PI.hProcess
    RUN_PROC = 0
    
End Function
 
Public Function WAIT_FOR_TERM(hProcess As Long) As Integer
 
Dim lpExitCode As Long
 
    lpExitCode = STILL_ACTIVE
    DoEvents
    
    While lpExitCode = STILL_ACTIVE
        GetExitCodeProcess hProcess, lpExitCode
    Wend
 
    WAIT_FOR_TERM = lpExitCode
    
End Function

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


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

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

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