Я отправил еще один вопрос о получении аргументов из контекстного меню App. Если вы выберете элемент, он даст строковый путь к этому элементу, но он запустит новый экземпляр приложения для каждого элемента, выбранного более одного. С Environment.GetCommandLineArgs() он дает строковый массив с первым элементом - это .exe, вызывающий функцию, а второй элемент - путь строки выбранного элемента. Опять же, если я выберу 2 или более пунктов и щелкните правой кнопкой мыши >> запустите приложение, я получаю 2 или более экземпляра приложения, каждый из которых имеет первый элемент в качестве .exe, за которым следует второй элемент как один из выбранных элементов. (Я сделал это с MessageBox.Show() после присоединения к двум элементам, и он всплывает окно сообщения 3 раза, по 1 для каждого из трех выбранных элементов).C# Environment.GetCommandLineArgs() из контекстного меню
Теперь я использую Mutex, чтобы позволить ему запускать один раз, но я получаю только первое окно сообщения (как и ожидалось).
Как я могу получить все элементы, перечисленные в одном экземпляре, если я выбираю более одного элемента?
Вот код без взаимной блокировки:
static void Main()
{
String[] args = Environment.GetCommandLineArgs();
var message = string.Join(", ", args);
MessageBox.Show(message);
}
А вот с мьютекс:
static void Main()
{
Mutex startOnlyOne = new Mutex(false, "WinSyncSingalInstanceMutx");
if (startOnlyOne.WaitOne(0, false))
{
String[] args = Environment.GetCommandLineArgs();
var message = string.Join(", ", args);
MessageBox.Show(message);
startOnlyOne.Close();
}
Никто не был в состоянии помочь мне с этим все же, я надеюсь, что кто-то может помочь я понимаю это. Заранее спасибо ...
Вы используете много местоимений, которые затрудняют понимание того, что вы делаете. Вы говорите «он делает X», не уточняя, что такое «оно», например. –
Приложение представляет собой контекстное меню Windows Приложение ... выберите файл на рабочем столе и щелкните правой кнопкой мыши ... в этом контекстном меню - мое приложение. Выберите приложение, и он получит путь к файлу выбранного файла и добавит его в коллекцию (если выбрано несколько файлов, он должен добавить в коллекцию более одного пути к файлу). Помогает ли это вообще? –
Итак, вы имеете в виду, что ваша программа является расширением оболочки? –