Показать полную графическую версию : Example | Скрываем чужую консоль
Добавлю новым постом. В общем, говорить о том, что совсем не работает[Commands]
"hidec.exe batch.cmd"некорректно. Оно работает, но консольные окна не скрываются. У меня было два батника, оба отработали, но и оба окна я видел.
hasherfrog
11-07-2005, 09:09
Vadikan
Я повторю. Предположим, есть batch.cmd, в котором происходит вызов пяти cmd.exe. Каждый из них будет открывать консоль самостоятельно. Итого - пять штук. Применённый как такому batch.cmd одноразовый hidec (i.e. hidec batch.cmd) скроет только окно консоли самого batch.cmd, на cmd.exe внутри он не подействует, потому что и не должен. Он обрубает только показ окна процесса-сына. Внуки вольны поступать, как им заблагорассудится. Более того, если бы, предположим, cmd.exe открывал два окна, скрывалось бы только первое. Поэтому я и настаиваю на использовании hidec внутри batch.cmd, попытка "обернуть" серию консольных приложений не пройдёт никогда.
В примере, вызов hidec batch.cmd:
file1.exe
fil2.cmd
file3.bat
ничего не даст, но вызов batch.cmd
hidec file1.exe
hidec fil2.cmd
hidec file3.bat
именно то, что нужно.
Надеюсь, объяснил.
hasherfrog
Но в таком случае окно batch.cmd будет висеть все время выполнения внутренних команд...
hasherfrog
11-07-2005, 09:28
Savant
Ну да. Поэтому для "полной заглушки" нужно ещё и hidec batch.cmd. Более того, в большинстве стандартных случаев (например, при выполнении батника с системными командами типа cls, dir и т.д.; а также при выполнении консольных приложений, которые довольствуются родительской консолью, а не открывают свою) достаточно одного вызова hidec'а, на собственно batch.cmd. Но в случае с cmdlines.txt очевидно, что процесс, отвечающий за отработку команд оттуда (из cmdlines.txt) вынимает команды по очереди и каждое очередное приложение не имеет родительской консоли, потому что консоль предыдущего приложения из очереди закрылось всесте с самим приложением.
Наверное, так. Чего-то я уже запутываюсь.
Но в таком случае окно batch.cmd будет висеть все время выполнения внутренних команд...Именно! В этом все и дело.
hasherfrog
Я понимаю как пользоваться утилитой, и как вызывать при ее помощи пакетные файлы абсолютно незаметно. Я ж говорю, я протестировал и GuiRunOnce (исполняется из соотв. ключа реестра при первом входе в систему) и RunOnceEx (примерно тоже самое). В обоих случаях все работает, вызывается hidec batch.cmd и все ок.
Но в cmdlines.txt другой синтаксис. Команды перечисленные там передаются командному интерпретатору. Как передаются - хрен его знает. DOS команды там не работают, но виндовские приложения - да (REGEDIT и т.д). Но консольные окна hidec'ом не скрываются. Когда я говорю, что оин "мигают", я имею в виду, что у меня в самом батнике еще cmdow @ /HID со старых времен прописано, чтоб консольное окно не висело.
В общем, я знаю, что у тебя много работы. Утилита же не задумывалась для cmdlines.txt. Будет время - что-нибудь придумаешь. Не будет - и так нормально.
Вопрос мне в PM пришел
I like to integrate this great utility into a application build with Uniface, a 4GL toolbox. Therefor I need a dll-version of this program. I that possible? I'm not really into c++ and compiling stuff. Perhaps you can tell me how I can compile a dll-version
Possible. =)
И даже проще, чем обычный вариант. Не надо командную строку разбирать ;) Правда код придется новый катать. Предлагаю такой прототип:
// Возвращает 0, если все ОК и не-0, если ошибка
int RunHiddenConsole(char* lpszCmdLine, BOOL bWait);
Добавлено:
В принципе все готово, но еще не проверял. А мне утром доверять нельзя ;]
Млин, во вложении почему-то оказался hidec[1].dll - на самом дело это зип-архив. Не верьте расширению!
Updated!
Добавил тестовое приложение. Кое-что подправил.
Ух ну а все таки, где взять последнюю версию бинарника
и каков его синтаксис?
На первой странице, либо здесь (http://forum.oszone.net/attachment.php?attachmentid=778)
Savant
А синтпксис каков, ибо я так понел сам код притерпел модификации и хотелось бы уточнить синтаксис командной строки
SergeCpp
22-12-2005, 12:37
Друзья!
А если использовать
CreateWindowStation
SetProcessWindowStation
то пусть они все свои окна и открывают...
но в другой Station...
её же не видно...
MSDN, короче...
Когда мне нужно было скрыть консоль - я делал ShowWindow(..., SW_HIDE);
Вроде игры с настройками ярлыков помогали.
Что-то ссылка на hidec.exe ( http://hasherfrog.narod.ru/RunHiddenConsole.exe ) битая.
domo22, см. Скрытие консольных окон (http://oszone.net/6156)
domo22, Ещё вариант - Как скрыть окно в котором выполняется пакетный файл (*.bat или *.cmd)? (http://www.forum.oszone.net/thread-42879.html)
korsar77
04-08-2009, 13:21
Drongo, Прчел много и перепробовал на тему Как скрыть окно в котором выполняется пакетный файл (*.bat или *.cmd)? Ответа не нашел .Подскажите: без помощи дополнительных программ не реально запустить start.cmd для форматирования диска без окна консоли?@ ECHO OFF format M: /FS:FAT32 /Y cmdow @ / HID del start.cmd
перепробовал на тему Как скрыть окно в котором выполняется пакетный файл (*.bat или *.cmd)? Ответа не нашел »Ну как же? Скачиваете Bat To Exe Converter (http://www.f2ko.de/English/b2e/index.php) устанавливаете настройки создания в соответствии с комментарием 29 (http://www.forum.oszone.net/post-1117499-29.html). Устанавливаем переключатель в положение Invisible application и всё, создаём исполнимый файл, но в этом случае не должно быть команд на паузы или запросов с взаимодействием с пользователем (окно ведь будет скрыто)
http://s42.radikal.ru/i095/0908/ab/e4703d46925e.png
А так же тема - [решено] Как скрыть консольное окно? (http://www.forum.oszone.net/thread-131397.html) -> Скрытие консольных окон (http://oszone.net/6156)
korsar77
04-08-2009, 14:36
Drongo, Большо спасибо!!! Все получилось.Каюсь виной всему моя невнимательность
korsar77
04-08-2009, 18:30
Drongo, Не пойму в чем дело сейчас попробывал- опять выскакивает окно .Может что нета пишу
korsar77, Ваш скрипт вроде бы взаимодействует с пользователем, просит нажать на клавишу "Y". Приведите ваш скрипт целиком.
И главное. Не пойму в чем дело сейчас попробывал- опять выскакивает окно .Может что нета пишу »Я не знаю, что вы пишите и делаете, вы этого нам не говорите. :) Может что-то не то. Подробно опишите последовательность ваших действий.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC