Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 27.10.2016
Сообщений: 4

Ожидание завершения ранее запущеного процесса

08.11.2016, 23:58. Показов 1507. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть некий код который запускает файл в системе root.exe после его завершения мне нужно выполнить в основной программе следующие действия, например msgbox
"root.exe status closed."
Нашёл такой код но он мне не подходит так как уже процесс запущен мне нужно получить PID и дождаться его завершения.
PureBasic
1
2
3
4
5
6
Dim v As Variant 
Set v = CreateObject("Wscript.Shell") 
v.run "c:\windows\notepad.exe", 1, True 
set v=nothing 
Beep 'пикнет только ПОСЛЕ того, как запущенная прога будет закрыта. Если не пикает, включи колонки.) 
MsgBox "qq"
Сяб вам.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.11.2016, 23:58
Ответы с готовыми решениями:

Запуск и ожидание завершения другой программы
Есть такой несложный код, опубликованный на винграде еще лет десять назад: Private Sub Form_Load() Dim v As Variant Set v =...

Ожидание завершения процесса
Завершаю процесс так: WinExec("taskkill /f /im mysqld.exe", SW_HIDE); Как сделать так, что бы пока процесс не будет завершен...

Ожидание завершения процесса
Привет, есть путь к файлу, есть файл, после запуска файл выполняет действия и закрывается. Задача: Отследить состояние файла по пути,...

8
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
09.11.2016, 18:53
Вам сюда..
Тут все разжевано
Запустить внешюю программу и дождаться ее завершения
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.11.2016, 18:57
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Option Explicit
 
Private Const MAX_PATH As Long = 260&
 
Private Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * MAX_PATH
End Type
 
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function lstrcmpi Lib "kernel32.dll" Alias "lstrcmpiW" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32.dll" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
 
Private Const TH32CS_SNAPPROCESS        As Long = 2
Private Const SYNCHRONIZE               As Long = &H100000
Private Const INFINITE                  As Long = -1
Private Const INVALID_HANDLE_VALUE      As Long = -1
 
Private Sub Form_Load()
    Dim sProcName As String
    Dim PID As Long
    Dim hProc As Long
    
    sProcName = "notepad.exe"
 
    If IsRunned(sProcName, PID) Then
        hProc = OpenProcess(SYNCHRONIZE, False, PID)
        If hProc > 0 Then
            Call WaitForSingleObject(hProc, INFINITE)
        End If
        MsgBox "Процесс " & sProcName & " завершился."
    Else
        MsgBox "Процесс " & sProcName & " не запущен!"
    End If
End Sub
 
 
Function IsRunned(Optional ByRef ProcessName As String, Optional ByRef ProcessID As Long) As Boolean
    ' Запущен ли процесс, указанный по имени или ProcessID
    ' (регистр символов не учитывается)
    ' Если процесс найден, в переменную ProcessID передается PID найденного процесса (если поиск велся по имени),
    ' либо в переменную ProcessName возвращается имя найденного процесса (если поиск велся по PID).
 
    Dim hSnap   As Long
    Dim pe      As PROCESSENTRY32
 
    If Len(ProcessName) = 0 And ProcessID = 0 Then Exit Function
 
    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
 
    If hSnap = INVALID_HANDLE_VALUE Then Exit Function
 
    pe.dwSize = Len(pe)
 
    If Process32First(hSnap, pe) Then
        Do
            If Len(ProcessName) = 0 Then
                If pe.th32ProcessID = ProcessID Then
                    IsRunned = True
                    ProcessName = Left$(pe.szExeFile, InStr(pe.szExeFile, vbNullChar) - 1)
                    Exit Do
                End If
            Else
                If lstrcmpi(StrPtr(pe.szExeFile), StrPtr(ProcessName)) = 0 Then
                    IsRunned = True
                    ProcessID = pe.th32ProcessID
                    Exit Do
                End If
            End If
        Loop While Process32Next(hSnap, pe)
    End If
    CloseHandle hSnap
End Function
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
09.11.2016, 18:59
Коллега! Вы что то напутали, человек просил не ДОКТОРСКУЮ ДИССЕРТАЦИЮ, а простенькую програмулинку...))))
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.11.2016, 19:01
kreotodr, куда ж ещё проще.

Сможеш проще - напиши.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
09.11.2016, 19:03
PureBasic
1
2
3
4
5
6
7
8
9
10
Public Sub WaitForProcessToEnd(cmdLine As String)
 
  Dim retVal As Long, pID As Long, pHandle, msWait As Long
  msWait = 1000000000#
   
  pID = Shell(cmdLine)
  pHandle = OpenProcess(&H100000, True, pID)
  retVal = WaitForSingleObject(pHandle, msWait)
    
End Sub
полный листинг по ссылке....
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
09.11.2016, 19:27
kreotodr,
Цитата Сообщение от MORFEY1337 Посмотреть сообщение
Нашёл такой код но он мне не подходит так как уже процесс запущен
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
09.11.2016, 19:32
Цитата Сообщение от Dragokas Посмотреть сообщение
Нашёл такой код но он мне не подходит так как уже процесс запущен
Тут задача сводится к ..."вылить воду из чайника, а затем задача сводится к предыдущей....")))
0
09.11.2016, 19:36

Не по теме:

Извините, я не понимаю, о чём Вы.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2016, 19:36
Помогаю со студенческими работами здесь

Ожидание завершения процесса
Опишу задачу. Исполнимая среда - Windows XPE. Из "Автозагруки" необходимо запускать батник с таким содержанием: ...

Ожидание завершения процесса
Как дождаться завершения процесса и выполнить команду ?

Ожидание завершения процесса по ID
Всем доброго времени суток, подскажите пожалуйста как решается такая задача: есть ID процесса, необходимо ждать когда этот процесс...

Ожидание завершения процесса
Как дождаться завершения процесса и выполнить команду ?

Ожидание завершения дочернего процесса
Небольшое отступление. Во время работы торрент-клиента периодически вся система полностью виснет на пару-тройку секунд. Когда сижу в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru