Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Shue
23 / 23 / 4
Регистрация: 07.02.2011
Сообщений: 163
1

Привязка приложения к файлу с определенным расширением

09.02.2012, 18:40. Просмотров 2311. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Как осуществить такую привязку: мое приложение формирует файлы с определенным расширением. Нужно чтобы при запуске таких файлов запускалась моя прога и выполнялась например функция fileOpen(а тут файл который мы запустили). Ну еще значок по умолчанию сделать соответствующий (иконку таких файлов)
Это где-то в реестре, наверное. Если так, то как это туда записать? (из моего приложения естественно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2012, 18:40
Ответы с готовыми решениями:

Привязка файла с расширением к приложению
Имеется приложение. В приложении сохраняются файлы с расширением, скажем, .ext...

Привязка к исполняемому файлу и нажатия клавиш
Всем привет! Прошу помочь пораскинуть мыслями, может вы сможете что-то...

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

Кликнуть по файлу из другого приложения
весь вечер ломал голову как кликнуть по одному из файлов из списка(пример в...

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

6
r0fL
Кодило
237 / 164 / 23
Регистрация: 25.11.2009
Сообщений: 685
09.02.2012, 20:48 2
http://www.cyberforum.ru/csharp-net/...ml#post2439816
1
Shue
23 / 23 / 4
Регистрация: 07.02.2011
Сообщений: 163
10.02.2012, 16:41  [ТС] 3
Поискав материал, сделал так:
класс:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class FileAssociation
    {
        // Associate file extension with progID, description, icon and application
        public static void Associate(string extension, string progID, string description, string icon, string application)
        {
            Registry.ClassesRoot.CreateSubKey(extension).SetValue("", progID);
            if (progID != null && progID.Length > 0)
                using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(progID))
                {
                    if (description != null)
                        key.SetValue("", description);
                    if (icon != null)
                        key.CreateSubKey("Icon_for_" + extension).SetValue("", ToShortPathName(icon));
                    if (application != null)
                        key.CreateSubKey(@"Shell\Open\Command").SetValue("",
                                    ToShortPathName(application) + " \"%1\"");
                }
        }
 
        // Return true if extension already associated in registry
        public static bool IsAssociated(string extension)
        {
            return (Registry.ClassesRoot.OpenSubKey(extension, false) != null);
        }
 
        [DllImport("Kernel32.dll")]
        private static extern uint GetShortPathName(string lpszLongPath,
            [Out] StringBuilder lpszShortPath, uint cchBuffer);
 
        // Return short path format of a file name
        private static string ToShortPathName(string longName)
        {
            StringBuilder s = new StringBuilder(1000);
            uint iSize = (uint)s.Capacity;
            uint iRet = GetShortPathName(longName, s, iSize);
            return s.ToString();
        }
    }
и сама ассоциация:
C#
1
2
3
4
5
6
7
8
9
10
        void association()
        {
            string ico = Application.StartupPath + "\\icon.ico";
            string exe = Application.ExecutablePath;
 
            if (FileAssociation.IsAssociated(".asdf") || !FileAssociation.IsAssociated(".asdf"))
            {
                FileAssociation.Associate(".asdf", "proga", ".asdf", ico, exe);
            }
        }
Все нормально, в реестр добавляется, если кликнуть на файл с расширением ".asdf" приложение запускается. Но есть одно "но": не применяется иконка. Как была стандартной иконкой неизвестного файла, так и осталась. В чем дело?

Добавлено через 1 час 24 минуты
Все работает. Тему можно закрыть.
1
nio
5954 / 3360 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.02.2012, 17:28 4
Цитата Сообщение от Shue Посмотреть сообщение
Все работает. Тему можно закрыть.
ну поделись секретной разработкой
1
Shue
23 / 23 / 4
Регистрация: 07.02.2011
Сообщений: 163
10.02.2012, 18:50  [ТС] 5
Цитата Сообщение от nio Посмотреть сообщение
ну поделись секретной разработкой
да я тупанул походу, она изначально работала. в XP (работаю в студии на виртуалке) не отображалось - думал, может перезагрузить надо систему, ведь изменения, внесенные в реестр вступают в силу после перезагрузки - не помогло, перенес exe-шник в 7-ку там все нормально (значки отображаются на файлах с соответствующим расширением) сразу без перезагрузки.
0
KWMQ
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 15
22.09.2015, 23:21 6
А как сделать, что бы после повторного клика на файле приложение не запустилось заного, а в уже открытом приложении открылся выбранный файл?
0
Moloch
124 / 118 / 68
Регистрация: 27.08.2015
Сообщений: 232
23.09.2015, 12:47 7
Цитата Сообщение от KWMQ Посмотреть сообщение
А как сделать, что бы после повторного клика на файле приложение не запустилось заного, а в уже открытом приложении открылся выбранный файл?
Ассоциация файлов с приложением
0
23.09.2015, 12:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2015, 12:47

Рекурсивный поиск файла с определенным расширением
Всем доброго времени суток.Рекурсивно перебираю все каталоги и выбираю...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru