Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа программы в качестве сервера, как пережить logoff - logon ??? 
:(
    Опции темы
AntonChik
Дата 7.3.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



Извините,пожалуйста. Сделал ошибку в названии темы и не знаю как исправить или удалить тему...
Тема называется Работа программы в качестве сервиса...


Здравствуйте.
Существует программка SrvAny.exe, позволяющая запускать произвольную программу в качестве сервиса (...)
Таким образом я и запускаю свой сервер, написанный на билдере.
Дело в том, что после того как я делаю logoff ,а затем logon моя программа выпадает,то бишь она закрывается еще при логофе, в то время как процесс SrvAny.exe так и сидит в оперативе ,а вСервисах пишется что все нормально. Если сделать сервису Restart все будет ок, но это не выход...
И здесь не косяк в SrvAny.exe (до какой-то степени), потому как предыдущий сервер, написанный(не мной) на чистом API работает по этой схеме весьма замечательно (то бишь переживает logoff-logon)...
Копался я в его коде и единственное за что смог уцепиться это наверно вот за это

Код

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
//...
    case WM_DESTROY:
            TrayMessage(hWnd,
                NIM_DELETE,
                0,
                LoadIcon(g_hInst,(LPCTSTR)IDI_SMALL_MAIN_ICON),
                g_szTitle);
            KillTimer(hWnd,g_iWriteTimer);
            CloseHandle(hThread);
            CloseThermometer();
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}


какую роль здесь играет PostQuitMessage(0); ???
пробовал засунуть себе в OnDestroy, но что-то не помогло...
Может и не в этом дело... Как быть?

p.s.

если отлавливать WM_QUERYENDSESSION и WM_ENDSESSION и писать на них типа
ShowMessage(" поймал wm_queryend_session"); (1)
ShowMessage(" поймал wm_end_session"); (2)
и при логофе не жать "ОК" на (1) , то при логоне прога все еще висит в процессах и работает, но висит и это сообщение.если его кликнуть то вылетает (2),если кликнуть и его,то прога закрывается,чего уже не надо...
То есть прога пережила logoff и logon , но теперь работает до клика на эти showmessage...
Может можно как-то все это решить???...

Не спрашивайте почему не пишу свой сервер как сервис...
Во-первых ниразу раньше не писал...
Во-вторых будет ли он прекрасно работать под NT?
В-третьих, хотелось бы разобраться, ведь API-шный вариант сервера работает по описанной схеме...

Это сообщение отредактировал(а) AntonChik - 7.3.2006, 08:31
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
_hunter
Дата 7.3.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



описанное поведение ( завершение приложения при завершении сеанса ) вполне адекватно для простого приложения.
зачем ты уцепился за приведенный код -- абсолютно не ясно.
сервис только под NT и будет работать...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
AntonChik
Дата 9.3.2006, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



дело в том, что предыдущая версия сервера, написанная на чистом API, тоже представляет собой простое приложение (не сервис) и умудряется по данной схеме пережить logoff - logon ...
как это ему удается?
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
_hunter
Дата 9.3.2006, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



хз. смотри код.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
AntonChik
Дата 10.3.2006, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



в том то и дело что в коде не так уж и много мест, способных ответить за данное поведение...
хотел бы выложить весь код, но на данном форуме пока что не нашел прямого способа это сделать...
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.3009 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.