Как установить значок файла при создании файла - PullRequest
1 голос
/ 25 февраля 2010

Я создаю tar-файл (из нескольких файлов), теперь при сохранении этого tar-файла я сохраняю этот файл как свое конкретное расширение, например (.xyz), поэтому я хочу всякий раз, когда я сохраняю этот тип файла (расширение .xyz) из Мой инструмент этот файл должен сохранить с определенным форматом файла ICO. Это похоже на то, как когда мы сохраняем файл bmp или jpeg из mspaint, они сохраняются в формате файлов значков.

Спасибо

1 Ответ

1 голос
/ 25 февраля 2010

Чтобы связать значок с вашим расширением, вам нужно создать для него запись в реестре, а значок, связанный с расширением, ничего не значит, если вы не связываете какую-либо программу для его открытия с вами, что тоже можно сделать в реестре например,

  1. Создайте запись для имени иконки вашей программы, например, HKCU \ Software \ Classes \ myprog.file.xyz

  2. в HKCU \ Software \ Classes \ myprog.file.xyz создать записи для значка по умолчанию HKCU \ Software \ Classes \ myprog.file.xyz \ DefaultIcon

    здесь вы можете указать путь к значку или к вашему приложению, а значок будет взят из ресурса

  3. Создайте запись для команд Open и других, если вы хотите, чтобы ваше расширение открывалось правильно например HKCU \ Software \ Classes \ myprog.file.xyz \ Shell \ Open \ Command и введите путь к вашей программе или любой другой программе

    аналогично вы можете добавить команду для просмотра / печати и т. Д.

  4. Теперь вы должны сообщить реестру, что расширение .xyz должно использовать информацию из HKCU \ Software \ Classes \ myprog.file.xyz поэтому создайте запись HKCU \ Software \ Classes.xyz = myprog.file.xyz

На самом деле, если вы хотите, вы можете напрямую указать 1-3 в HKCU \ Software \ Classes.xyz, но это перенаправление - лучший способ сделать что-то. потому что теперь вы можете просто назначить myprog.file.xyz многим расширениям, например .xxx, .yyy или .zzz и т. д.

Теперь, используя модуль Python _winreg (http://docs.python.org/library/_winreg.html), вы можете создавать все эти программы программно. например этот скрипт установит xyz в python icon

from _winreg import *

xyzKey = CreateKey(HKEY_CLASSES_ROOT, ".xyz")
SetValue(xyzKey, None, REG_SZ, "MyTest.xyz")
CloseKey(xyzKey)

myTestKey = CreateKey(HKEY_CLASSES_ROOT, "MyTest.xyz")
iconKey= CreateKey(myTestKey, "DefaultIcon")
CloseKey(myTestKey)

SetValue(iconKey, None, REG_SZ, "D:\\Python25\\python.exe")
CloseKey(iconKey)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...