Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

System Tray иконки   Найти похожие ветки 

 
Pavlik Morozov   (2002-05-26 13:44) [0]

Hi people!

Проблема вот в чем:

У меня есть WinNT Service Application, которое при запуске регистрирует иконку в систем трее. Только вот беда: когда пользер выходит и заходит снова иконки уже нету! Также она пропадает если Експлорер вываливается и запускается снова!

Как мне определить когда надобно иконку опять регистрировать?

Сенкс!


 
Song   (2002-05-26 14:02) [1]

Засовывать когда её там не будет. Определить можно через FindWindow()


 
paul_shmakov   (2002-05-27 01:58) [2]

нужно обрабатывать сообщение, номер которого возвращает RegisterWindowMessage("TaskbarCreated"). это сообщение посылается эксплорером во время его запуска.


 
Pavlik Morozov   (2002-05-27 17:37) [3]

А небольшой пример можно ???


 
Pavlik Morozov   (2002-05-27 18:18) [4]

Вот как сделал я:


var
WM_TASKBAR_CREATED: Cardinal = WM_USER;

---------- кусок кода из описания класса -----------

FHandle: THandle;
procedure WndProc(var Message: TMessage);

---------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -----------

procedure TMainSvc.ServiceCreate(Sender: TObject);
begin
WM_TASKBAR_CREATED := RegisterWindowMessage("TaskbarCreated");
FHandle := Classes.AllocateHWnd(WndProc);
end;

procedure TMainSvc.WndProc(var Message: TMessage);
begin
try
with Message do
if (Msg=WM_TASKBAR_CREATED) and Assigned(TrayIcon)
and (WM_TASKBAR_CREATED<>WM_USER) then
begin
TrayIcon.Recreate;
end
else
Result := DefWindowProc(FHandle, Msg, wParam, lParam);
except

end;
end;

procedure TMainSvc.ServiceDestroy(Sender: TObject);
begin
Classes.DeallocateHWnd(FHandle);
end;



В результате я получаю сообщение "Invalid window handle"


 
paul_shmakov   (2002-05-28 01:30) [5]

хмм.. с виду код вроде бы вполне легальный. а в каком месте возникает "Invalid window handle"?


 
Pavlik Morozov   (2002-05-28 13:42) [6]

ДА вот ни в каком, наверное когда эксплорер вываливаеться окошко, созданное мноу пропадает, но это я так думаю....

Но у меня другой вопрос: действительно ли с помощью этого кода я смогу получить то, что хочу?


 
paul_shmakov   (2002-05-29 13:07) [7]

отлаживать надо.

а насчет сомнений по поводу поможет или нет - это единственный нормальный способ определить рестарт эксплорера.


 
Pavlik Morozov   (2002-05-30 09:06) [8]

Отлаживать-то конечно хорошо! Но хандлер-то этот вообще никогда не вызывается! Даже когда Эксплорер вываливается! Может я чего-то криво написал?


 
paul_shmakov   (2002-05-30 15:43) [9]


Но хандлер-то этот вообще никогда не вызывается! Даже когда Эксплорер вываливается!

это сообщение рассылается всем окнам при *старте* explorer.exe, а не при его крахе.


 
Pavlik Morozov   (2002-06-06 14:42) [10]

Но после краха он то стартует, а сообщение все-равно не вызывается! :~(



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.024 c
3-35224
masik
2002-07-23 14:30
2002.08.12
For Select (IB) аналог в ?


8-35384
HellTrooper
2002-04-02 16:41
2002.08.12
Огонь


1-35259
sel
2002-07-30 15:48
2002.08.12
Экспорт


14-35428
MIFI
2002-07-07 12:12
2002.08.12
Люди в чорном 2


3-35182
sergey32
2002-07-22 10:22
2002.08.12
Ошибка в при использовании BDE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский