Steam-x |
Отправлено: 31.07.2003, 16:40 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
Привет Всем!
У меня тут возник маленький вопросик.
Вот его краткое содержание:
Есть толпа самых различных файлов (имется ввиду различное расширение файлов). Если машина девственно чиста, как простыни после ACE и тети Аси, то все файлы отображаются, в графических файловых менеджерах, с иконкой в виде беленького прямоугольника, за исключением файлов которые знает Windows. И вот мы ставим Word — и случилось чудо, иконка преобразилась букву W, ставим winamp и файлы с расширением *.mp3 тоже стали красивыми и их стало из далека видать.
Минуточку внимания прослушайте вопрос!
- Как сделать так чтобы после того как на машине появилась моя программа у файлов с необходимым мне расширением появилась моя иконка. И как сделать так чтобы можно было как в winampe выбирать разные иконки.
Спасибо за внимание!
|
|
seg_r |
Отправлено: 31.07.2003, 18:00 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 74
|
Есть такая прекрасная вещь, реестр Винды, там прописываются всякие разные херни и не очень, также там есть и описание типов файлов, создаешь нужный тип или меняешь старый, а с иконками это уже твоя фантазия, пиши прогу, которая будет красиво отображать выбор иконок ну вот так ... |
|
Steam-x |
Отправлено: 01.08.2003, 08:41 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
QUOTE (seg_r @ 31/07/2003, 19:02) | Есть такая прекрасная вещь, реестр Винды, там прописываются всякие разные херни и не очень, также там есть и описание типов файлов, |
Про существование реестра я знаю, и спасибо за напоминание, но как все это делается практически...
|
|
seg_r |
Отправлено: 01.08.2003, 09:25 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 74
|
создай какой-нить тип средствами винды (проводник, типы файлов...)
и проследи как все это в реестре поменялось и написалось... |
|
Георгий |
Отправлено: 01.08.2003, 11:42 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
погуляй по FAQ к Windows там и должно быть это написано. приличное FAQ я вроде на 3dnews.ru видел |
|
Eugene |
Отправлено: 04.08.2003, 14:15 |
|
Не зарегистрирован
|
В HKEY_CLASSES_ROOT создайте свой раздел (например .txt), измените параметр по умолчанию на txt_file (или что-то вроде этого), теперь создайте раздел txt_file (в HKEY_CLASSES_ROOT), в нем — DefaultIcon и измените параметр по умолчанию на имя файла (.exe, .dll, .ico и т.д.) |
|
Admin |
Отправлено: 04.08.2003, 15:47 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Article #17867: Creating a file association for my application?
и посмотрите ответ по теме:
http://www.rxlib.ru/forums/index.php?t=251&view=new
|
|
Gedeon |
Отправлено: 05.08.2003, 17:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Вопрос: Как программно зарегистрировать собственное расширение для файлов в WINDOWS?
Ответ :
code:
--------------------------------------------------------------------------------
TRegistry *Reg;
AnsiString asFileName;
Reg = NULL;
try
{
Reg = new TRegistry;
Reg->RootKey = HKEY_CLASSES_ROOT;
Reg->OpenKey("\\.vdv", true);
Reg->WriteString("", "MyProg");
Reg->CloseKey();
Reg->OpenKey("\\MyProg", true);
Reg->WriteString("", "My document");
Reg->CloseKey();
Reg->OpenKey("\\MyProg\\Shell\\Open\\Command", true);
Reg->WriteString("", ParamStr(0) + " \"%1\"");
Reg->CloseKey();
Reg->OpenKey("\\MyProg\\DefaultIcon", true);
Reg->WriteString("", ParamStr(0) + ", 1");
Reg->CloseKey();
}
__finally
{
if (Reg != NULL)
{
delete Reg;
}
}
if (ParamCount> 0)
{
asFileName = ParamStr(1);
if (FileExists(asFileName))
{
Memo1->Lines->LoadFromFile(asFileName);
}
else
{
ShowMessage(asFileName + " не существует");
}
}
--------------------------------------------------------------------------------
Этот пример срегистрирует расширение *.vdv
И при клике на файл с таким расширением загружает текст из него в
Memo1.
Reg->OpenKey("\\MyProg\\DefaultIcon", true);
Последний параметр имеет не булевый тип, а целочисленный.
Определяет номер иконки из .exe.
И если, например, будет стоять 2, то иконка файла будет показана вторая.
Я так делал для возможности выбора оной из множества.
--------------------------------------------------------------------------------
|
|
Steam-x |
Отправлено: 14.08.2003, 09:23 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
Так, с иконкой на файле разобрался, но теперь возникла другая проблема — основная иконка на ехе-нике берется из рез-файла и она первая по списку, из 3-х возможных, а мне необходимо поставить третью. Причем, когда я в проекте подгружаю иконку, то на форме отображается необходимая мне иконка, а на панели задач Виндов и в файл-менеджерах первая из рез-файла.
Вопрос: Как сделать так, чтобы на ехе-нике висела нужная мне иконка, и можно было бы выбрать из рез-файла любую иконку?
Фух! Очень запутанно, но я надеюсь идея понятна.
|
|
Steam-x |
Отправлено: 21.08.2003, 09:27 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
Ау!
Обратите внимание на наше восклицание!(перефразирую песню)
Как вытянуть нужную иконку из рез-файла, если в этом файле несколько иконок?????
|
|
Георгий |
Отправлено: 21.08.2003, 20:23 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
Эх... Никак! В M$ кто-то решил, что показывать надо именно первую картинку — вот её и показывают... Хотя, возможно, это в будущем исправят... |
|
Steam-x |
Отправлено: 26.08.2003, 20:06 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
Тогда, как это делается в ВИНАМПЕ? Там ведь можно выбирать какую иконку поставить на файл, а какую на .EXE
|
|
Георгий |
Отправлено: 26.08.2003, 20:43 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
если ты об иконке на *.mp3, то это иконка не файла программы, а ассоциация не исполняемого файла — там же, где в реестре указывается реакция на start <имя файла> и указана иконка.
а у WinAmp.exe иконка в TotalCmd не меняется... — только что проверил.
Отредактировано Георгий — 26/08/2003, 21:49 |
|
Steam-x |
Отправлено: 27.08.2003, 19:58 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
Так я об этом и говорю.
У меня с моей программой связано 2 типа файлов. Так вот! Иконки на типах файлов те что надо, а на самом EXE-нике висит иконка первого типа файлов, а не та что нужно. Хотя необходимая иконка присутствует в рес-файле.
|
|