Как открывается контекстное меню. Ручная правка реестра. Добавление элемента для вызова контекстного меню

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

Контекстное меню сообщения в Apple Mail (слева) и Windows Mail (справа).

Стоит ли использовать контекстные меню?

. Я настоятельно не советую использовать их для интернет-магазинов, как, например, Lands End или Amazon. Я также не советую использовать контекстные меню для потребительских сайтов, не требующих сложных взаимодействий: банковских сайтов, сайтов знакомств, даже для Facebook.

Cчитаю, что контекстные меню наиболее эффективны в серьезных корпоративных приложениях , которые пользователь использует часто и в которых хорошо разбирается. В таких приложениях контекстные меню чрезвычайно полезны. Почему?

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

Возможно, вы просматриваете интернет-магазин, читаете блог или проводите исследования и хотите сопоставить варианты. Нажмите кнопку, просмотрите список и сделайте свой выбор для таргетинга на сайт. Чтобы перевести всю страницу, просто нажмите кнопку на панели инструментов и нажмите «Перевести эту страницу». Язык страницы автоматически изменится на ваш язык по умолчанию. Вы также можете нажать кнопку на панели инструментов, чтобы перевести то, что вы выделили.

Прежде всего, контекстные меню помогают экономить движения мыши . Если пользователь вынужден часто использовать повторяющиеся действия, то использование контекстного меню помогает уберечь от ненужных движений - вместо того, чтобы выбирать объекты, а затем «идти курсором» в тулбар для того, чтобы выбрать какое-либо действие, пользователь может сделать все прямо на месте.

Вы можете использовать его, чтобы напомнить вам сделать перерыв в выбранное вами время. Установите время, задайте время каждый день или используйте случайное напоминание. У расширения есть возможность начать дыхательное упражнение и перейти в полноэкранный режим для полной фокусировки. Различия между ними невелики, но достаточно, чтобы каждый из них был подходящим для разных потребителей. Дизайн Визуально две новые модели имеют различия в зависимости от того, на какой стороне они смотрят. Событие также будет связано с премьерой других аппаратных продуктов, таких как новый смарт-динамик, ноутбук высокого класса и дополнительные очки.

Во-вторых, контекстные меню помогают пользователям больше узнать об объектах в приложении. Открывая контекстное меню, они видят, какие команды доступны для этого объекта. Это помогает пользователям понять с чем они взаимодействуют в данный момент времени и что приложение позволяет сделать с объектом этого типа.

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

Теперь в Интернете выпущены снимки, которые показывают, как будут выглядеть устройства. Согласно неподтвержденной информации, официальные продажи смартфонов начнутся 19 октября. Компания уже получила разрешение на проведение публичных испытаний с помощью своих автономных автомобилей в некоторых городах США. Настало время отметить, что в прошлых экспериментах автомобили Уэймо всегда двигались в присутствии человека, который мог взять на себя ответственность в случае возникновения проблемы. Компания также хочет ездить на волонтеров и случайных прохожих, чтобы убедить их в безопасности своих автомобилей и заставить их привыкнуть к их присутствию.

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

Как вызывается контекстное меню?

Традиционно в Windows-приложениях контекстное меню вызывается наведением курсора на объект и кликом по нему правой кнопкой мыши. В MacOS-системах пользователь также может использовать правую кнопку мыши или же может кликнуть по объекту левой кнопкой, зажав при этом кнопку Control. Обычно это действие называется просто «правый клик ».

Правый клик в любой точке объекта должен вызывать контекстное меню . Если это иконка с подписью, то правый клик и по иконке, и по подписи должны вызывать одно и то же контекстное меню. Если объект - это строка в таблице, то одно и то же меню должно открываться независимо от того, в каком месте этой строки пользователь кликнет. Никогда, слышите, никогда не показывайте разные контекстные меню в зависимости от того, в каком столбце этой строки кликнул пользователь.

Посмотрите восемь компаний, которые сделают автомобили с самообслуживанием. Даже пользователи с плохими техническими навыками уже знают, что эта услуга может практически перевести их во всех уголках мира. Служба «успешно» успешно работает на каждой улице, в каждом городе в мире и может указать вам правильный путь, даже когда вы путешествуете по незнакомым шоссе.

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

Небольшое замечание: В мире устройств с сенсорным экранами (таких, к примеру, как iPad), у нас нет курсора, который можно навести на объект. В таком случае можно быстро назвать три возможных способа указывать на объект:

  • Показывать контекстное меню сразу после нажатия на объект (однако это может раздражать)
  • Показывать контекстное меню после нажатия пальцем и удержания нажатия на долю секунды (в таком случае всегда возникает проблема неочевидности, но это лучше чем первый вариант)
  • Добавление контрола, который вызывает контекстное меню (возможно, это лучший путь решения проблемы - о нем рассказано ниже).

Эти адреса вы найдете в разделе «Ваши места». Чтобы начать, нажмите на панель поиска. Если вы этого еще не сделали, вас встретит сообщение «Легко найти адрес вашего друга», а также будет предложено добавить контакты. Вы можете поделиться своим местоположением с друзьями. Это полезно, когда вы встречаетесь с другом, но место довольно многолюдно и трудно найти. В таких случаях вы можете выбрать свое местоположение и нажать «Поделиться».

Не знаете, что вы хотите съесть на обед? Выберите «Поиск», затем «Исследуйте поближе», чтобы получить список мест рядом с вашим местоположением, где вы можете поесть. При изучении поблизости измените текущее время дня на Вечер. Здесь вы можете найти, где послушать приятную музыку, музеи, кинотеатры и многое другое.

Контекстное меню для графического файла в MacOS X (слева) и Windows Vista (справа).

Добавление элемента для вызова контекстного меню

В некоторых веб-приложениях есть элемент интерфейса, нажатие по которому вызывает контекстное меню. Он обычно называется «иконкой меню» - это иконка, изображающая стрелочку вниз, которая находится прямо возле названия (или изображения) объекта.

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

Если вы путешествуете куда-то и не хотите полагаться на свое интернет-соединение, вы можете сохранить карту, которую нужно использовать в автономном режиме. Учредители компании Ларри Пейдж и Сергей Брин всегда хотели, чтобы дизайн поисковой системы был максимально простым и простым в использовании. Теперь пользователи могут видеть две новые вкладки, которые расположены в верхнем левом углу и несут имена «О программе» и «Сохранить». Раздел также показывает много полезной информации на основе вашего местоположения, в том числе из социальных сетей, для максимальной простоты использования.


Контрол меню, показывающий что в данном случае меню доступно.

Если вы собираетесь использовать контрол меню, то стоит сделать так, чтобы нажатие на него отличалось от нажатия на сам объект. В примере выше если пользователь кликает где-нибудь в строке Ahmed Hassain, то он просто выделяет всю строку Ahmed Hassain, однако если он кликает по иконке меню для этой строки, то он получает контекстное меню (и строка не выделяется).
Кроме того, пользователь также должен иметь возможность просто кликнуть правой кнопкой в любом месте строки, чтобы открыть контекстное меню - без необходимости нажимать на иконку.

Как автоматически спать в спящем режиме

Напоминаем, что 99% поисковой системы было белым. Добавление двух разделов уменьшает это значение минимум на 1%. Например, если вы щелкнете правой кнопкой мыши по файлу, отображаются такие параметры, как «Открыть», «Создать», «Печать», «Отправить», «Открыть в программе» и т.д. Но знаете ли вы, что их гораздо больше? Если вы используете его дома, например, где нет риска того, что кто-то окажется некомпетентным, вы можете найти этот шаг ненужным. Вы можете избавиться от него, щелкнув боковую панель и нажав «Настройки», а затем «Изменение настройки компьютера».

Стоит ли использовать контрол меню? Оно отлично решает одну из больших проблем с контекстными меню: многие пользователи не знают, что контекстное меню доступно. В веб-приложениях пользователи часто предполагают что контекстного меню нет (его иногда нет даже в десктопных приложениях).

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

Как предотвратить автоматическую подписку после установки обновлений

С правой стороны в разделе «Пароли» нажмите «Изменить». Предыдущий совет позволил вам автоматически войти в систему, когда вы перешли из спящего режима, но это предотвращает его после установки обновлений. Если они закончились, тогда компьютер будет перезагружен, и после запуска пользовательский профиль снова появится. С правой стороны дважды щелкните значок Автоматический выход в последний интерактивный пользователь после перезапуска системы.

Как получить системную информацию без каких-либо других программ

Нет необходимости устанавливать сторонние программы.

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


Контрол меню, который появляется при наведении курсором мыши.

Как отключить показ слайдов на экране аккумулятора заблокирован

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

Как создать кнопку для включения и отключения брандмауэра

Благодаря ему у вас есть возможность создавать кнопки, чтобы выключать и включать. Мы ценим наличие выделенной числовой линии, в то время как клавиши ввода также могут помочь в вибрационном ответе.

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

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

Что должно содержаться в контекстном меню?

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

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

С часами для здоровья и часов

Если телефон находится на ровной поверхности, сигнал звучит так, как если бы телефон находился в совершенно другой комнате. Основное прикладное оборудование снова представлено в основном приложениями для организации времени. Готовые аварийные сигналы, календарь для хранения событий и предупреждений и простой калькулятор настроены. Однако, после поворота телефона, он предоставит дополнительные математические функции. Диспетчер файлов разбивает содержимое сначала по типу, а затем по папке. Веб-браузеры равны двум с аналогичной функциональностью, поэтому вы будете выбирать в соответствии с вашими предпочтениями.

Вот, к примеру, три контекстных меню для выделенного фрагмента текста: в Dreamweaver, Microsoft Word и Apple Pages. Меню Dreamweaver пытается быть похожим на швейцарский складной ножик и предлагает все возможные команды в одном контекстном меню. Из-за этого оно получается настолько большим, с кучей вложенных списков, что им становится трудно пользоваться. Лично я избегаю вызывать контекстное меню в Dreamweaver.

Здоровье прежде всего измеряет шагомер

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

В нем наиболее часто используемые функции (например «Копировать» или «Вставить») располагаются ближе к концу списка. В Word и Pages наоборот, часто используемые команды выносятся наверх списка, а команды, содержащие вложенные списки - в конец. Они также отобрали для меню только самые важные функции, и лучше организовали их.

Если вы хотите сделать свое контекстное меню удобнее, оставьте в нем только 60% самых важных команд вместо всех 100% . Если в одном меню попытаться уместить все важные команды, то это не приведет ни к чему хорошему - размеры меню увеличатся, а удобство его использования и скорость работы с ним наоборот, снизится.
Помните: главная причина, по которой контекстные меню вообще используются - это возможность сэкономить время пользователя.

Галерея, видеоплеер в альбомном режиме и воспроизведение в отдельном окне

Здесь мы находились в середине шкалы, потому что тогда выход был неприятно громким. Кроме того, звук не такой же металлический, как у небольших мобильных динамиков. Мы не обнаружили никаких новых функций в Галерее, фотографии можно запускать в режиме слайд-шоу, или их можно редактировать непосредственно в редакторе через контекстное меню. Вы не можете добавить три наиболее используемых сочетания клавиш в левую часть камеры, остальные два значка переключаются между камерами или камерой. приведет вас в меню «Настройки», где остальные элементы «сложены» в один стек.


Контекстные меню в Dreamweaver, Microsoft Word и Apple Pages

Контекстное меню не должно содержать команды, не относящиеся к выделенному объекту (такие, например, как «Обновить страницу»). Концентрируйтесь на тех командах, которые были бы полезны для работы с тем объектом, на который наводит пользователь.

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

Мы даже не находим сюрпризов в области текстовой и голосовой связи. Телефонная книга является разноцветной и имеет общее с протоколами, любимыми вещами и циферблатом. У этого есть умный поиск для последовательного письма, в зависимости от того, какие возможные контакты фильтруются. Качество звонка достаточно, возможно, только максимальный объем в телефонной трубке может быть немного выше.

Когда возможно, группируйте команды в блоки от 1 до 6 штук в каждом . Отделяйте блоки линиями. Наиболее часто используемые команды следует выносить наверх списка, наименее часто используемые - убирать вниз. Если команда используется особенно редко, то, возможно ей не место в контекстном меню.

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

Клавиатура не очень хорошая, потому что мы находимся в среднем классе, поэтому вибрационный отклик отсутствует. Звук очень утомительный, поэтому вы можете отключить его раньше или позже. Хотя клавиатура не имеет числовой линии, вы можете ввести с предсказанием или переопределением клавиатуры, в зависимости от выбора словаря слов, какое слово наиболее важно для пройденной траектории. Это умно, но это немного привычка.

Кроме того, широкоформатная клавиатура не предлагает многого, а опечатки также в значительной степени проявляются и здесь. И это будет мало - добавьте вибрационный отклик. Здесь мы найдем повторяющиеся сигналы тревоги, секундомер, таймер, калькулятор, простые заметки и диктофон. Диспетчер файлов разбивает файлы по типу, а затем по хранилищу. Календарь эффективно использует всю область отображения, но день события подсвечивается только маленькой полосой, поэтому вы можете игнорировать события без уведомления.

Помимо этого вы можете использовать нестандартные элементы меню .
Например, вместе с контекстным меню в Microsoft Word 2007 открывается плавающая палитра, а в контекстном меню файла в Mac OS есть специальные цветные кнопки выбора цвета ярлыка. Только потому что мы говорим «меню», не значит что оно должно быть ограничено только текстом.


Контекстное меню может быть больше чем просто список команд

В контекстном меню не могут содержаться уникальные команды, свойственные только для него . Другими словами, любая команда контекстного меню должна быть доступна также другими способами: на панели инструментов, строке меню или в любом другом месте на экране. Помните, что большая часть пользователей скорее всего ни разу не откроет контекстного меню в вашем приложении. А это означает, что они не увидят команду, которая присутствует только там.

Обычно я помещаю «команду по умолчанию» первой в контекстном меню. Это та команда, которая совершится при двойном клике на объекте (например, команда Open в контекстном меню файла). Если у объекта нет команды по умолчанию, концентрируйтесь на самых используемых командах.

Вы можете использовать название объекта в контекстном меню для того, чтобы сделать команды понятнее . Например, вместо названия команды «Открыть» вы можете использовать словосочетание «Открыть Скриншот.png». При использовании этого приема бывает сложно найти золотую середину - нужно сделать меню достаточно самоочевидным, но не слишком многословным. Меню в Mac OS содержит название объекта в одних командах, и не содержит в других.

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

Что насчет нескольких выделенных объектов?

Обычно контекстное меню вызывается для одного выделенного объекта, но что делать, если пользователь выбрал несколько объектов, и потом открывает контекстное меню? Давайте рассмотрим несколько примеров.

Представим что у нас есть шесть объектов: четыре папки (А, В, С, D) и два графических файла (Е и F).

Папки и файлы в Windows

Пример 1

Пользователь выбирает папки A, B, C, а затем вызывает контекстное меню, находясь мышкой на папке D (важно: папка D изначально не была выбрана). В таком случае для объектов А, В, и С необходимо отменить выделение и открыть контекстное меню только на выделенном D .


Пример 2

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

Если, к примеру, это будет команда «Открыть», то она должна открыть все три объекта. Если есть команда, которую нельзя применить больше чем к одному объекту, то нужно сделать команду неактивной, не убирая ее из меню.


Ранее я говорил о том, что мы можем написать «Открыть Скриншот.png» вместо «Открыть» для того, чтобы помочь пользователю понять, к чему команда применяется. Точно так же в нашем случае мы можем написать «Открыть 3 объекта» - это поможет понять, что действие применяется ко всем выделенным объектов. В нашем случае контекстное меню может выглядеть следующим образом:

  • Открыть 3 объекта
  • Удалить 3 объекта
  • Копировать 3 объекта
Подобный подход использует Apple в Mac OS X, однако она не использует такой подход повсеместно. Я не могу понять почему в контекстном меню встречается словосочетание «Сжать 3 файла», но нигде не говорится «Открыть 3 файла». Странно.

Пример 3

А теперь давайте рассмотрим случай, когда пользователь выбирает несколько разнородных объектов, например папки А, B и графический файл Е. Как вы понимаете, контекстные меню для папок и графических файлов совершенно разные.
Это так называемое смешанное выделение. В примере ниже вы можете увидеть контекстное меню для папки (слева) и для изображения (справа) - они сильно различаются.


Контекстное меню Windows для папок (слева) и графических файлов (справа)

Что же нам делать в случае смешанного выделения, какое контекстное меню использовать? Самый распространенный ответ - показывать контекстное меню для того объекта, на который пользователь навел курсор мыши.

Используйте контекстное меню объекта, на который наведен курсор мыши

Например, пользователь выбирает А, В и E смешанным выделением и вызывает контекстное меню на Е. Контекстное меню, которое вы видите это контекстное меню для Е (вы всегда будете видеть контекстное меню для объекта, на котором расположен курсор мыши).

Слева: Выделена папка А, показывается контекстное меню для папки.
В центре: Выделено изображение Е, показывается контекстное меню для графического файла Е.
Справа: Выделаны две папки (А и В) и графический файл Е, показывается контекстное меню для файла Е.


Контекстное меню в случае смешанного выделения

Однако если пользователь выберет из контекстного меню для файлов разного типа команду, которая может примениться ко всем выделенным объектам, следует сделать, чтобы это происходило. Так, если выбрана команда «Удалить», должны быть удалены все выделенные объекты, даже если это объекты разного типа.

С другой стороны, если пользователь вызовет меню для E и выберет команду, которая не может примениться к A и B, она применится только к E. Если пользователь выберет команду «Экспорт», и она может примениться только к E, только E будет экспортировано.

На двух рисунках ниже показано одно и то же выделение: A, B и E. На рисунке слева открыто контекстное меню на B, и мы видим меню для папок. На рисунке справа у нас выделены те же объекты, но меню открыто на E, и поэтому мы видим меню для файла изображения.


Вы будете удивлены - такой подход используется в подавляющем большинстве приложений, которыми вы регулярно пользуетесь. Задумайтесь об этом: если вы выберете команду «Удалить», то ожидаете, что удалятся все три объекта.
Это одна из тех вещей, которые звучат сложно, но работают для пользователей.

Проблема с таким подходом состоит в том, что он не всегда предсказуем . Выбирая «Экспорт» вы не знаете точно, какие из объектов будут экспортированы. Вы можете быть уверены в принципах работы такого подхода только в тех приложениях, которые уже хорошо знаете.
Для того, чтобы избавиться от такого несоответствия, я еще раз могу предложить использовать понятное название команд, например:

  • Удалить 3 файла
  • Экспортировать Скриншот.png
Думаю это сильно улучшит и упростит ситуацию.

Этот подход имеет одну сложность в реализации - вам нужно пройтись по всем командам во всех контекстных меню и подумать, какие команды можно применить в смешанных выделениях, а какие нельзя. Чем более похожи контекстные меню для разных объектов, тем проще будет эта задача для вас. В Mac OS X контекстные меню для папок и файлов почти одинаковые, что сильно упростило жизнь Apple.


Смешанное выделение и контекстные меню в OS X

Этот пример показывает, что лучший способ решить проблему это просто избежать ее появления. Другими словами, если вы постараетесь не использовать разные контекстные меню для разных объектов, то проблема, связанная со смешанным выделением не будет грозить вам.
Поэтому одним из решений было бы делать контекстные меню одинаковыми для всех типов объектов.

А что если сбрасывать выделение?

Если пользователь выделяет несколько объектов (например, А, В и Е), а затем вызывает контекстное меню на любом из объектов, выделение сбрасывается. Выделяется объект, на котором пользователь вызвал меню, и меню применяется только для этого объекта.

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

А что насчет построения нового меню?

Другим решением проблемы может стать создание нового контекстного меню, содержащего только команды, подходящие одновременно для всех выделенных объектов.

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

И что хуже всего - такой подход плох для самих пользователей . Это нестандартное решение и оно отторгается людьми. Пользователь в меню опирается на позиционную память (определенные паттерны, которые наш мозг формирует для облегчения сканирования интерфейса), то есть он помнит ГДЕ в меню находятся команды.

Когда вы показываете ему непривычные меню, изменяющиеся в зависимости от текущего выделения, вы вносите беспорядок в его позиционную память, из-за чего пользователь тратит больше времени на работу с меню.
То есть, из-за такого подхода пользователь может сделать больше ошибок и потратит больше времени - полная противоположность того, зачем мы вообще используем контекстные меню.

Выводы

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

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

Цель создания контекстного меню - экономия времени . Создавайте их такими, чтобы они действительно экономили время. Делайте их короткими и хорошо организованными.
Подумайте над путями совершенствования дизайна контекстного меню.

Я упоминала несколько идей: добавление контрола меню, который появляется при наведении мыши на объект; указание в меню, какие объекты затронет та или иная команда. Я уверена, возможностей для развития очень много. Не стесняйтесь брать за основу эту «стандартную» формулу и усовершенствовать ее.

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

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

Впрочем, открытию файлов с полными правами будет посвящена вторая часть статьи. А сегодня речь пойдет о пункте меню для открытия файлов с обычными правами . Этого достаточно в большинстве случаев, а при отключенном контроле учетных записей – всегда.

Цель — ускорение работы

Добавив возможность открытия файлов в любимой программе из контекстного меню, вы ускоряете свою работу в системе. Вам не нужно использовать диалоговое окно «Открыть с помощью», которое, кстати, бесполезно, если надо открыть файл с полными правами.

Блокнот, входящий в состав Windows 7, интегрирован в контекстное меню. Для многих типов файлов в нем отображается пункт «Изменить», с помощью которого файл можно быстро открыть в блокноте.

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

Не удивлюсь, если вместо блокнота вы используете сторонний редактор с более широкими возможностями. Большинство текстовых редакторов умеет интегрироваться в контекстное меню. Например, Notepad++ делает это самостоятельно, а — помощью плагинов.

Однако при включенном UAC этот способ не подходит для правки файлов в системных папках Program Files или Windows (классический пример — файл hosts ). Даже если файл откроется, сохранить изменения в нем не удастся.

Это происходит потому, что из контекстного меню редактор запускается с обычными правами, наследуя права проводника. А для сохранения файлов в системных папках нужны права администратора.

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

Добавление пункта в контекстное меню всех типов файлов

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

Ручная правка реестра

Пункт меню добавляется за три шага.

  1. Перейдите в раздел реестра HKEY_CLASSES_ROOT\*\shell

    Пункт меню, добавленный в этот раздел, отобразится для любого файла у всех пользователей.

  2. Создайте подраздел с любым именем, например, Editor , а в нем создайте строковые параметры:
  • Параметр MUIVerb (обязательный) отвечает за название пункта меню, поэтому значение можете выбирать любое. Я назвал свое Открыть в Блокноте .
  • Параметр Icon (необязательный) задает значок для пункта меню. Можно задать путь к библиотеке (dll) и номер ресурса (значка), либо полный путь к исполняемому файлу (если он в системной папке, достаточно указать только имя). Для своего пункта я задал стандартный значок notepad.exe .
  • Параметр Position (необязательный) отвечает за расположение пункта в контекстном меню. Вы можете задать ему значение Top (самый первый пункт меню) или Bottom (внизу меню). Если значение не задавать, пункт окажется в верхней части меню, после стандартных пунктов «Открыть», «Печать» и т.д.
  • Параметр Extended (необязательный) отвечает за отображение пункта в меню. Когда параметр присутствует, чтобы увидеть созданный пункт, нужно вызывать контекстное меню, удерживая нажатой клавишей SHIFT . Этому параметру не требуются значения.
  • В разделе Editor создайте подраздел command , а в нем дважды щелкните параметр (По умолчанию) и задайте значение notepad.exe %1

    Если вы прописываете сторонний редактор, укажите полный путь к нему. Например:

    C:\Program Files\Notepad++\notepad++.exe %1

  • В реестре это выглядит примерно так:


    REG-файл

    Вы можете импортировать приведенный ниже REG-файл, предварительно внеся в него необходимые правки.

    Windows Registry Editor Version 5.00 "MUIVerb"="Открыть в Блокноте" "Icon"="notepad.exe" ;"Position"="Bottom" ;"Extended"="" ;Блокнот @="notepad.exe %1" ;Notepad++ ; @="C:\\Program Files\\Notepad++\\notepad++.exe %1"

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

    Результат

    Все готово! В контекстном меню появился пункт Открыть в Блокноте , и он отображается для всех файлов.

    Трюк с добавлением пункта в контекстное меню файлов, конечно, не новый. С некоторыми вариациями он работает и в Windows XP, где названием пункта меню служит имя раздела реестра, а значки не поддерживаются.

    Несуществующий раздел реестра

    А вы знаете, что мы внесли изменения в несуществующий раздел реестра? Раздел HKEY_CLASSES_ROOT (HKCR) интересен тем, что он отсутствует физически. Под его видом в редакторе реестра отображаются совмещенные разделы:

    HKEY_LOCAL_MACHINE\SOFTWARE\Classes HKEY_CURRENT_USER\SOFTWARE\Classes

    В HKLM хранятся глобальные параметры для всех пользователей, а в HKCU – параметры текущего пользователя, при этом HKCU преобладает над HKLM. Поэтому разные пользователи могут сопоставлять различные программы одному типу файла. Это дает возможность каждому из них слушать музыку в любимом проигрывателе и путешествовать по Интернету в привычном браузере.

    Если вы хотите создать пункт меню только для своей учетной записи, вносите изменения в раздел HKEY_CURRENT_USER\SOFTWARE\Classes.

    Разработчики Windows позиционируют раздел HKCR для чтения, нежели для записи. Это не значит, что записывать туда данные неправильно. Когда вы вносите изменения в раздел HKCR, они записываются в HKEY_LOCAL_MACHINE\SOFTWARE\Classes. Это легко проверить – удалите созданный раздел Editor из HKLM, и он пропадет из HKCR.

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

    А у вас текстовый редактор интегрирован в контекстное меню? Какой редактор вы предпочитаете и почему?