Member 13566383 Ответов: 2

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


У меня есть файлы с моим собственным специальным типом файлов, которые я хочу открыть в своем собственном приложении, дважды щелкнув имя файла в проводнике windows.
Это прекрасно работает: приложение получает имя файла в качестве аргумента для Main()-программы.

Моя проблема: когда я пытаюсь открыть второй файл, открывается новый экземпляр моего приложения. Это не то, чего я хочу. Я скорее хочу, чтобы второй файл открывался в уже запущенном экземпляре (как, например, стандартное поведение acrobat reader).
Есть какие-нибудь намеки, как это реализовать?

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

Я попытался найти решение в сети, но безуспешно.

2 Ответов

Рейтинг:
2

OriginalGriff

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

Он делает именно то, что я сказал сделать в первоначальном ответе.


Member 13566383

Он уже работает. Действительно требовалось немногим больше, чем копирование и вставка.
Еще раз большое вам спасибо.

OriginalGriff

Всегда пожалуйста!

Рейтинг:
14

OriginalGriff

Это сложно, потому что Windows не настроена делать это за вас - приложения должны принимать аргумент командной строки, но как только они запущены, вы не можете добавлять или иным образом изменять эту коллекцию.

Поэтому ваше приложение должно быть "осведомлено": когда оно запускается, оно проверяет наличие и существующий экземпляр (что довольно просто: Простой способ убедиться, что работает только один экземпляр.[^] должен помочь), а если таковой есть, то поговорите с ним и передайте данные файла.
Это должен делать сокет в отдельной задаче, постоянно прослушивающий соединения.


Member 13566383

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

OriginalGriff

Добро пожаловать - есть много простых примеров того, как делать сокеты, доступных как на CP:
https://www.codeproject.com/search.aspx?q=basic+розетки и усилителя;х=0&амп;М=0&амп;СБО=кВт
и Google:
https://www.google.com/search-что?q=basic+Sockets+c%23&oq=basic+Sockets+c%23&aqs=chrome..69i57j0l2.7639j0j7&sourceid=chrome&ie=UTF-8

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