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

Запустить программу и ждать завершения, не вешая основной программы

11.10.2011, 06:23. Показов 2708. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно запустить программу и дождаться её завершение, после продолжить работу

Вот что я нашел, для реализации этого.
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
Private Type PROCESS_INFORMATION
   hProcess As Long
   hThread As Long
   dwProcessID As Long
   dwThreadID As Long
End Type
 
Private 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 Long
   hStdInput As Long
   hStdOutput As Long
   hStdError As Long
End Type
 
     
 
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
Private 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
 
 
 
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
 
Private Const INFINITE = -1&
Private Const NORMAL_PRIORITY_CLASS = &H20&
 
Dim FileName As String
 
 
Public Sub RunFile(FileName)
   
   Dim Process As PROCESS_INFORMATION
   
   Dim Prog As STARTUPINFO
   
   Prog.cb = Len(Prog)
   
   CreateProcessA 0&, FileName, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, Prog, Process
   
   WaitForSingleObject Process.hProcess, INFINITE
   
   CloseHandle Process.hProcess
 
End Sub
Код работает, но окно основной формы перестает перерисовываться. Возможно ничего страшного нет, но выглядит не красиво и кажется что всё повисло. Что поправить в коде или подскажите другой способ для реализации этой идеи ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2011, 06:23
Ответы с готовыми решениями:

Запустить внешюю программу и дождаться ее завершения
Всем привет! Испольщую код: Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal...

Как запустить стороннее приложение и ждать завершения его работы?
В принципе, зная расположение какого-то приложения на диске запуск его особых трудностей не вызывает. Сложность состоит в другом - как...

Не ждать завершения запущенной внешней программы
Я запускаю из своей программы внешний экзешник при помощи system(command). Но данный вариант меня не устраивает, т.к. приходится ждать...

4
Частенько бываю
 Аватар для Vlanib
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
11.10.2011, 07:49
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
'...58
If CreateProcessA(CreateProcessA 0&, FileName, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, Prog, Process) = 0 Then Unload Me: Exit Sub
CloseHandle Process.hThread
Do
    DoEvents
    'Здесь можно подвигать какой нибудь прогресс бар
Loop Until WaitForSingleObject(Process.hProcess, 20) = 0
'59...
1
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387
11.10.2011, 08:43  [ТС]
Vlanib, Спасибо.
0
2 / 2 / 1
Регистрация: 16.03.2015
Сообщений: 45
09.06.2015, 23:25
Подскажите, почему VB ругается вот на эту строку? Ожидает разделителя. или скобки?

Visual Basic
1
If CreateProcessA(CreateProcessA 0&, FileName, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, Prog, Process) = 0 Then Unload Me: Exit Sub
0
 Аватар для PAnT0P
1492 / 587 / 106
Регистрация: 26.03.2012
Сообщений: 1,039
03.01.2016, 21:25
Цитата Сообщение от Regressor Посмотреть сообщение
Подскажите, почему VB ругается вот на эту строку? Ожидает разделителя. или скобки?
Visual Basic
1
If CreateProcessA(0&, FileName, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, Prog, Process) = 0 Then Unload Me: Exit Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.01.2016, 21:25
Помогаю со студенческими работами здесь

Запустить внешнюю программу и дождаться ее завершения
Доброго времени суток. Я новичек в программировании и тем более в C#. Очень нужна помощь. Форма с кнопками, textbox, chekedlistbox....

Ждать завершения backgroundWorker
Возможно ли в основном потоке подождать пока выполнится backgroundworker. например... private void...

Ждать завершения ExecutorService
Добрый день уважаемые форумчане, подскажите пожалуйста... У меня есть поток, он в свою очередь запускает ExecutorService на 20...

Вызов подпрограммы из основной программы, с сохранением работоспособности основной программы?(подробно внутри)
Добрый день. Буду благодарен, если кто-нибудь подскажет как такое реализовать. Суть вопроса: В основном консольном приложении...

Как вызвать приложение и ждать его завершения
Люди! Как из проги на яве вызвать другое приложение и !ждать его завершения! , а потом продолжить работу?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru