Winform приложение для запуска и чтения из файла с пользовательским расширением - PullRequest
4 голосов
/ 27 января 2010

Я создаю приложение Windows Form с использованием C #, которое необходимо запустить, когда пользователь нажимает на файл с пользовательским расширением (например, filename.mycustomextension) Я планирую поместить URL-адрес в файл filename.mycustomextension. когда пользователь нажимает на этот файл, мы запускаем приложение winform, а также читаем содержимое этого файла. Возможно ли это сделать?

Ответы [ 3 ]

6 голосов
/ 27 января 2010

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

MSDN - Рекомендации по сопоставлению файлов

Тогда оттуда все довольно просто.


   static class Program
    {    
        [STAThread]
        static void Main()
        {
            string[] args = Environment.GetCommandLineArgs(); 
            string text = File.ReadAllText(args[1]);

            // ...
        }
    }

  • args [0] - путь к приложению.
  • args [1] будет путем к файлу.
  • args [n] будет любыми другими переданными аргументами.

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

http://www.hanselman.com/blog/CommentView.aspx?guid=d2f676ea-025b-4fd6-ae79-80b04a34f24c

1 голос
/ 27 января 2010

Да, это возможно.

Идея состоит в том, что при нажатии на ваше приложение вы изменяете раздел реестра, чтобы связать файл расширения с вашим приложением.

Вот эскизы:

  1. Используйте класс FileAssociation из здесь .
  2. Инициализируйте его, установите все параметры.

Вот пример:

            var FA = new FileAssociation();
            FA.Extension = "blah";
            FA.ContentType = "application/blah";
            FA.FullName = "blah Project File";
            FA.ProperName = "blahFile";
            FA.AddCommand("open", string.Format("\"{0}\" \"%1\"", System.Reflection.Assembly.GetExecutingAssembly().Location));
            //"C:\\mydir\\myprog.exe %1");
            FA.IconPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            FA.IconIndex = 0;
            FA.Create();
0 голосов
/ 27 января 2010

Если вы планируете запускать свое приложение из браузера, тогда есть проблемы с безопасностью, но кроме этого - да.

Вам просто нужно установить приложение на компьютер пользователя и связать ваше расширение .mycustomextension с приложением. http://support.microsoft.com/kb/185453

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