Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ассоциации и расширения файлов

3.0K
25 июля 2006 года
Oxaid
63 / / 02.04.2006
Как в шарпе узнать с каким расширением файлов какая программа просмоторщик ассоциирована?
273
28 июля 2006 года
3A3-968M
1.2K / / 22.12.2005
[quote=Oxaid]Как в шарпе узнать с каким расширением файлов какая программа просмоторщик ассоциирована?[/quote]
С помощью "чистого" .NET Framework никак, так как среда должна быть независимой от аппаратной и (частично) программной платформы. Ведь в Linux'е нет ассоциаций, а .NET-приложения там запускаются (при наличии Mono). Можно узнать то что ты хочешь при помощи WinAPI. Нам нужна функция FindExecutable из shell32.dll. Её прототип выглядит так:
 
Код:
[FONT=Courier New]HINSTANCE FindExecutable([/FONT]
[FONT=Courier New]    LPCTSTR lpFile, // путь к файлу
    LPCTSTR lpDirectory, // директория по умолчанию
    LPTSTR lpResult  // строковый буффер для возвращаемой строки
   );[/FONT]

Переписываем её на C#:
 
Код:
[SIZE=2][FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]DllImport[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"shell32.dll"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])][/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#0000ff]extern[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080]IntPtr[/COLOR][/SIZE][SIZE=2] FindExecutable([/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] lpFile, [/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] lpDirectory,[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]out[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080]StringBuilder[/COLOR][/SIZE][SIZE=2] lpResult);
[/SIZE][/FONT]

Пример её вызова:
 
Код:
[SIZE=2][COLOR=#008080][FONT=Courier New]StringBuilder[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2] targetExe = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080]StringBuilder[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]();[/FONT]
[FONT=Courier New]FindExecutable([/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]"D:\\Icons\\Setup.bmp"[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#800000]"D:\\Icons\\"[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#0000ff]out[/COLOR][/SIZE][SIZE=2] targetExe);
[/SIZE][/FONT]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог