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

Вниз

"Перезапуск" иконок в трее   Найти похожие ветки 

 
IceBeerg ©   (2005-10-13 18:26) [0]

В общем так. Снимаю через диспетчер задать explorer и болшинство иконок из трея пропадают.
Есть ли способ как то оповестить запущенные программ, что им надо заово иконки свои винде пихнуть?
И вообще какой может быть выход из подобной ситуации?
Не снимать explorer через диспетчер задач НЕ прдлагать, иногда приходится.


 
IceBeerg ©   (2005-10-13 18:28) [1]

Ой, помоему не туда вопрос кинул, надо в потрепаться, извиняюсь.


 
Leonid Troyanovsky ©   (2005-10-13 18:42) [2]


> IceBeerg ©   (13.10.05 18:26)  

> Есть ли способ как то оповестить запущенные программ, что
> им надо заово иконки свои винде пихнуть?


For IE4+
WM_TASKBARCREATED := RegisterWindowMessage("TaskbarCreated")

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-10-13 18:45) [3]


> Leonid Troyanovsky ©   (13.10.05 18:42) [2]

> > Есть ли способ как то оповестить запущенные программ,

> WM_TASKBARCREATED := RegisterWindowMessage("TaskbarCreated")


В смысле, что если они его не обрабатывают, то, видимо, только перезапустить.

--
Regards, LVT.


 
IceBeerg ©   (2005-10-13 18:52) [4]

Leonid Troyanovsky ©   (13.10.05 18:42) [2]
ОК, попробую.

Leonid Troyanovsky ©   (13.10.05 18:45) [3]
В смысле, что если они его не обрабатывают, то, видимо, только перезапустить.

Непонял... 8(


 
Ball   (2005-10-13 19:04) [5]

http://www.delphikingdom.info/asp/answer.asp?IDAnswer=29588


 
Leonid Troyanovsky ©   (2005-10-13 19:04) [6]


> IceBeerg ©   (13.10.05 18:52) [4]

> В смысле, что если они его не обрабатывают, то, видимо,
> только перезапустить.

> Непонял... 8(


Это сообщение рассылается широковещательно при рестарте explorer
окнам верхнего уровня, которые могут, например, восстановить свои иконки.
Ну, а если они не восстанавливают, значит они его игнорируют ;)

--
Regards, LVT.

PS Сначала мне показалось, что речь идет о своих приложениях.


 
Leonid Troyanovsky ©   (2005-10-14 16:19) [7]


> IceBeerg ©   (13.10.05 18:26)  

> И вообще какой может быть выход из подобной ситуации?


 Можно было бы сделать приложение с (невидимой) формой, которое:

1. будет хранить список проблемных приложений, не умеющих
 восстанавливать свои иконки, и хранить данные, необходимые для
 восстановления  иконок;
2. будет запущено раньше проблемных приложений;
3. соберет данные всех проблемных приложениях  с помощью
установки хука на окно ShellTray_Wnd и отлова  WM_COPYDATA;
4. при обработке TaskbarCreated будет посылать окну  ShellTray_Wnd  
SendMessage(h, WM_COPYDATA, ..) c dwID = $34753423
и  параметрами, сохраненными раннее для каждого приложения.

В качестве структуры данных можно испытать изложенное в

http://groups.google.com/group/fido7.su.win32.prog/msg/d966e07f9ad4c70e

Одна проблема очевидна уже на этой стадии: приложения, меняющие
после старта свою иконку, хинт, и т.д. могут оказаться в несогласованном
со своим изображением состоянии.

Но, в любом случае, IMHO, это может оказаться более интересным
развлечением на выходные,  чем вариант с простым рестартом.

--
Regards, LVT.


 
Antonn ©   (2005-10-14 16:56) [8]

Leonid Troyanovsky ©   (13.10.05 18:45) [3]
WM_TASKBARCREATED := RegisterWindowMessage("TaskbarCreated")

если не секрет, что за сообщение, в Delphi7 его не нашел.


 
Leonid Troyanovsky ©   (2005-10-14 17:51) [9]


> Antonn ©   (14.10.05 16:56) [8]

> WM_TASKBARCREATED := RegisterWindowMessage("TaskbarCreated")
> если не секрет, что за сообщение, в Delphi7 его не нашел.


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell _int_programming/taskbar.asp

--
Regards, LVT.


 
Antonn ©   (2005-10-14 18:00) [10]

Leonid Troyanovsky ©   (14.10.05 17:51) [9]
прошу прощения за наглость, но не могли бы вы просто сказать значение WM_TASKBARCREATED? по данной ссылке не нашел(или не понял, что искать). WM_TASKBARCREATED в поиске выдает "not found"


 
Leonid Troyanovsky ©   (2005-10-14 18:28) [11]


> Antonn ©   (14.10.05 18:00) [10]

> прошу прощения за наглость, но не могли бы вы просто сказать
> значение WM_TASKBARCREATED? по данной ссылке не нашел(или
> не понял, что искать).


Конкретное значение выдает RegisterWindowMessage.
Ссылка, к сожалению, здесь искажается.
Следует скопировать ее целиком, скажем, в Notepad и убрать лишнее (в
т.ч. и пробелы).
Или, в строке поиска msdn.microsoft.com набрать "TaskbarCreated" -
там, IMHO, лишь одна ссылка: The Taskbar (Windows Explorer and Controls)

--
Regards, LVT.


 
Antonn ©   (2005-10-14 18:31) [12]

Leonid Troyanovsky ©   (14.10.05 18:28) [11]
Конкретное значение выдает RegisterWindowMessage.

покопаюсь...

>Ссылка, к сожалению, здесь искажается.
> Следует скопировать ее целиком, скажем, в Notepad и
>убрать лишнее (в
>т.ч. и пробелы).
> Или, в строке поиска msdn.microsoft.com набрать
>"TaskbarCreated" -
> там, IMHO, лишь одна ссылка: The Taskbar (Windows
> Explorer and Controls

знак переноса надо лишь убрать(%20) в пути, догодался:)


 
Lexer ©   (2005-10-21 14:30) [13]

IceeBerg, если тебе надо просто перезапускать explorer, чтоб при этом не пересоздавлась панль задач, то попробуй выделить панель задач в отдельный ппроцесс.

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer

Добавь туда ключ DesktopProcess типа DWORD со значением 1.


 
Eraser ©   (2005-10-21 19:50) [14]

Может поможет вот это
http://help.madshi.net/TrayIcons.htm


 
GrayFace ©   (2005-10-22 17:08) [15]

Antonn ©   (14.10.05 16:56) [8]
WM_TASKBARCREATED := RegisterWindowMessage("TaskbarCreated")
если не секрет, что за сообщение, в Delphi7 его не нашел.

В Forms есть RM_TaskbarCreated, только оно в interface.
Примерно так надо:

TForm1 ...
protected
  procedure WndProc(var msg:TMessage); override;
end;

implementation

procedure TForm1.WndProc(var msg:TMessage); override;
begin
  inherited;
  if msg.Msg=RM_TaskbarCreated then
  begin
    TrayIcon.Visible:=false;
    TrayIcon.Visible:=true;
  end;
end;

initialization
 RM_TASKBARCREATED := RegisterWindowMessage("TaskbarCreated")
end;



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

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

Наверх





Память: 0.49 MB
Время: 0.018 c
14-1133271489
baks_uz
2005-11-29 16:38
2005.12.25
Дельфи глазами Хакера


1-1133287582
dRake
2005-11-29 21:06
2005.12.25
Как узнать размер выделенной памяти?


2-1134331158
San1
2005-12-11 22:59
2005.12.25
PictureBox


4-1130121564
Symbol
2005-10-24 06:39
2005.12.25
Драйвер виртуального устройства


6-1126500953
Morgoth
2005-09-12 08:55
2005.12.25
gzip и zlib





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский