есть ли хак для отключения пунктов всплывающего меню в стороннем приложении, например Visual Studio? - PullRequest
1 голос
/ 20 марта 2011

мотивация для этого вопроса - мое несчастье с графическим интерфейсом Visual Studio, но это может иметь более широкие последствия.

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

Итак, я понимаю, что не могу ожидать, что Microsoft (не говоря уже о небольших компаниях) добавит настройку для каждого пункта меню. Но, может быть, есть взлом Windows, который может позволить мне отключить такие пункты меню и другие элементы пользовательского интерфейса? Допустим, «закрыть все, кроме этого» можно обнаружить по его отдельному имени, поэтому, если нижележащий компонент каким-то образом доступен для взлома, возможно, его можно было бы всегда отключать при отображении такого текста, если пользователь не перепрыгивает через обручи для отмены ограничение.

Так как эти вещи работают? В какой степени мы можем связываться с пользовательским интерфейсом сторонних приложений Windows? Что можно и нельзя сделать?

Ответы [ 3 ]

2 голосов
/ 20 марта 2011

Итак, я понимаю, что не могу ожидать, что Microsoft (не говоря уже о небольших компаниях) добавит настройку для каждого пункта меню

Что ж, они и сделали.В любом случае, как и в Microsoft, это обычно встречается в хорошо спроектированных интерфейсах, подобных Visual Studio.Вы используете Инструменты + Настройка, вкладка Команды, переключатель контекстного меню, «Другие контекстные меню | Окно документа Easy MDI».Удалите / добавьте то, что вам не нравится / нравится.

Нажмите немного, чтобы увидеть, что вы можете сделать.Не бойтесь меню.

Если возможности нет, возможно, будет возможно взломать меню, если оно сохранено как собственный ресурс.Файл + Открыть + Файл, выбрать .exe и просмотреть узлы меню.В наши дни более не принято использовать родные меню.Много возможностей для неприятностей.Взлом программы с помощью хука, установленного SetWindowsHookEx (), является еще одним выстрелом на дальние расстояния.

0 голосов
/ 23 мая 2011

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

Это дочерняя форма:

private void Form2_Load(object sender, EventArgs e)
{
    MDI.MDIParent1.ActiveForm.MainMenuStrip.Items[0].ToolTipText = "Disable";
}

Это код родительского MID:

Интервал таймера1000 миллисекунд, и он включен на MDIParent1_Load.fileMenu - это строка меню в родительском объекте MDI, а aboutToolStripMenuItem - это контекстное меню в родительском объекте MDI.

private void timer1_Tick(object sender, EventArgs e)
{
    if (fileMenu.ToolTipText == "Disable")
    {
        aboutToolStripMenuItem.Enabled = false;
    }
}
0 голосов
/ 20 марта 2011

Visual Studio (вы не сказали, какая версия) имеет SDK расширяемости и возможность загружать надстройки и расширения, которые могут позволить вам это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...