Shruti91 Ответов: 2

Как открыть несколько файлов в одном экземпляре приложения?


Всем Привет,
Я хочу добавить несколько выбранных файлов в один ListView.
Моя программа создает контекстное меню "Добавить в программу" для всех файлов в Проводнике. Когда я выбираю один файл, это меню работает нормально, но когда я выбираю несколько файлов и нажимаю кнопку "Добавить в программу", он открывает несколько экземпляров программы, содержащих один-единственный файл.
Я приложил пример кода из своего проекта.

Что я уже пробовал:

private void Form1_Load(object sender, EventArgs e)
        {
            string fileName = Environment.GetCommandLineArgs()[1];
            FileInfo f = new FileInfo(fileName);
            //AddFileIconToImageList(fileName);
            listView1.Items.Add(f.Name, listView1.Items.Count);
        }

а в реестре
Раздел HKEY_CLASSES_ROOT-&ГТ;*-&ГТ;раковины-и gt;Добавить в программы->команда-&ГТ;(по умолчанию)C:\Program файлы (х86)\TestProject\AddToProgram\AddToProgram.exe "%1"

2 Ответов

Рейтинг:
1

Dave Kreskowiak

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

Теперь вы хотите, чтобы это приложение открывало несколько файлов.

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

Если внешнее приложение не является приложением, которое вы написали, вы не можете контролировать его самостоятельно. Внешнее приложение должно быть переписано его поставщиком, чтобы поддержать его. Это вряд ли произойдет.


Рейтинг:
0

OriginalGriff

Это сложно: аргументы командной строки ваших приложений никогда не меняются после запуска программы, и нет никакого "встроенного" способа для Windows передать новую информацию существующему экземпляру. И каждый экземпляр вашего приложения работает как отдельный процесс, поэтому они вообще не используют общую память или формы.

Хотя это возможно: Дважды щелкните файл в Проводнике и добавьте его в свое приложение во время его работы[^]


Shruti91

Спасибо вам, сэр, за решение. но можем ли мы добавить несколько файлов одновременно? например, winzip, который позволяет добавлять в него несколько файлов?

OriginalGriff

Ты говоришь о драг-н-дропе? потому что это тривиально ...

Shruti91

Нет, Drag n Drop реализован, никаких проблем. Я хочу добавить меню, такое как Winzip и WinRar "добавить в архив", которое также позволяет использовать несколько файлов.

OriginalGriff

Так в чем же проблема?
Помните, что мы получаем только то, что вы печатаете для работы - мы не получаем никакого дальнейшего контекста вообще.

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

Richard Deeming

Похоже, вы пытаетесь добавить обработчик контекстного меню оболочки:
.NET Shell Extensions - контекстные меню оболочки[^]