вторник, 1 февраля 2011 г.

Секреты контекстного меню проводника в Windows 7 - Copy as Path.

   Как известно, в Windows 7 разработчики Microsoft добавили много новых возможностей, некоторые из скрыты. Например "Секреты контекстного меню проводника", когда удерживая клавишу Shift, можно получить доступ к различным скрытым пунктам меню проводника операционной системы.

   Таким образом, например, щелкнув правой клавишей мыши по ярлыку, можно активировать пункты Run as different user и Copy as Path, а если аналогичным образом кликнуть по папке, то список доступных команд пополнится инструкциями Open in New Process и Open Command Window Here.


   И мне стало интересно, а можно ли сделать эти скрытые пункты меню проводника "открытыми", т.е. видимыми всегда (без необходимости удерживания клавиши Shift). Так получилось, что объектом этого маленького исследования стал пункт меню "Copy as Path", так что по поводу остальных я пока ничего не могу утверждать.

   Так вот - ответ отрицательный. Никакими манипуляциями (с реестром, настройками и т.д.) этот пункт нельзя сделать видимым всегда, т.к. эта функциональность жестко забита в код:

   Вот как примерно выглядит метод CCopyAsPathMenu::QueryContextMenu:
STDMETHODIMP CCopyAsPathMenu::QueryContextMenu(HMENU hmenu, UINT indexMenu, 
  UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
{
  HRESULT hr = SEVERITY_SUCCESS;
  WCHAR NewItem[80] = {0};
  if ( uFlags & CMF_EXTENDEDVERBS )
  {
    if ( !(uFlags & (CMF_DEFAULTONLY or CMF_VERBSONLY)) )
    {
      LoadStringW(g_hinst, IDS_COPYASPATHMENU, NewItem, 80); 
      InsertMenuW(hmenu, indexMenu, MF_BYPOSITION, idCmdFirst, NewItem);
      hr = MAKE_HRESULT(SEVERITY_SUCCESS, 0, 1);
    }
  }
  return hr
}

   Как видно, данный пункт меню добавляется, если не указан параметр CMF_EXTENDEDVERBS. А как следует из описания параметров метода IContextMenu::QueryContextMenu:


   CMF_EXTENDEDVERBS (0x00000100)

      0x00000100. The calling application wants extended verbs. Normal verbs are displayed when the user right-clicks an object. To display extended verbs, the user must right-click while pressing the SHIFT key.


Комментариев нет:

Отправить комментарий