Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Неполучается с иконкой в трее


Автор: МАХИМ 1.6.2006, 10:59
Код

var ht: THandle; nid, oldnid, oldnid2: TNotifyIconData;
begin
  oldnid.hIcon  := nid.hIcon;
  ht:= FindWindow(nil,'сапер');
  if ht <> 0 then //если окно найдено то остальное выполняется
  begin
    i.Handle := LoadIcon(hInstance,'CARRY');//первая иконка
    oldnid2.hIcon := I.Handle;
  if oldnid.HIcon <> oldnid2.HIcon then
  begin
    //ShowWindow(ht, sw_hide);
  with nid do
  begin
    Wnd := Form1.Handle; 
    uID := 1;
    uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
    hIcon := I.Handle;
  end;

    Shell_NotifyIcon(NIM_MODIFY,@nid);
  end;

  end
  else//если не найдено окно
  begin
   I:=TIcon.Create;
   I.Handle := LoadIcon(hInstance,'CARRYNO');//вторая иконка
  with nid do
  begin
    Wnd := Form1.Handle; 
    uID := 1;
    uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
    hIcon := I.Handle;
  end;
   Shell_NotifyIcon(NIM_MODIFY,@nid);
  end;
end;


Вот такой вот участок кода, иконка в трее становится не доступной  smile и ввместо ToolTip кракозябры... если убрать участок кода with nid do ............... end; то иконка доступна но естественно не меняется... smile   

Автор: _hunter 1.6.2006, 11:23
дык. что Shell_NotifyIcon возвращает? 

Автор: МАХИМ 1.6.2006, 12:22
я так понимаю просто меняет иконку в зависимости от флага может быть _ADD, _DELETE, _MODIFY 

Автор: _hunter 1.6.2006, 13:40
Цитата(МАХИМ @  1.6.2006,  12:22 Найти цитируемый пост)
я так понимаю просто меняет иконку в зависимости от флага может быть _ADD, _DELETE, _MODIFY 

это хорошо, что ты понимаеш, но , всетаки, что функция возвращает? да и GetLastError() заодно 

Автор: МАХИМ 1.6.2006, 14:03
Цитата(_hunter @ 1.6.2006,  13:40)
что функция возвращает? да и GetLastError() заодно

Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. 

Автор: Mechanic 1.6.2006, 16:35
А зачем or NIF_MESSAGE or NIF_TIP, если описываешь только иконку?  smile 
Или опиши остальное, или эти флаги не используй. 

Автор: СЭНСЭЙ 6.12.2007, 18:16
Люди, а можно в экзешник засунуть несколько иконок и  менять их?

Автор: MetalFan 6.12.2007, 18:42
а инициализировать кто структуры будет?
Код

var
  lIconData:   TNotifyIconData;
begin
  ZeroMemory( @lIconData, SizeOf( TNotifyIconData ));
  lIconData.cbSize := SizeOf( TNotifyIconData ));
......



Добавлено через 51 секунду
упс, бородатая тема уже...
СЭНСЭЙ, создай новую свою тему... если поиском ответ на вопрос не найдешь

Автор: THandle 6.12.2007, 19:40
СЭНСЭЙ, допрыгаешься скоро! smile  Уже не первую тему поднимаешь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)