Как установить ассоциацию типов файлов в C # - PullRequest
0 голосов
/ 16 января 2012

У меня есть приложение MDI. Это приложение MDI имеет множество других инструментов, включая редактор. Я хотел бы открыть все файлы «.txt» в редакторе моего MDI-приложения, что сделало мое приложение средством просмотра по умолчанию для всех «.txt» -файлов.

Всякий раз, когда пользователь редактирует файл ".txt", приложение MDI должно запускаться, и в окне редактора должно быть содержимое выбранного файла ".txt".

Есть ли способ, которым я могу сделать это, пожалуйста.

Спасибо

Ответы [ 3 ]

4 голосов
/ 16 января 2012

В моем приложении я делаю это при запуске:

[System.Runtime.InteropServices.DllImport("Shell32.dll")]
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);

private void GetDefaultsFromRegistry()
{
    if (Registry.GetValue("HKEY_CLASSES_ROOT\\MyApp", String.Empty, String.Empty) == null)
    {
        Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\MyApp", "", "My File Type");
        Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\MyApp", "FriendlyTypeName", "My Friendly Type Name");
        Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\MyApp\\shell\\open\\command", "", 
            "path\\to\\my\\app \"%1\"");
        Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\.ext", "", "MyApp");

        //this call notifies Windows that it needs to redo the file associations and icons
        SHChangeNotify(0x08000000, 0x2000, IntPtr.Zero, IntPtr.Zero);
    }
}

Разумеется, со всеми путями, именами и расширениями, измененными для вашего приложения.

Будьте осторожны с перепискойоднако пользовательская ассоциация .txt.Я проверяю назначение при каждом запуске, потому что мое приложение использует пользовательский тип и разворачивается только в системах с внутренним отображением.Я не знаю, где развертывается ваше приложение, но я был бы очень раздражен, если бы какая-то случайная утилита, которую я скачал из Интернета, постоянно меняла мою ассоциацию файлов .txt, и я уверен, что многие другие люди тоже будут.

3 голосов
/ 16 января 2012

Вам необходимо изменить этот ключ:

HKCR\txtfile\shell\open\command

Измените значение по умолчанию для вашей программы с% 1 в конце для параметров. Затем в вашей программе обработайте аргументы командной строки, чтобы сделать то, что вы хотите с ней.

2 голосов
/ 16 января 2012

Сопоставление файлов можно программно выполнить, например, this или с помощью ключа реестра, например this

.
...