Последние темы Поиск
Общие форумы
Специализированные форумы
ПроцессорыРазгон и охлаждениеСистемные платыМодули памятиВидеосистемаTV- и FM-тюнеры, видеовход, видеовыходЦифровое видео: захват, монтаж, обработкаМониторы и другие устройства отображенияЦифровое фотоБеспилотные летательные аппаратыЦифровой звукProAudio: Профессиональное звуковое оборудованиеСтереосистемыДомашний кинотеатр: проигрыватели и источники сигналаДомашний кинотеатр: аудиосистемаДомашний кинотеатр: ТV и проекторыМагнитные и SSD накопителиОптические носители информацииСетевые носители информацииПериферияКорпуса, блоки питания, UPSСети, сетевые технологии, подключение к интернетуСистемное администрирование, безопасностьСерверыНоутбуки, нетбуки и ультрабукиПланшеты и электронные книгиМобильные телефоны, смартфоны, кпк, коммуникаторыМобильные гаджетыОператоры и технологии мобильной связиТелефония, телекоммуникации, офисные АТСБытовая техника
Программы
Игры
Авторские форумы
Прочие форумы
Форумы поддержки портала iXBT.com
Архивы конференции
Архив "О Конференции"Архив "Процессоры"Архив "Разгон и охлаждение"Архив "Системные платы"Архив "Модули памяти"Архив "Видеосистема"Архив "Видеозахват"Архив "Мониторы и другие устройства отображения"Архив "Цифровое изображение"Архив "Цифровой звук"Архив "Периферия"Архив "Корпуса, блоки питания, UPS"Архив "Коммуникации: сети и сетевые технологии"Домашний интернет, модемы (архив)Архив "Системное администрирование, безопасность"Архив "Мобильная связь"Программы Microsoft: Windows, Office, Server, Windows LiveАрхив "OС и системное ПО"Архив "Программы: Интернет"Архив "Программирование"Форум прикладных программистовАрхив "Электронные устройства и компоненты"Архив "Околокомпьютерный Флейм & Общий"Архив "Полемика (Злобный Флейм)"Околоавтомобильный ФлеймФорум ремонтниковВопросы компании IntelФотокамеры SamsungФорум о магазине приложений RuStoreФорум по продукции компании Huawei
Справка и сервисы
Другие проекты iXBT.com
Domnitch: vbscript: как скрыть окно процесса, зная его ProcessID ?
Domnitch
Member
Автор темы
80/20119 ответов
25 лет на iXBT, с февраля 2000
Чаще пишет в "Политика" (46%)
Россия, С.-Петербург
Инфо Ответить
D
Domnitch Member Автор темы
9 лет назад / 06 декабря 2015 16:29
У меня задача - запустить некое консольное приложение, работающее несколько минут, и перехватить его вывод.
Примерно так:

01Dim WshShell, oExec, cmd
02' Some command string - does not matter
03cmd = "find " + CHR(34) + "qwerty" + CHR(34) + " c:\windows\system32\x*.*"
04  
05Set WshShell = CreateObject("WScript.Shell")
06Set oExec = WshShell.Exec(cmd)
07  
08Do While oExec.Status = 0
09     WScript.Sleep 100
10Loop
11  
12WScript.Echo oExec.ExitCode
13WSCript.echo oExec.StdOut.ReadAll
14WSCript.echo oExec.StdErr.ReadAll
Проблема в том, что при этом открывается консольное окно, которое мне совершенно не нужно.
Легко получить oExec.ProcessID, но как средствами VBS найти соответствующее окно и скрыть его?

Заранее благодарен за помощь.
Moriturus
unregistered
Ответить
M
Moriturus unregistered
9 лет назад / 07 декабря 2015 12:39
Domnitch
Возможно логичнее искать файл средствами самого vbcript, например так.
Domnitch
Member
Автор темы
81/20125 ответов
25 лет на iXBT, с февраля 2000
Чаще пишет в "Политика" (46%)
Россия, С.-Петербург
Инфо Ответить
D
Domnitch Member Автор темы
9 лет назад / 07 декабря 2015 13:31
Moriturus
Командная строка наверху - лишь простейший пример консольного приложения, которое работает несколько минут и пишет свой вывод в stdout, stderr.
Не в ней дело, а в том, что надо бы одновременно и перехватить стандартный вывод (это умеет Exec, но не умеет Run), и скрыть консольное окно во время работы (это наоборот умеет Run, но не умеет Exec)...
Moriturus
unregistered
Ответить
M
Moriturus unregistered
9 лет назад / 07 декабря 2015 14:00
Подход запуска скрипта из скрипта кажется странным, но проблема скрытия окна командной строки широко известна, вам наверное проще гуглить её, хотя решений без сторонних средств вроде nircmd (nircmd win min process /pid) по-моему нет.
bislomet
Member
572/868 ответов
17 лет на iXBT, с ноября 2007
4 фото на iXBT.photo
Чаще пишет в "Программирование" (66%)
Германия, мой адрес - не дом и не улица...
Инфо Ответить
b
bislomet Member
9 лет назад / 07 декабря 2015 18:00
Domnitch
а приложение консольное обязательно на VBScript?
а то "нормаальные" языки, типа C++/C#/..., вполне умеют перехватывать консольные окна как угодно.
Кстати, тут утверждается, что именно Exec не создает второе консольное окно...
Domnitch
Member
Автор темы
82/20130 ответов
25 лет на iXBT, с февраля 2000
Чаще пишет в "Политика" (46%)
Россия, С.-Петербург
Инфо Ответить
D
Domnitch Member Автор темы
9 лет назад / 07 декабря 2015 19:06
bislomet
а приложение консольное обязательно на VBScript?

В том смысле, что приложение запускается из VBScript ?
Не то, чтобы это было совсем обязательно, но весьма желательно - потому что скрипт уже написан и работает, только без перехвата вывода. Он - часть довольно большого проекта.

а то "нормаальные" языки, типа C++/C#/..., вполне умеют перехватывать консольные окна как угодно

Не могу воспользоваться, к сожалению... да и в С++ перехват stdout не так прост.

Кстати, тут утверждается, что именно Exec не создает второе консольное окно...

Уже читал, знаю...
Если оно делается через cscript, может быть так и есть, а через wscript открывается черное окно и висит до окончания работы приложения.
bislomet
Member
573/869 ответов
17 лет на iXBT, с ноября 2007
4 фото на iXBT.photo
Чаще пишет в "Программирование" (66%)
Германия, мой адрес - не дом и не улица...
Инфо Ответить
b
bislomet Member
9 лет назад / 08 декабря 2015 08:52
Domnitch
Уже читал, знаю...
Если оно делается через cscript, может быть так и есть, а через wscript открывается черное окно и висит до окончания работы приложения.

а если запускать Run-ом с переназначением вывода?

Исправлено: bislomet, 08.12.2015 09:10

Konstantin Mironovich
Expert
4570/25423 ответов
25 лет на iXBT, с ноября 1999
Чаще пишет в "Политика" (35%)
Инфо Ответить
K
Konstantin Mironovich Expert
9 лет назад / 08 декабря 2015 09:04
Domnitch
У меня задача - запустить некое консольное приложение
а нельзя его переписать как GUI без создания окна?

Добавление от 08.12.2015 09:07:

bislomet
а если запускать Run-ом с перемазачением вывода?
попробуйте запустить в окне run такое: cmd /c dir > t.txt
увидите как мелькнет окно.
автор с этим мельканием и борется.
bislomet
Member
574/871 ответов
17 лет на iXBT, с ноября 2007
4 фото на iXBT.photo
Чаще пишет в "Программирование" (66%)
Германия, мой адрес - не дом и не улица...
Инфо Ответить
b
bislomet Member
9 лет назад / 08 декабря 2015 09:15
Konstantin Mironovich
автор с этим мельканием и борется.
КМК, автор борется с:

Domnitch
а через wscript открывается черное окно и висит до окончания работы приложения.

или???
Domnitch
Member
Автор темы
83/20134 ответов
25 лет на iXBT, с февраля 2000
Чаще пишет в "Политика" (46%)
Россия, С.-Петербург
Инфо Ответить
D
Domnitch Member Автор темы
9 лет назад / 08 декабря 2015 12:15
Konstantin Mironovich
а нельзя его переписать как GUI без создания окна?

Если бы можно было переписать приложение, то и скрипты не понадобились бы...
Это приложение - микрософтовская утилита DISM, мне надо во время инсталляции нашего продукта включить нужные для него фичи Windows.

bislomet
а если запускать Run-ом с переназначением вывода?

Ну да, можно прибегнуть к варварскому способу - смастерить во временном каталоге командный файл из одной строки, в этой строке перенаправить вывод в файл, запустить через Run с параметром "скрыть окно", потом читать файл результата. Я уже так делал, это работает. Но уж больно грубо и громоздко.
Ваш ответ:

Нет значка Нет значка Вот тут! Лампочка Восклицание Вопрос Класс! Улыбка Злость Огорчение Поговорим? Краснею Подмигивание Ругаю ОдобряюBIUdelSxsupxsuboffsp spoilerqurlimgvideo• list1. list1 codeprecenter-hr-rusQWE→ЙЦУ
файлыочистить
Ваше имя: Авторизуйтесь Предпросмотр В полную форму
вставить выделенную цитату в окно ответа
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Последние обсуждения в Конференции
00:30Пятая колонна в Российской Федерации и методы борьбы с ней. Политика
00:29Всё о мрачных перспективах Конференции: естественная смерть форумов, старение аудитории, отток посетителей, расцвет флуда, уход профессионалов на другие ресурсы О Конфе
00:29Ремонт LED лампы под цоколь E27 Эл. устройства
00:29Выбор пылесоса Бытовая техника
00:28Видео\аудио записи наших сетапов и все, с этим связанное Стерео
00:28Выбор SSD Накопители
00:24NAS своими руками НАС
00:24CPU-флудилка Клуб Intel
00:13Обсуждение аниме (японские мультфильмы, anime) Кино
00:09Как и почему пришли к идее, что нельзя превысить скорость света? Наука
00:06Вопрос читающим фантастику. Нужно установить автора (+) Культура
00:03Иммиграция. Как выжить за рубежом? Общий
00:02Выбираем бренди и коньяк. Культура употребления. Кулинария
00:02Апрель. Хрустики повыползали на дороги. Осторожно! Мотоциклы. Мототема. Авто
23:59Выбор мобильной рабочей станции: неттоп, мини-ПК Ноутбуки
23:58Обсуждение посредника Полярный Экспресс (Polar Express) Рынок
23:56Заземление: теория и практика Ремонт
23:54Посоветуйте планшет Планшеты
23:52Blu-ray проигрыватели Pioneer (BDP-140, BDP-150), BDP-440 и BDP-LX55. ДК плееры
23:52APC SU2200INET - автомобильные аккумуляторы и доп. охлаждение Корпуса, БП