Как открыть файлы из проводника в разные вкладки - PullRequest
1 голос
/ 03 февраля 2009

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

Позвольте мне прояснить: я хочу, чтобы мое приложение было единичным экземпляром, чтобы, когда пользователь выбрал 10 текстовых файлов и нажал клавишу ввода, мое приложение открыло все 10 текстовых файлов на 10 вкладках вместо создания 10 процессов. Как это сделать? Как общаться между различными экземплярами одного и того же процесса.

РЕДАКТИРОВАТЬ РЕШЕНО: Реализована функциональность с использованием WM_COPYDATA в C # и класса SingleApplication из codeproject.

1 Ответ

1 голос
/ 03 февраля 2009

Я не совсем уверен, что вы имеете в виду в этом вопросе. Вы пытаетесь открыть окна Windows Explorer в одно окно с вкладками? Если это так, то я рекомендую вам взглянуть на QT TabBar , который расширяет возможности проводника Windows для такого поведения.

Или, возможно, вы пытаетесь открыть ссылку на новую вкладку в веб-браузере. В этом случае это поведение определяется самим веб-браузером. Для Internet Explorer 7 вы можете установить это поведение в Инструменты > Свойства обозревателя .

На вкладке Общие нажмите кнопку Настройки рядом с разделом «Вкладки». Вы захотите установить опцию «Открыть ссылки из других программ в:», чтобы открыть новую вкладку.

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


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

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

Вот фрагмент кода с их сайта:

static void Main() 
{
   if(SingleInstance.SingleApplication.Run() == false)
   {
      return;
   }
   //Write your program logic here
}

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

Если вы в состоянии предоставить подробную информацию о том, что делает ваша программа, мы могли бы помочь вам с некоторыми особенностями.

...