Rokas Gustys Ответов: 4

NotifyIcon - всегда показывать значок?


Здравствуйте, у меня есть приложение, над которым я работаю, которое работает в фоновом режиме, и у меня есть NotifyIcon в системном трее, который я использую, чтобы уведомить Пользователя о некоторых вещах. Но теперь я подошел к небольшой проблеме.

Я хочу всегда иметь возможность показывать значок рядом с системными значками, то есть Центр действий, сеть, звук. И не скрыты с другими приложениями, в которых вы должны нажать стрелку вверх, чтобы показать их.

Если вы не уверены, что я имею в виду, есть такая вещь в панели управления под значками области уведомлений, которая позволяет вам изменить то, что может делать каждый значок, то есть "показать значок и уведомление", "скрыть значок и уведомления" и "только показать уведомление" < - это пример Windows 7, я не знаю, как это было бы в XP или Vista. Но это в основном то, что я хочу сделать. Я хочу программно настроить свое приложение на "отображение значков и уведомлений".

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

Вот пример изображения того, как я хочу, чтобы это было: (стрелка показывает мое приложение)

http://i719.photobucket.com/albums/ww199/Pk_King_X11/NotifyIconExample.png

------------------------------------------------------------------

EDIT: Please goto: "Панель управления\все элементы панели управления\значки области уведомлений" (Windows 7)

^ Вы увидите, что каждый значок имеет свое поведение, я хочу установить свой на "показывать значок и уведомления" программно. Я знаю, что это возможно... DropBox сделал это.

Правка 2:

Хорошо, теперь я вижу, как это работает. Такие программы, как DropBox и некоторые антивирусы, в основном меняют положение своего значка в трее... Изменив его на 0 или 1, который когда-либо был первым, в основном помещает их прямо рядом с часами, таким образом автоматически изменяя настройки значков области уведомлений на "Показать значок и уведомления", теперь это чистый гений...

Но тут возникает вопрос. Как мне этого добиться?

Sergey Alexandrovich Kryukov

Где она "спрятана"? Не работает система.Окна.Формы.Уведомлять вас о том, что вы хотите?
--СА

Rokas Gustys

Да, я использую для этого элемент управления NotifyIcon... И он скрыт в том месте, где он скрывает неактивные значки (например, в windows XP). Я хочу, чтобы он был "активным" и отображался рядом со стрелкой вверх, которую вы нажимаете, чтобы показать другие значки. Именно туда по умолчанию попадают значки всех других приложений. Пожалуйста, смотрите изображение, которое я добавил.

Sergey Alexandrovich Kryukov

Именно так выглядят такие приложения. Например:
http://www.codeproject.com/Articles/36468/WPF-NotifyIcon

--СА

Rokas Gustys

Хотя, похоже, он не делает то, что я хочу (по крайней мере, в Win 7). Пожалуйста, смотрите мою вторую правку.

Sergey Alexandrovich Kryukov

Теперь я понимаю, что ты имеешь в виду...
--СА

4 Ответов

Рейтинг:
1

Dave Kreskowiak

Вы не можете контролировать это в своем приложении. Он полностью основан на принципе "кто доберется туда первым, тот и победит".


Rokas Gustys

Нет, ты не понимаешь, что я имею в виду...

Если вы находитесь в Windows 7, перейдите в Панель управления и перейдите к значкам области уведомлений. Вы поймете, что я имею в виду. Все значки области уведомлений можно настроить так, чтобы они отображались постоянно или нет. Я просто пытаюсь найти способ сделать это программно.

И, как я уже сказал, Если DropBox может это сделать, то это возможно. Там должен быть какой-то API или что-то еще.

Dave Kreskowiak

Это Windows 7, и я знаю, что вы пытаетесь сделать. Ты все еще не можешь контролировать это. Из MSDN:

Windows 7 пошла еще дальше, сосредоточив внимание уведомления на его первоначальной цели быть источником уведомлений. Большинство значков скрыты по умолчанию в Windows 7, но могут быть перемещены в область уведомлений вручную пользователем. Чтобы держать пользователей под контролем своих рабочих столов, ваша программа не может выполнять эту акцию автоматически. Windows по - прежнему отображает уведомления о скрытых значках, временно продвигая их.

Кроме того, читайте http://blogs.msdn.com/b/oldnewthing/archive/2010/12/15/10105142.aspx

Rokas Gustys

Да, теперь я это понял. Смотрите мою вторую правку...

Dave Kreskowiak

Да, какую часть фразы "У вашей программы нет возможности выполнить это" вы не понимаете??

Rokas Gustys

Да, есть!!! DropBox и довольно много антивирусных программ сделали это, так что да, это можно сделать!!!

Пожалуйста, не трудитесь отвечать, если не знаете как...

Dave Kreskowiak

Но единственное, что вы не хотите слушать, это то, что это происходит только по совпадению! На моем компьютере Dropbox отображается в позиции 4, 5 или 6 в зависимости от того, что начинается первым. Steam может появиться в любом положении, обычно после 3, но еще в прошлом году, и у меня есть 17 значков в трее.

Он появляется 1-м на вашем компьютере не из-за вызова API, а потому, что его процесс обычно запускается и помещает свой значок первым.

Rokas Gustys

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

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

Так что это явно как-то связано с вашей установкой... Это не совпадение.

Dave Kreskowiak

Отсюда на, вы находитесь на свой собственный.

Отписаться.

Rokas Gustys

Сколько бы раз я ни пытался объяснить, мы явно не понимаем друг друга правильно. Все нормально...
Я знаю, что это возможно, поэтому я найду способ. Может быть, на другом форуме...

Рейтинг:
1

nathanlaan

согласно Microsoft, это не возможно, чтобы сделать это.

Цитата:
Приложения не могут программно всегда показывать себя на верхнем уровне в системном трее ни при первой установке, ни в любое время во время выполнения. Это одно из нескольких изменений, которые мы внесли в Windows 7 в попытке создать более чистый и тихий рабочий стол, который находится под контролем пользователя, чтобы настроить верхний уровень с помощью своих любимых приложений и значков.


Следует отметить, что Windows, похоже, запоминает настройки, которые вы выбираете при удалении приложения, а затем переустановке его. Возможно ли, что именно это и произошло?

Когда я установил DropBox на свой рабочий стол Win8 и ноутбук Win7, значок был скрыт до тех пор, пока я вручную не вошел и не установил его на "Показать значок и уведомления".


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


Рейтинг:
1

Farzan Doroodgar

Для тех, кто постоянно твердит, что это невозможно... Вот код C# : http://hianz.wordpress.com/2012/07/13/modify-windows-7-notification-area/[^]
Недостатком этого кода является то, что вам нужно убить explorer.exe и повторите его, чтобы изменения вступили в силу и не были переопределены при следующем запуске windows

@Рокас, я на той же стороне, что и ты. Значок Dropbox всегда отображается в трее, независимо от того, в какой системе я его устанавливаю. Я даже сделал новую установку windows 7, а затем установил Dropbox, он никогда не менялся, чтобы быть скрытым и оставался в области уведомлений, я посмотрел на его настройки уведомлений, и он был настроен на "показывать значок и уведомления".


Рейтинг:
0

lewax00

Там нет никакого API[^ потому что, к сожалению. Окна были спроектированы таким образом специально.

Тем не менее, я предполагаю, что параметры хранятся где-то в реестре, так что вы можете захотеть покопаться там.


Rokas Gustys

Единственное, что есть в реестре, - это либо показать все скрытые значки, либо скрыть их (по умолчанию).

Пожалуйста, если вы не знаете, как это сделать, то даже не беспокойтесь. Я знаю, что это возможно, как я уже сказал, DropBox сделал это!!!

lewax00

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

Rokas Gustys

Вы работаете под управлением Windows 7?

lewax00

Ага.

Dave Kreskowiak

Dropbox делает это на вашем компьютере. Он не сидит вон там, на моем.

Rokas Gustys

Я не знаю, на какой ОС вы работаете, но мое приложение в любом случае предназначено для Windows 7+... Если вы работаете под управлением Windows 7, то вы явно не понимаете, что я имею в виду (никто другой здесь, похоже, тоже...).
Любое приложение с NotifyIcon по умолчанию просто отображает уведомления и скрывается, если пользователь не заходит в "Панель управления\все элементы панели управления\значки области уведомлений" и не изменяет его, чтобы также отображать значок. Это именно то, что делает DropBox, но программно...