Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.20;
Скачать: CL | DM;

Вниз

Работа с systray ем   Найти похожие ветки 

 
Dolot   (2003-12-29 00:30) [0]

Как с сабжем работать? Нужно управлять иконками, а точнее нужно скрыть иконку из SysTray"я. Так как иконка - обычное окно, надо послать сообщение ему, но какое? Какое сообщение скрывает окно?

И вторая проблема - как найти это окно? Как искать в SysTray"евских окнах?


 
Anatoly Podgoretsky ©   (2003-12-29 00:38) [1]

иконка это не окно


 
Dolot   (2003-12-29 00:48) [2]

Ладно, согласен. Но как с ними работать? Проблему я описал - нужно научиться для начала удалять значок иконки из SysTray"я. Не закрывая программу


 
Anatoly Podgoretsky ©   (2003-12-29 00:58) [3]

Shell_NotifyIcon


 
Dolot   (2003-12-29 23:09) [4]

Отлично, но как я заполню PNOTIFYICONDATA ? Откуда узнаю параметры...


 
sniknik ©   (2003-12-29 23:32) [5]

typedef struct _NOTIFYICONDATA { // nid
DWORD cbSize;
HWND hWnd;
UINT uID;
UINT uFlags;
UINT uCallbackMessage;
HICON hIcon;
char szTip[64];
} NOTIFYICONDATA, *PNOTIFYICONDATA;

так и будем хелп частями переписывать.. ;о))

совет хочеш? имя функции у тебя есть, дельфи с хелпами и кучей исходников тоже. хелпы можно читать, а в исходниках искать. сделай поиск к примеру по "*.pas; *.dpr" с включением Shell_NotifyIcon в текст, наверняка найдеш пример использования. (поспорил бы но не зная версии дельфей... стремно, а вдруг не найдеш? ;о))


 
хз ©   (2003-12-30 01:17) [6]

Anatoly Podgoretsky © (29.12.03 00:58) [ 3]
Dolot (29.12.03 23:09) [ 4]

Забавно...


 
Юрий Зотов ©   (2003-12-30 06:24) [7]

1. Учитывая, что структура TNotifyIconData хранится по неизвестному адресу в адресном пространстве неизвестно какого процесса...

2. Учитывая, что даже если удастся эту структуру в этом адресном пространстве найти, то вызывать Shell_NotifyIcon(NIM_DELETE...) придется от имени ЧУЖОГО процесса (чтобы во втором параметре передать корректный указатель) - для чего придется внедрять в этот чужой процесс свой код...

3. Учитывая, что ничто не мешает самому процессу-жертве неоднократно вызывать Shell_NotifyIcon и после удаления иконки...

4. И еще учитывая, что, оказывается, "иконка - обычное окно" (!!!) ...

Так вот, учитывая все это, я бы порекомендовал потратить время на что-нибудь более реальное. Потому что п.п. 1-3 еще можно было бы обсуждать... если бы не п.4.


 
Dolot   (2003-12-30 16:31) [8]

sniknik © (29.12.03 23:32) [5]
ты наверное не читаешь? Ну так вот - мне нужно не свою иконку впихнуть в трей. Ну да ладно, Юрий Зотов меня понял.

>Юрий Зотов © (30.12.03 06:24) [7]
согласен с вашими словами. Но все таки не ругайтесь на меня, пожалуйста.

в адресном пространстве неизвестно какого процесса

Ну адрес процесса я узнать смогу. Я же знаю какой процесс создает эту иконку. Только это вряд ли поможет...

>. И еще учитывая, что, оказывается, "иконка - обычное окно

сглупил. Я же признал это. Просто видимый элемент, может взаимодействовать с пользователем - я и подумал, что окно.

Тем не менее, обсуждать 1..3 смысла я считаю не имеет. Особенно учитывая 3 - как-то не подумал об этом.

Но теперь интересно чисто гипотетически - нету функций, которые позволяют управлять чужой иконкой и вообще взаимодействовать с чужими иконками в SysTray"е ?


 
sniknik ©   (2003-12-30 16:44) [9]

Dolot (30.12.03 16:31) [8]
> ты наверное не читаешь?
как же читаю
> Проблему я описал - нужно научиться для начала удалять значок иконки из SysTray"я
учится нужно на своих. для начала.
> Но теперь интересно чисто гипотетически - нету функций, которые позволяют управлять чужой иконкой и вообще взаимодействовать с чужими иконками в SysTray"е ?
функция одна, не в ней проблема, проблема что в NOTIFYICONDATA.hWnd записать. если его узнаеш закроеш любую.


 
NeyroSpace ©   (2003-12-30 17:07) [10]

а если перебором? :-)


 
Юрий Зотов ©   (2003-12-30 17:07) [11]

> Dolot (30.12.03 16:31) [8]
> нету функций, которые позволяют управлять чужой иконкой и
> вообще взаимодействовать с чужими иконками в SysTray"е?

Возможно, и есть (хотя, IMHO, маловероятно). Возможно, даже и документированы (хотя, IMHO, еще более маловероятно). Тогда надо копать, видимо, в сторону интерфейсов оболочки.


 
Dolot   (2003-12-30 17:40) [12]

>учится нужно на своих. для начала

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

>проблема что в NOTIFYICONDATA.hWnd записать. если его узнаеш закроеш любую

вы утверждаете, что узнав NOTIFYICONDATA.hWnd я смогу вызвать Shell_NotifyIcon и смогу закрыть любой значок?


 
sniknik ©   (2003-12-30 17:52) [13]

Dolot (30.12.03 17:40) [12]
> а кто вам поведал, что я не в состоянии запуздырить свою иконку в трей?
никто, но раз спрашиваеш и спрашиваеш так что неясно что ты знаеш а чего нет, мог предположить. в следующий раз уточняй (приводи список своих знаний, и предупреждение "обижусь если кто усомнится" ;о))
кстати судя по употребляемым словам, "запуздырить", список получится небольшой.

> вы утверждаете, что узнав NOTIFYICONDATA.hWnd я смогу вызвать Shell_NotifyIcon и смогу закрыть любой значок?
больше того, я это знаю точно, могу даже примерчик выслать состряпал тут, пока суть да дело. тока звиняй но exe only (а то вдруг обижу уже известным, но пока непонятым).


 
sniknik ©   (2003-12-30 17:58) [14]

на самом деле, еше и uID нужен, но предполагая что больше 10 иконок ни у кого нет...


 
имя   (2003-12-30 18:13) [15]

Удалено модератором
Примечание: Используем один ник в ветке.


 
Dolot   (2003-12-31 13:53) [16]

sniknik, ну что, не поделишься исходным кодом своей супер программы?


 
sniknik ©   (2003-12-31 14:39) [17]

Dolot (31.12.03 13:53) [16]
> sniknik, ну что, не поделишься исходным кодом своей супер программы?
ну во первых она не супер, (вызов одной функции с 2 разными параметрами это с каких пор крутизной считается?).
я же не чужие иконки закрываю, свои, из второй программы (значение hWnd просто руками переношу, наглядно. можно и по другому конечно).

а во вторых с какой стати я с тобой делится должен? мне не нравится как ты отвечаеш, советы в задницу практически посылаеш сам ничего не делаеш а код тебе дай. обойдешся.
считай что это из вредности.
хотя, если всетаки последуеш совету из > sniknik © (29.12.03 23:32) [5] сам такую же запросто напишеш (у меня ушло 15мин) а если еще подумаеш хорошо подучишся то может и чужую сможеш (я даже пытатся не буду, незачем).

exe-ник как доказательство, без проблем, всем желающим.


 
Aristarh ©   (2003-12-31 14:51) [18]

О-о-о, да сникник уже празднует по полной... :))
Ни орфографии, ни пунктуации...


 
Dolot   (2003-12-31 15:06) [19]

sniknik, да и болт с тобой! Я и сам все напишу, а тебе чтоб пусто стало.


 
Дремучий ©   (2003-12-31 15:15) [20]


> Dolot (31.12.03 15:06) [19]
> sniknik, да и болт с тобой! Я и сам все напишу, а тебе чтоб
> пусто стало.

а за такие слова ручки нужно с корнями выдергивать!
ты сюда за помощью пришел или как? Пиши сам, кто тебе не дает? А другим яму копать не нужно -- они тебе свою могут оддолжить!


 
Dolot   (2003-12-31 15:20) [21]

Ручки надо выдергивать, да? А ему ручки не надо выдергивать?!

Я то сюда за помощью пришел! А вот он сюда зачем сюда пришел? Меня опускать? Так пусть идет в другую ветку!


 
sniknik ©   (2003-12-31 17:01) [22]

Dolot (31.12.03 15:06) [19]
зря огрызаешся
> Я и сам все напишу
чего в принципе и хотел, даже мог бы помочь (но не писать за тебя, разницу понимаеш?) но не после поста
> Dolot (30.12.03 16:31) [8]
иы там все можеш, и запуздырить иконку в трей и адрес процесса узнать, ну все. только 1 функцию с параметрами вызвать не можеш...
и обижаешся если тебе не дай бог говорять то что уже знаеш.
ну а последующее только укрепило меня в том что ты не тот человек с кем хотелось бы общатся.
(кстати почему чаще всего незарегистрированные ники хамят?...)

p.s. програмка теперь имеет "бонус" ;о) (обманул когда говорил "я даже пытатся не буду, незачем" :), решил попробовать ради интереса, а оно раз и с первого раза получилось)
теперь снимает значки 3х программ (те что под рукой были)
думаю многим знакомы
Borland Socket Server
SQL Server Service Manager
Диспетчер задач Windows

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



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

Текущий архив: 2004.01.20;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.02 c
6-63275
Dysan
2003-11-18 13:06
2004.01.20
Connection Closed Gracefully


1-63204
Андреев
2004-01-09 21:28
2004.01.20
Новый пункт в MainMenu


3-62972
NickNaz
2003-12-23 12:49
2004.01.20
Столбец DbGrid


11-63048
Юрий
2003-05-04 18:43
2004.01.20
TKolRichEdit и TKolListBox


3-63005
Alex-kosmonavt
2003-12-23 11:21
2004.01.20
Insert