Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Example | Скрываем чужую консоль

Ответить
Настройки темы
Разное - [решено] Example | Скрываем чужую консоль

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85


Конфигурация

Профиль | Отправить PM | Цитировать


Данная малюсенькая прога призвана решить проблему, описанную здесь. Действительно, иногда "болтающееся" черное окно консоли раздражает. Поэтому мы напишем хитрую "обертку" для конcольных приложений, которые запускают программу, но прячут её основное консольное окно.

Код: Выделить весь код
#include <process.h> 
#include <stdio.h> 
#include <windows.h> 
 
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR lpszCmd,int nCmd) 
{ 
    STARTUPINFO si; 
    PROCESS_INFORMATION pi; 
 
    /* create process with new console */ 
    memset(&si,0,sizeof(si)); 
    si.cb = sizeof(si); 
    si.dwFlags = STARTF_USESHOWWINDOW; 
    si.wShowWindow = SW_HIDE; 
    if( CreateProcess( NULL, lpszCmd, 
                       NULL, NULL, FALSE, CREATE_NEW_CONSOLE, 
                       NULL, NULL, &si, &pi ) ) 
    { 
        CloseHandle( pi.hProcess ); 
        CloseHandle( pi.hThread ); 
    } 
 
    /* terminate this */ 
    return 0; 
}
FAQ

Q. И как использовать?
A. Компилите. Кладёте результат (например hidec.exe) в c:\windows\system32. Вместо стандартного запуска "целевого" консольного приложения идёте в Пуск->Выполнить, набираете hidec.exe путь\имя_целевого_приложения. Консольное приложение будет запущено, но его окна Вы не увидите.

Q. Эй, а где оно? И как его теперь закрыть?
A. Посмотрите через Ctrl+Alt+Del. Снимать с выполнение - там же. Если "целевое" приложение умеет само закрываться после окончания своей работы, то оно так и сделает.

Q. А может, лучше _default.pif настроить, или ярлык с определёнными свойствами сделать?
A. Я никого не заставляю делать именно по-моему.

Q. Как компилить?
A. Я использую Visual C++ Toolkit. Компиляция:
cl hide_console.cpp /GA /O1 /link /defaultlib:advapi32.lib /defaultlib:user32.lib

Q. И что, я в своих консольных приложениях такое должен делать?
A. Нет. В "своём" консольном приложении используёте FreeConsole(), или пишите через WinMain, а не main(). Данная "обёртка" нужна для чужих приложений.

Q. А есть ли бинарник?
A. Есть. Тут пока лежит.

Q. Что это ты такой добрый? Вирус, наверное, хочешь впарить...
A. Просто интересы совпали. А потом,

Q. Можно использовать в моих программах куски текста?
A. Да, сделано специально для посетителей www.oszone.net

Q. У меня ещё вопросы...
A. Задавайте здесь, я отвечу.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 29-06-2004

 

Ветеран


Contributor


Сообщения: 21689
Благодарности: 6219

Профиль | Отправить PM | Цитировать


sNc-DAntES, для чего там вообще нужны «&&»?!

Цитата sNc-DAntES:
Что можно сделать, чтобы и окно консоли не мешало пользователю и выполнялись все команды? »
Использовать WSH вместо пакетного файла.

Отправлено: 23:00, 03-10-2015 | #51



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 228
Благодарности: 24

Профиль | Отправить PM | Цитировать


Цитата Iska:
sNc-DAntES, для чего там вообще нужны «&&»?! »
Чтобы команды выполнялись одна за другой.
Цитата Iska:
Использовать WSH вместо пакетного файла. »
К сожалению в программировании не разбираюсь.

Отправлено: 12:36, 04-10-2015 | #52


Ветеран


Contributor


Сообщения: 21689
Благодарности: 6219

Профиль | Отправить PM | Цитировать


Цитата sNc-DAntES:
Чтобы команды выполнялись одна за другой. »
Чтобы команды выполнялись одна за другой, достаточно разместить каждую из них в отдельной строке:
Код: Выделить весь код
7z a -ssw -mx9 -mmt=on -ms=on -y "d:\Install\!BackUp\Kodi_%date%.7z"       "%APPDATA%\Kodi\"
7z a -ssw -mx9 -mmt=on -ms=on -y "d:\Install\!BackUp\XBMC_Main_%date%.7z"  "d:\Xbmc 13.6\"
7z a -ssw -mx9 -mmt=on -ms=on -y "d:\Install\!BackUp\Bittorrent_%date%.7z" "%APPDATA%\BitTorrent\"
что вполне приемлемо при использовании пакетного файла.

Для совмещения нескольких команд в одной строке применяется один амперсанд «&», а использованный Вами «&&» используется для условного исполнения команд: последующая команда исполняется в том, и только в том случае, если предыдущая вернёт ненулевой код возврата.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:31, 04-10-2015 | #53


Старожил


Сообщения: 228
Благодарности: 24

Профиль | Отправить PM | Цитировать


Iska, да, большое спасибо. Значит это я тормоз и всё забыл. Теперь через
Код: Выделить весь код
hidec.exe Kodi_arc.cmd
Выполняются все три команды последовательно.

Отправлено: 23:38, 04-10-2015 | #54


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Скомпилируйте, пожалуйста, 64-битную версию.

Отправлено: 13:16, 11-10-2015 | #55


Аватара для wiznv

Старожил


Сообщения: 210
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата hasherfrog:
Данная малюсенькая прога призвана решить проблему, описанную здесь. »
большое спасибо! Давно искал решения для работы с robocopy! Супер!
А вы можете подсказать код который будет запускать тОлько robocopy.exe ? Подобная программа потенциально опасна т.к. может скрыть работу какой либо вредоносной программы, и поэтому хотелось бы адаптировать ее под определенную программу ( robocopy.exe - стандартная программа в windows 7, лежит в папке system32 ) т.е. ограничить..

Отправлено: 08:12, 28-12-2015 | #56


Ветеран


Contributor


Сообщения: 21689
Благодарности: 6219

Профиль | Отправить PM | Цитировать


wiznv, к сожалению, коллега hasherfrog три года, как не появлялся на форуме. Напишите ему письмо на почту (ссылка доступна из его профиля).

Отправлено: 11:33, 28-12-2015 | #57


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ничего не поняла. Нужно скрыто запустить батник, чтобы он не отображался в панели задач – только и всего. А здесь ничего не понятно ВООБЩЕ!!!

В архиве имеется папка Release, в ней файл hidec.exe и отдельно лежит hidec.exe

И куда всё это девать? Класть в System32?

Пошагово бы объяснили, что и как делать

Последний раз редактировалось bannikova.elena.60, 15-04-2018 в 09:40.


Отправлено: 09:31, 15-04-2018 | #58



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Example | Скрываем чужую консоль

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Консоль Windows Sweet_Lady Хочу все знать 13 27-03-2009 21:28
Прочее - [решено] last login..(консоль) slaine Общий по Linux 2 24-11-2008 18:21
[решено] консоль ММС и удаленное управление nedrug Microsoft Windows 2000/XP 6 20-03-2007 16:21
[решено] Консоль с добиванием табом как в Linux? andrey_tor Microsoft Windows 2000/XP 5 23-02-2006 12:32
Delphi - Delphi: как закрыть чужую прогу pvr30 Программирование и базы данных 13 06-08-2003 19:15




 
Переход