Как программы обрабатывают файл, «открытый с ...» им? - PullRequest
2 голосов
/ 14 апреля 2010

Мне интересно, может ли кто-нибудь указать мне правильное направление. Вы знаете, как, например, в большинстве IDE, если вы открываете исходный файл с помощью «open with», он запускает программу и открывает ее? и затем, если вы откроете другую, она откроет ее на новой вкладке в том же процессе?

Мой вопрос не в том, как добавить программу в команды оболочки, а скорее:

  1. Как приложение C # "получит" файл PDF, например?

  2. Как приложение откроет файл в том же процессе, когда с ним запускается другой файл (без экземпляров программы)?

Ответы [ 4 ]

5 голосов
/ 14 апреля 2010

Когда запускается второй экземпляр программы, перед загрузкой любых компонентов интерфейса , он проверяет, запущен ли уже другой экземпляр программы . Если это так, он сообщает ему некоторым образом (специфично для программы: это могут быть сокеты, межпроцессные прерывания, общая память и т. Д.), Что он должен открыть этот новый файл.

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

1 голос
/ 14 апреля 2010

Вот очень подробный пост, объясняющий правильную реализацию:

http://www.iridescence.no/post/CreatingaSingleInstanceApplicationinC.aspx

Этот поток содержит обсуждение и пример для обработки аргументов командной строки (именно так файлы "передаются" в ваше приложение): http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic62109.aspx

1 голос
/ 14 апреля 2010

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

0 голосов
/ 14 апреля 2010

Программы Microsoft обычно имеют ключ ddeexec в конфигурации оболочки; это заставит оболочку отправлять команду DDE уже запущенному приложению, если оно существует.

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