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


Автор: Rennigth 23.9.2005, 17:24
Я помоему уже поднимал этот вопрос, но тогда ответа не нашел и забил. Сейчас опять зайнтересовало. После кила процесса висящего в трее он так и остается там отображаться пока мышкой не наведешь, так как все - таки можно его обновить?

Автор: p0s0l 24.9.2005, 11:04
Самое банальное решение - сэмулировать действия юзера (типа водит мышкой по трею):
Код

uses CommCtrl;

procedure UpdateSysTray;
var
  w : HWND;
  i, n : integer;

begin
  w := FindWindow ('Shell_TrayWnd', nil);
  w := FindWindowEx (w, 0, 'TrayNotifyWnd', nil);
  w := FindWindowEx (w, 0, 'SysPager', nil);
  w := FindWindowEx (w, 0, 'ToolbarWindow32', nil);

  n := SendMessage(w, TB_BUTTONCOUNT, 0, 0);
  for i := 0 to n-1 do
    PostMessage(w, WM_MOUSEMOVE, 0, 0);
end;

Добавлено @ 11:06
Можно конечно попробовать помутить с тулбаром что-нибудь... но имхо и так сойдёт...

Автор: Rennigth 26.9.2005, 15:41
smile
Спасибо, попробуем.

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