Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизПрограмма не дает выключиться Windows Найти похожие ветки
← →
Коля (2006-11-09 18:04) [0]После того как в событии FormCloseQuery поставил application.terminate; - программа закрывается, но Windows перестает выключаться.
Программа имеет иконку в трее, отлавливает сообщение SC_MINIMIZE и уходит в трею, может быть дело в этом? Так же на момент выключения ServerSocket слушает порт.
procedure TChatForm.WMSysCommand;
begin
if (Msg.CmdType = SC_MINIMIZE) then
ChatForm.visible:=false
else
inherited;
end;
Как с этим бороться?
← →
Rouse_ © (2006-11-09 18:06) [1]ServerSocket не от NetMasters случаем? Если нет, то в оконной процедуре иконки DefWindowProc вызывается?
← →
Коля (2006-11-09 18:11) [2]ServerSocket стандартный
DefWindowProc нет, иконку убираю так:try
with tray do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := ChatForm.Handle;
uID := 1;
end;
Shell_NotifyIcon(NIM_DELETE, Addr(tray));
finally
Application.Terminate;
end;
← →
Коля (2006-11-09 18:14) [3]А если убрать application.terminate из FormCloseQuery то дело на нем и повисает, FormClose FormDestroy не происходят
← →
Ketmar © (2006-11-09 18:50) [4]"имеет иконку в трэе". убери её. или возьми нормальный компонент. %-)
← →
Anatoly Podgoretsky © (2006-11-09 18:58) [5]от NetMasters тоже стандартный
← →
Ketmar © (2006-11-09 19:04) [6]таки ищи гадину, которая глотает запрос на окончание сессии.
← →
Коля (2006-11-09 19:19) [7]> таки ищи гадину, которая глотает запрос на окончание сессии.
А разьве если запрос и был проглочен, но программа завершилась, выключение винды все равно прерывается?
Есть 2 вопроса:
Как вручную обработать этот запрос?
Во первых как дебагить такую ситуацию?
← →
Ketmar © (2006-11-09 19:53) [8]>[7] Коля 9-Nov-2006, 19:19
>А разьве если запрос и был проглочен, но программа
>завершилась, выключение винды все равно прерывается?
не обязательно. см. справку по WM_QUERYENDSESSION.
>Есть 2 вопроса:
>Как вручную обработать этот запрос?
поймать сообщение (см. выше) -- желательно в application -- и ответить.
>Во первых как дебагить такую ситуацию?
WinSpy/WinSpector/... и смотреть, что, кому, куда и когда приходит, а также что на это отвечают.
← →
Коля (2006-11-09 19:53) [9]Да уж.......
Выявил проблему после того как весь (весь !!!!!!) код программы стоял в фигурных скобках и когда я начял удалять с формы компоненты. Эх люблю я Делфи...
А виноваты именно NetMasters. Стоит их NMFtp который и глотает сообщение.
Причем он выключен, и программа к нему не обращается.
Как лечиться?
(Delphi 6 sp2)
← →
Ketmar © (2006-11-09 20:12) [10]>[9] Коля 9-Nov-2006, 19:53
>А виноваты именно NetMasters.
это известный их баг.
>Как лечиться?
путём выкидывания NM в топку и перехода на Indy/ICS/Synapse/WinSock API/etc/etc/etc.
← →
Коля (2006-11-09 20:46) [11]
> путём выкидывания NM в топку и перехода на Indy/ICS/Synapse/WinSock
> API/etc/etc/etc.
Слишком я ленив чтобы все переписывать... Но на будующее учту.
А если, не дай бог, кто нибудь еще столкнется с этой гадостью, то лечится путем добавления строчкиNMFTP1.Destroy;
в FormCloseQuery
← →
Anatoly Podgoretsky © (2006-11-09 20:54) [12]> Коля (09.11.2006 20:46:11) [11]
Ты еще ленив и справку прочитать про Destroy
← →
Rouse_ © (2006-11-10 09:17) [13]
> DefWindowProc нет
ну тогда вот тебе и ответ - нужно ее вызывать. И есественно еще и NMFtp выкинуть.
← →
RWolf © (2006-11-10 09:34) [14]>[11]
Это лечится установкой Powersock последней версии. Сам недавно столкнулся с этой проблемой.
← →
MetalFan © (2006-11-10 11:14) [15]>[14]
кстати и indy лучше тоже иметь последней версии)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c