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

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.012 c
14-63334
Вадим
2003-12-30 14:30
2004.01.20
Ощущение праздника


1-63202
Aleks_S
2004-01-10 04:09
2004.01.20
Компонент в ячейке TStringGrid?


6-63270
Yakudza
2003-11-19 12:31
2004.01.20
Как оборвать соединение с инетом ?


6-63279
Evgen!
2003-11-18 07:36
2004.01.20
Доступ к файлу по сети


14-63322
ИМХО
2003-12-30 22:37
2004.01.20
Шрифты (кириллица)





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