Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

без оконное приложение (VC)

526
18 марта 2002 года
advisor
44 / / 20.03.2000
приложение которое не требует вывода на экран чего-либо. нужно брать за основу консульное приложение или Win32? (main or WinMain) (может изредка если МессаджВох или через GDI на экране чего-либо написать/нарисовать)

нужно ли обрабатывать сообщения?
while(GetMessage(&msg, NULL, 0x00, 0x00))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
иначе винда рисует часики будто приложение не отвечает!
380
18 марта 2002 года
Arestov
285 / / 20.09.2000
Создай окно, но не делай ему ShowWindow, т.е. не показывай его на экран.
Но оно может обрабатывать сообщения, скажем от TrayIcon или обеспечивать асинхронные сокеты.
526
18 марта 2002 года
advisor
44 / / 20.03.2000
а без окна можно?
380
19 марта 2002 года
Arestov
285 / / 20.09.2000
А смысл?

Тебе что-ли служба NT нужна? Так там не в окнах дело.

А если червь, то окно может понадобиться для асинхронных сокетов.

Да спрячь его нафиг и все дела!

449
20 марта 2002 года
Fantasist
124 / / 20.06.2000
Цитата:

On 2002-03-17 2343, advisor wrote
приложение которое не требует вывода на экран чего-либо. нужно брать за основу консульное приложение или Win32? (main or WinMain) (может изредка если МессаджВох или через GDI на экране чего-либо написать/нарисовать)

нужно ли обрабатывать сообщения?
while(GetMessage(&msg, NULL, 0x00, 0x00))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
иначе винда рисует часики будто приложение не отвечает!



Консольное приложение создает консольное окно, а оно тебе не нужно. Далее, сообщения, конечно, обробатывать надо, как минимум для того, чтобы среагировать на WM_QUIT, но зачем тебе делать DispatchMessage да еще и TranslateMessage, если у тебя ни одного окна нет! Создавай не консольно Win32. Окна создавать не обязательно. Хотя я, конечно, незнаю, что твое приложение еще должно делать кроме того, что ничего не выводить.

526
21 марта 2002 года
advisor
44 / / 20.03.2000
пишу программу клиент для локальной сети.
её задача получать комманды с сервера и выполнять их.

видел тему в FAQ как написть не убиваемое приложение в 9х: нужно отлавливать сообщение WM_DESTROY (кажется) и запускать вторую копию программы а эту завершать. хотелось бы это реализовать без окна!

как я понял нужно сделать Thread в нём получать и обрабатывать сообщения с сервера а в теле WinMain while(GetMessage(...)){/*пусто*/}
правильно?
449
22 марта 2002 года
Fantasist
124 / / 20.06.2000
Цитата:

On 2002-03-20 2353, advisor wrote
пишу программу клиент для локальной сети.
её задача получать комманды с сервера и выполнять их.

видел тему в FAQ как написть не убиваемое приложение в 9х нужно отлавливать сообщение WM_DESTROY (кажется) и запускать вторую копию программы а эту завершать.



Это если есть окно. Без окна, надо ловить сообщение WM_CLOSE.

Цитата:

как я понял нужно сделать Thread в нём получать и обрабатывать сообщения с сервера а в теле WinMain while(GetMessage(...)){/*пусто*/}
правильно?



На самом деле, сама система не постит WM_QUIT. Его постит сам поток с помощью PostQuitMessage. Так что коль у тебя нет окна, то для корректного завершения, тебе надо ловить WM_CLOSE.

409
22 марта 2002 года
Ramzes
163 / / 20.09.2000
А есть еще один интересный хандл: HWND_DESKTOP. Можно с ним помутить.
526
22 марта 2002 года
advisor
44 / / 20.03.2000
делаю так:
WinMain(...)
{
//после здесь будет CreateThread();
while(GetMessage(...))
{
MessageBeep(-1); //сюда даже не заходит!!!
//или MessageBox(...);
}
return 0;
}
449
23 марта 2002 года
Fantasist
124 / / 20.06.2000
Естессвенно. Месаджей то нету. Попробуй закрыть свою программу по Ctrl+Alt+Del, или запостить в нее сообщение через PostThreadMessage.
526
23 марта 2002 года
advisor
44 / / 20.03.2000
в том-то и дело что на Ctrl+Alt+Del мессаджей нету!
449
25 марта 2002 года
Fantasist
124 / / 20.06.2000
Ага, понятно. Значит очередь сообщений сама не создается. Ладно, сейчас разберемся.
526
25 марта 2002 года
advisor
44 / / 20.03.2000
449
26 марта 2002 года
Fantasist
124 / / 20.06.2000
А! Я был прав! Это windows не прав как всегда. По Ctrl+Alt+Del он пытается вызвать WindowsProc главного окна, которого нет. Если запостить сообщение при помощи (как я думал он делает в этом случае) PostThreadMessage, то ты его получишь(сообщение).
Вывод: WM_CLOSE без окна не поймаешь, так что и корректно завершиться тоже не удастся(если тебе это нужно). Можно, конечно спрятать процесс, чтобы его так не закрывали, и надеется, что сообщение о завершении сессии он все-таки постит with PostThreadMessage. А можно просто создать невидимое окно.
526
26 марта 2002 года
advisor
44 / / 20.03.2000
Спасибо!
Скрою процесс.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог