// проверяем наличие записей в реестре
RegistryKey RegKey = Registry.ClassesRoot.OpenSubKey(@"ADB_auto_file\shell\open\command", false);
RegistryKey IconKey = Registry.ClassesRoot.OpenSubKey(@"ADB_auto_file\DefaultIcon", false);
// если записей нету
if(RegKey == null)
{
// создать записи
RegKey = Registry.ClassesRoot.CreateSubKey(@".ADB");
RegKey.SetValue("", "ADB_auto_file");
RegKey = Registry.ClassesRoot.CreateSubKey(@"ADB_auto_file");
RegKey.SetValue("", "Здесь описание типа файла");
Byte[] bVal1 = {0,0,0,0};
RegKey.SetValue("EditFlags", bVal1);
RegistryKey DIRegKey = RegKey.CreateSubKey(@"DefaultIcon");
// путь к иконке
DIRegKey.SetValue("", Application.ExecutablePath+"\\App.ico");
RegKey = RegKey.CreateSubKey(@"shell\open");
Byte[] bVal2 = {1,0,0,0};
RegKey.SetValue("EditFlags", bVal2);
RegKey = RegKey.CreateSubKey(@"command");
// путь к программе
RegKey.SetValue("", "\""+Application.ExecutablePath+"\" \"%1\"");
}
Как создать свой тип файлов программно
Вот интерестная задача: мне надо, чтобы какой-то тип файлов открывался с помощью моей проги. Желательно исходник. Заранее благодарен
Долго я думал... и плакал...
Начни с формата .txt и выводи оттуда всё. Каждый байт. Как есть.
А если речь всё-таки о том, как открыть файл, то используй такие функции вин апи:
CreateFile - открываем файл
SetFilePointer - помещаем файловый указатель нужное место
ReadFile - читаем с этого места
CloseHandle - закрываем файл
стандартное предопределенное окно открыть файл вызывается функцией - GetOрenFileName.
Если тебе хочется сделать, чтобы по двойному щелчку на каком-то файле ТВОЕГО типа запускалась твоя прога и открывала его, то нужно в реестре прописать тип файла в секции HKEY_CLASSES_ROOT,
а в прогу в командной строке в этом случае будет передаваться имя файла, который необходимо открыть
System::Diagnostics.Process.Start("Твоя прога","Имя файла");
System.Diagnostics.Process.Start("Твоя прога","Имя файла");
Цитата: TZA Group
Непонел!!!А причём тут вообщё этот смайлик ?????
очень просто: знак двоеточие и большая анг. буква D равны этому смайлику. просто надо отключать смайлы, особенно когда пишешь код на С++.
Я вот точно не поняла связь опроса автора и заданного им вопросом :confused:
Да, в HKEY_CLASSES_ROOT можно чуть чего-то вписать, но что??? А отловить аргументы я умею.
"Фомин Г.В С# 2,0 в чёрном окне"
Я свою куда-то дел.
Все елементарно делается.
Assoc - Вывод или изменение связи между расширениями имени и типами файлов. Запущенная без параметров команда assoc выводит список текущих связей между расширениями имени и типами файлов.
assoc [.рсш[=[тип_файла]]]
Ftype - Вывод или редактирование связи между типом файла и его расширением. Для просмотра текущих назначений служит команда ftype без параметров.
Ftype [тип_файла[=[команда_открытия]]]
Пример:
ASSOC .my=MyFile FTYPE MyFile=Proga.exe %1
Можно использовать криптографию. К примеру в своём файле букву а заменяй на я, б на и, в на д и т.д. В итоге при открытии файла в твоей проге, файл будет преобразован (надо писать преобразование), а в другой программе (например, блокнот) он откроется как текстовый файл и пользователь не поймёт, что было написано.