PDA

Показать полную графическую версию : Example | Скрываем чужую консоль


Страниц : 1 [2] 3

Vadikan
11-07-2005, 08:05
Добавлю новым постом. В общем, говорить о том, что совсем не работает[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
именно то, что нужно.

Надеюсь, объяснил.

Savant
11-07-2005, 09:12
hasherfrog
Но в таком случае окно batch.cmd будет висеть все время выполнения внутренних команд...

hasherfrog
11-07-2005, 09:28
Savant
Ну да. Поэтому для "полной заглушки" нужно ещё и hidec batch.cmd. Более того, в большинстве стандартных случаев (например, при выполнении батника с системными командами типа cls, dir и т.д.; а также при выполнении консольных приложений, которые довольствуются родительской консолью, а не открывают свою) достаточно одного вызова hidec'а, на собственно batch.cmd. Но в случае с cmdlines.txt очевидно, что процесс, отвечающий за отработку команд оттуда (из cmdlines.txt) вынимает команды по очереди и каждое очередное приложение не имеет родительской консоли, потому что консоль предыдущего приложения из очереди закрылось всесте с самим приложением.

Наверное, так. Чего-то я уже запутываюсь.

Vadikan
11-07-2005, 09:30
Но в таком случае окно batch.cmd будет висеть все время выполнения внутренних команд...Именно! В этом все и дело.

hasherfrog
Я понимаю как пользоваться утилитой, и как вызывать при ее помощи пакетные файлы абсолютно незаметно. Я ж говорю, я протестировал и GuiRunOnce (исполняется из соотв. ключа реестра при первом входе в систему) и RunOnceEx (примерно тоже самое). В обоих случаях все работает, вызывается hidec batch.cmd и все ок.

Но в cmdlines.txt другой синтаксис. Команды перечисленные там передаются командному интерпретатору. Как передаются - хрен его знает. DOS команды там не работают, но виндовские приложения - да (REGEDIT и т.д). Но консольные окна hidec'ом не скрываются. Когда я говорю, что оин "мигают", я имею в виду, что у меня в самом батнике еще cmdow @ /HID со старых времен прописано, чтоб консольное окно не висело.

В общем, я знаю, что у тебя много работы. Утилита же не задумывалась для cmdlines.txt. Будет время - что-нибудь придумаешь. Не будет - и так нормально.

Vadikan
18-07-2005, 21:51
Вопрос мне в 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

Savant
18-07-2005, 22:03
Possible. =)
И даже проще, чем обычный вариант. Не надо командную строку разбирать ;) Правда код придется новый катать. Предлагаю такой прототип:

// Возвращает 0, если все ОК и не-0, если ошибка
int RunHiddenConsole(char* lpszCmdLine, BOOL bWait);


Добавлено:
В принципе все готово, но еще не проверял. А мне утром доверять нельзя ;]

Млин, во вложении почему-то оказался hidec[1].dll - на самом дело это зип-архив. Не верьте расширению!

Updated!
Добавил тестовое приложение. Кое-что подправил.

SyCraft
20-12-2005, 10:51
Ух ну а все таки, где взять последнюю версию бинарника
и каков его синтаксис?

Savant
20-12-2005, 18:47
На первой странице, либо здесь (http://forum.oszone.net/attachment.php?attachmentid=778)

SyCraft
22-12-2005, 09:39
Savant
А синтпксис каков, ибо я так понел сам код притерпел модификации и хотелось бы уточнить синтаксис командной строки

SergeCpp
22-12-2005, 12:37
Друзья!

А если использовать

CreateWindowStation
SetProcessWindowStation

то пусть они все свои окна и открывают...

но в другой Station...

её же не видно...

MSDN, короче...

pva
22-12-2005, 13:25
Когда мне нужно было скрыть консоль - я делал ShowWindow(..., SW_HIDE);
Вроде игры с настройками ярлыков помогали.

domo22
13-06-2009, 11:34
Что-то ссылка на hidec.exe ( http://hasherfrog.narod.ru/RunHiddenConsole.exe ) битая.

Vadikan
13-06-2009, 23:16
domo22, см. Скрытие консольных окон (http://oszone.net/6156)

Drongo
13-06-2009, 23:33
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

Drongo
04-08-2009, 14:20
перепробовал на тему Как скрыть окно в котором выполняется пакетный файл (*.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, Не пойму в чем дело сейчас попробывал- опять выскакивает окно .Может что нета пишу

Drongo
04-08-2009, 20:14
korsar77, Ваш скрипт вроде бы взаимодействует с пользователем, просит нажать на клавишу "Y". Приведите ваш скрипт целиком.
И главное. Не пойму в чем дело сейчас попробывал- опять выскакивает окно .Может что нета пишу »Я не знаю, что вы пишите и делаете, вы этого нам не говорите. :) Может что-то не то. Подробно опишите последовательность ваших действий.




© OSzone.net 2001-2012