C # Добавить пользовательское контекстное меню Windows только для этой программы - PullRequest
0 голосов
/ 24 октября 2018

Мой вопрос: как добавить пункт контекстного меню Windows для конкретного приложения, а не глобально?

Краткое описание : Мы используем Access (стон) для нашей системы CRM.Мы используем базовый процесс «копировать в локальный» для множественного доступа.Я написал C # «модуль запуска», который обрабатывает это намного лучше, чем файл .bat (они нажимают на модуль запуска, модуль запуска загружает базу данных, запускает базу данных и завершает работу).В настоящее время я также использую консольное приложение C # для управления разработкой, автоматизации таких вещей, как увеличение номера версии, перемещение файлов и т. Д.


Мой вопрос / цель : я хочу объединить двапрограммы в одну, но я не хочу препятствовать запуску от его главной цели, заставляя пользователя спрашивать, хотят ли они развиваться или нет.Я тоже использую этот лаунчер, так как я в основном оценщик, поэтому хочу объединить их.Я читал, что вы можете добавить пункты контекстного меню в Windows в целом, но я хочу иметь возможность добавить опцию запуска в контекстное меню просто для этого приложения.то есть щелчок правой кнопкой мыши по программе, обычные пункты меню, но с добавлением «Режим разработки», это открывает программу с аргументами, которые я могу использовать вместо этого, чтобы открыть окно / консоль разработки.


На заметку :

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

Заранее спасибо

РЕДАКТИРОВАТЬ: Панель запуска создана и запускается как приложение, запускаемое нажатием одной кнопки.

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Согласно предложению в комментарии, это пошло по некоторой причине.Я собираюсь вернуться к нажатию клавиши, но вместо этого использовать shift или «R».

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

0 голосов
/ 25 марта 2019

В дополнение к этому я наткнулся на некоторый код, чтобы сделать эту работу.Надеюсь, это поможет кому-то в будущем.Я делаю это в WPF, но я уверен, что вы могли бы адаптировать этот код для работы в другом месте.

1) App.xaml - Добавление действия JumpList

После (не внутри) свойства Application.Resources добавьте следующее и измените по своему вкусу (Естьмного свойств, которые я не использовал для разработки, проверьте ссылку, чтобы узнать больше):

<Application.Resources>
...
</Application.Resources>
<JumpList.JumpList>
    <JumpList ShowRecentCategory="False"
              ShowFrequentCategory="False">
        <JumpTask Title="Open Dev Mode" 
                  Description="Use this to enter dev mode (admins only)"
                  Arguments="DevMode:true"/>
    </JumpList>
</JumpList.JumpList>

Это создаст «Задачу» в списке переходов:

enter image description here

2) Создать глобальный статический класс - это позволит вам сохранить переменную для последующего использования в других формах.

public static class Global
{
    public static Boolean DevMode = false;
}

3) App.xaml.cs - Добавление OnStartup обработчик

Внутри класса App создайте метод переопределения для OnStartup

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        Global.DevMode = Boolean.Parse(e.Args.FirstOrDefault().ToString().Split(':')[1]);
    }
}

4) Считайте переменную в вашей форме, используя Global.DevMode

private void Window_ContentRendered(object sender, EventArgs e)
{
    if (Global.DevMode) RunYourDevScript();
} 
0 голосов
/ 24 октября 2018

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

    static void Main(string[] args)
    {
        /* here normal flow of the launcher*/

        if (args[0] == "-dev")
        {
            /*here de developer mode*/
            Console.WriteLine("Developer mode activated");
        }
    }

Способ его использования прост: вы делаете ярлык, и там, где говорится, что ярлык цели у вас будет что-то вроде этого "C: \ Users **** \Документы \ visual studio 2017 \ Projects \ Test \ Test \ bin \ Debug \ Test.exe ", и вы должны изменить его на что-то вроде этого: C: \ Users **** \ Documents \ visual studio 2017 \ Projects \ Test \ Test\ bin \ Debug \ Test.exe "-dev

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