|
7 / 7 / 1
Регистрация: 06.12.2006
Сообщений: 329
|
|
Как закрыть DOS-овское окно после завершения в нем приложения?06.12.2006, 03:47. Показов 6224. Ответов 17
Метки нет (Все метки)
Как программно отследить завершение DOS-овского приложения и закрыть соответсвующее DOS-овское окно?
0
|
|
| 06.12.2006, 03:47 | |
|
Ответы с готовыми решениями:
17
Как закрыть DOS-овское окно после завершения в нем приложения? После завершения приложения окно исчезает. Как его задержать?
|
|
Ghost
|
|
| 07.12.2006, 00:16 | |
|
А по-подробнее?
|
|
|
7 / 7 / 1
Регистрация: 06.12.2006
Сообщений: 329
|
|
| 07.12.2006, 04:07 [ТС] | |
|
'' Ниже приведен текст процедуры, которой я пользуюсь.
Public Sub DosSes(NAMF As String) '' NAMF - полный путь к Dos-овскому приложению Dim process As PROCESS_INFORMATION, start As STARTUPINFO, rc As Long start.cb = Len(start) start.dwFlags = STARTF_USESHOWWINDOW start.wShowWindow = SW_SHOWNORMAL rc = CreateProcessA(0&, NAMF, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, _ 0&, 0&, start, process) '' '' Насколько я понимаю, во время выполнения предыдущей функции открывается '' DOS-овское окно, поднимается COMMAND.COM, под управлением которого и '' выполняется DOS приложение. COMMAND.COM при этом является запущенным '' процессом и поэтому последующая функция ожидает завершения его работы '' даже в том случае, когда приложение NAMF завершилось. Закрывая ручками '' DOS-овское окно, я тем самым завершаю процесс. '' rc = WaitForSingleObject(process.hProcess, INFINITE) rc = CloseHandle(process.hProcess) End Sub '' Мне нужно закрыть DOS-овское окно по завершению работы приложения NAMF. '' '' В Windows это реализовано путем установки флажка 'Закрывать окно по '' завершении работы программы' во вкладке 'Программа' свойств любого DOS '' приложения, запускаемого ярлыком с рабочего стола
0
|
|
|
Ghost
|
|
| 07.12.2006, 05:07 | |
|
Ну так и запускай pif с установненным флажком. Я так в паскалЕ делал.
|
|
|
7 / 7 / 1
Регистрация: 06.12.2006
Сообщений: 329
|
|
| 07.12.2006, 06:17 [ТС] | |
|
Спасибо за совет. Этот метод мне известен. Хотелось бы получить более элегантное решение. Кроме того, во многопользовательском варианте (общая база данных) приходиться создавать pif файл на каждом рабочем месте, что не совсем удобно.
0
|
|
|
Ghost
|
|
| 07.12.2006, 08:46 | |
|
Я подозреваю, что нет более 'элегантного' решения. Дело в том, что проще (IMHO!) положить на один СЕТЕВОЙ диск пиф или включить его в комплект поставки, чем пытаться разбираться со свойствами окна, а затем его сканировать. Некоторое неудобство в виде пмфа с лихвой окупается использованием WaitForSingleObject - ибо эта штука не жрет время у процессора (жрет, на самом деле, но минимально)
|
|
|
7 / 7 / 1
Регистрация: 06.12.2006
Сообщений: 329
|
|
| 09.12.2006, 23:38 [ТС] | |
|
Благодарю за советы и за то, что уделили мне внимание! Последний совет хорош, но только в том случае, когда DOS-приложение на всех клиентских местах находиться по одному пути. У нас на предприятии исторически сложилось, что это приложение установлено по разным путям и внутренне привязано к ним. Переделывать же приложение я не имею возможности.
0
|
|
|
eslobod
|
|
| 10.12.2006, 00:45 | |
|
Опытным путем установлено, что если консольное приложение на экран ничего не выводит, то окно приложения будет закрыто вне зависимости от состояния флажка 'Закрывать окно по завершении работы программы'. Избавиться от вывода на экран можно, перенаправив stdout в файл (или в nul).
Пример1: (кнопка ПускВыполнить) %comspec% /cd:syspkzip.exe -a c:a.zip c:autoexec.bat Если флаг сброшен, окошко останется. Пример2: (кнопка ПускВыполнить) %comspec% /cd:syspkzip.exe -a c:a.zip c:autoexec.bat > c kzip.logОкошко закроется в любом случае. Примечание. Указанное справедливо только для тех программ, которые не прользуются stderr. Этот поток в файл не перенаправить. |
|
|
Ghost
|
|
| 11.12.2006, 04:39 | |
|
MuBoNi, сорри, не въехал. Нет возможности исправить пиф для каждой машины отдельно? Или нет возможности отредактировать exe-шник?
|
|
|
Ghost
|
|
| 11.12.2006, 04:40 | |
|
MuBoNi, сорри, не въехал. Нет возможности исправить пиф для каждой машины отдельно? Или нет возможности отредактировать exe-шник?
|
|
|
Ghost
|
|
| 11.12.2006, 04:40 | |
|
MuBoNi, сорри, не въехал. Нет возможности исправить пиф для каждой машины отдельно? Или нет возможности отредактировать exe-шник?
|
|
|
Ghost
|
|
| 11.12.2006, 04:40 | |
|
MuBoNi, сорри, не въехал. Нет возможности исправить пиф для каждой машины отдельно? Или нет возможности отредактировать exe-шник?
|
|
|
Ghost
|
|
| 11.12.2006, 04:41 | |
|
MuBoNi, сорри, не въехал. Нет возможности исправить пиф для каждой машины отдельно? Или нет возможности отредактировать exe-шник?
|
|
|
7 / 7 / 1
Регистрация: 06.12.2006
Сообщений: 329
|
|
| 11.12.2006, 05:21 [ТС] | |
|
Естественно, запускаемое DOS приложение.
0
|
|
|
Ghost
|
|
| 11.12.2006, 05:29 | |
|
Сорри за повтор - медленная передача данных - думал зависло. А запускается одно и то-же приложение?
|
|
|
7 / 7 / 1
Регистрация: 06.12.2006
Сообщений: 329
|
|
| 11.12.2006, 06:29 [ТС] | |
|
Да!
Вы желаете сказать, что достаточно прописать путь на него в PATH? Если да, то это - вполне приемлимое решение. Спасибо за наводку!
0
|
|
|
Ghost
|
|
| 11.12.2006, 06:44 | |
|
(В сторонку, тихо и про себя) - век живи, век учись - дураком помрешь.
Да, с path проще. Но я хотел предложить править пиф для каждого ящика |
|
|
7 / 7 / 1
Регистрация: 06.12.2006
Сообщений: 329
|
|
| 19.12.2006, 06:38 [ТС] | |
|
Нашел!
В процедуре, которая приведена выше, функция CreateProcessA должна сама запускать COMMAND.COM с ключом /C и командой NAMF. Тогда, по завершению DOS-приложения NAMF, завершает работу COMMAND.COM и срабатывает функция WaitForSingleObject. Таким образом, параметр lpCommandLine (2-й по счету) функции CreateProcessA должен иметь вид NAMF='Command.com /c ' & NamDos, где NamDos - запускаемое DOS-приложение
0
|
|
| 19.12.2006, 06:38 | |
|
Помогаю со студенческими работами здесь
18
Как закрыть окно стороннего приложения
закрыть окно DOS с помощью VB или rundll32 Отслеживание завершения работы DOS-приложения: WaitForSingleObject или GetExitCodeProcess?! Как после клика закрыть окно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|