[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
ContMenuFiles
Скачать
-Программа для настройки контекстного меню файлов. Повтор программы ранее написанной на AutoIt3.
Последнее обновление:
Добавил контекстное меню
Подправил Registry.pbi, как посоветовали в теме
Добавил изменение размера окна
Добавил перетащить и бросить exe-файл или ярлык.

Использование

Как пользоваться программой:
1. В списке слева выбираем тип файла, в списке справа появляется пункту меню связанные с этим расширением файла.
2. Кидаем *.exe или *.lnk файл в окно программы, это сопровождается заполнением полей, которые будут добавлены в реестр: командная строка, имя пункта и раздел реестра.
3. Нажимаем кнопку добавить и пункт появляется в списке ниже. Теперь можно проверить что пункт появился и в меню проводника для этого типа файла.
4. После изменений рекомендуется выполнить "Группы -> Выполнить SetUserFTA для всех", это сгенерирует хеш, чтобы Windows согласился с вашими настройками, иначе он для каждого изменённого типа файла по разу спросит действительно ли вы хотите использовать эту программу для открытия этого файла.
Но это основные 3 пункта, а теперь детали:
1. Так как неудобно добавлять одну и туже программу для десятка однотипных расширений, то делаем групповое действие "Группы -> Добавить пункт в группу", это добавит пункт меню для всех файлов в группе. Для этого нужно сначала выбрать любое расширение из группы, чтобы программа добавила именно в эту группу.
2. Сменить иконку - сделать клик на кнопке и иконкой, откроется диалог выбора dll в которой можно выбрать иконку. Далее нажать "Меню -> Обновить кеш иконок", но делать это лучше после смены нескольких иконок, так как излишне обновлять кеш после каждой иконки. Также нажмите "Обновить дерево", чтобы видно было изменение иконок в дереве, при этом изменение иконок может произойти для нескольких файлов, если у них одинаковый ProgID, например для htm и html файлов.
3. У обоих списков есть контекстное меню, которое позволит вам дополнительные действия:
Для дерева:
"Открыть в реестре" - тут понятно, что откроет то место в реестре где прописано расширение или команда.
"Изменить иконку файла" - тоже что клик на кнопке с иконкой.
"Изменить ProgID" - редко используемый пункт, но всё же позволит вам в том числе назначить свою иконку для определённого файла если он ранее был привязан к общему, например к текстовому типу "txtfile". Например если у вас css и php был привязан к "txtfile" и нельзя было назначить этим файлам разные иконки, то смена ProgID на "cssfile" и "phpfile" позволит назначить своё меню и иконку для этих типов файлов (ремарка: вместо этого можно использовать "Создать расширение" и указать иной ProgID). Также это можно использовать в ситуации, когда необходимо создать свою ассоциацию не перезаписывая системные, например mp3 имеет DropTarget, CLSID, которые мешают переназначить программу, файл всегда открывался в системном медиаплеере, по крайней мере в WindowsXP у меня были с этим проблемы.
Для команд - пунктов меню:
"Основной" - делает этот пункт первым в меню и соответственно клик по нему сопровождается выполнением этого пункта. По умолчанию это "open". Чтобы не переименовывать пункт в "open" для смены действия по умолчанию можно просто задать пункт основным.
Остальные пункты понятны из названия. Разве что "Сменить иконку пункта" в отличии от дерева меняет иконку в меню для указанного пункта, чаще иконки вообще нет, но проводник позволяет её назначить. Можно даже существующие пункты меню без иконки сделать с иконками. По умолчанию будет использоваться иконка исполняемого файла.
4. Осталось 3 пункта:
"Показать отсутствующие" - позволяет вам увидеть для каких расширений у вас ничего не прописано.
"Создать расширение" - если тип файла не существует совсем, то этот пункт создаёт, предлагая вам задать ProgID и использовать поля для вставки первой команды.
"Экспорт расширений", пока эта функция работает не стабильно, иногда выдавая пустой файл.
5. Обращайте внимание на ProgID, чтобы не добавлять меню для Unknown, так как это универсальный тип не ассоциированного файла, меню которого появляется для не ассоциированных файлов, проще говоря файлов без иконок. Добавьте в это меню Hex-редактор и вы всегда будете по наличию этого пункта замечать, что это раздел Unknown.
6. При добавлении пункта меню в группу файлов тип Unknown игнорируется, поэтому смело можно использовать групповое добавление команд, без необходимости в дальнейшем чистить раздел Unknown.
Настройки ini-файла
7. Очень важно: можно полностью перестроить дерево расширений файлов с помощью ini-файла, то есть задать свои предпочтения в выборе файлов, убрать ненужные, переименовать разделы, программа всего лишь использует эти данные для построения списка.
ProgID = %sfile - здесь задаётся маска при создании новых расширений, то есть если у вас расширение cfg и вы создаёте для него ProgID, то в тексте %sfile переменная %s заменяется на cfg и получаем cfgfile, аналогично для css будет cssfile. Но это маска по умолчанию, можно задать уникальные маски для каждого раздела, например добавить в раздел [ProgID] параметры:
Архивы = 7-Zip.%s
Видео = mplayerc.%s
Музыка = AIMP.AssocFile.%s
теперь для этих разделов (Архивы, Видео, Музыка) при создании расширения будет использоваться соответствующая маска
SetUserFTA = 1 - расширения добавляются с помощью утилиты SetUserFTA, которая идёт в комплекте. Автор заявляет что она прописывает хеш, необходимый для доверенной ассоциации.
CRCULM = 0 - не используется, но в будущем хотел добавить флаг определяющий в какой раздел прописывать данные, в HKCR (сейчас используемый) или HKCU (для текущего пользователя) или HKLM (для всех пользователей)


Последний раз редактировалось: AZJIO (2022-04-06 06:45), всего редактировалось 2 раз(а)

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 3 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
AZJIO,
Было б хорошо добавить в инишник сразу в музыку |flac|cue
А в идеале взять список расширений из SubMenu ...
Так же оттуды перебросить возможность использования альтернативного варианта редактора реестра.
regedit слишком простоват для сложных действий af
Да, на W7x64 почему то в интерфейсе программы не все расширения с иконками.
Хотя в системе они с иконками. Понять бы почему так ...
Как я понял, кнопки с пунктами главного меню пока нету. В том числе и "Показать отсутствующие"
Будет ?

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
rekshd, в идеале весь функционал должен будет перейти, мне просто скучно будет если я буду месяц молча писать, а потом выложу готовое. Я уже добавил то, чего нет в AutoIt3-версии, это добавление иконки пункту и перетащить и бросить работает при админских правах. Ещё 90% функционала требуется переписать.

[Цитировать]

    rekshd
  • 19892
  • Стаж: 5 лет 3 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
91848rekshd, в идеале весь функционал должен будет перейти
Эта программа для меня очень интересна
Как обычно, котов тестировать - скажи тока что конкретно нужно проверить af

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
rekshd, пока можно гинерировать идеи.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
Обновление
1. Добавлен игнор Unknown при добавлении и удалении в группе.
2. Добавлен пункт "Показать отсутствующие...", т.е. незарегистрированные расширения.
3. При одинарном добавлении тоже добавляется иконка
4. Попытка добавить расширение пока не работает, надо разбираться что там за шифрование или придётся использовать внешнюю утилиту, что не хотелось бы.
Ещё обновил
1. Добавление расширения работают вроде нормально, но при желании если флаг SetUserFTA = 1, то будет задаваться с помощью SetUserFTA.
2. Параметр item = Открыть в %s определяет имя пункта.
3. Секция [ProgID] определяет шаблон ProgID, где можно задать для каждой группы собственный (например Архивы), а если не найден, то общий (ProgID = %sfile), если не найден он же по умолчанию. Где %s это расширение файла, например mp3file или 7-Zip.rar. Но это будет предлагаться с возможностью изменения.
[ProgID]
ProgID = %sfile
Архивы = 7-Zip.%s

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
Обновил
Правильно детектируются пути требующие раскрытия (%SystemRoot%) и без пути из переменной PATH, такие как regedit.exe, notepad.exe, cmd.exe. Это используется при проверки существования иконок, прежде чем прописать их, и в "Открыть в Проводнике"
Кажется я понял как мне правильно применить SetUserFTA. Есть подозрение что когда все расширения будут настроены надо заключительно пройтись с SetUserFTA, чтобы сгенерировать хеш, иначе изменение пунктов может вызвать диалог выбора приложения.
Добавлены пункты:
"Выполнить SetUserFTA для всех" - если при клике на файле предлагает список утилит, то выполнить этот пункт, он обработает уже прописанные ассоциации, добавит хеш.
"Выполнить SetUserFTA для группы"
"Изменить ProgID"
Обновил ещё
Добавил экспорт в reg-файл. Пока не универсальный вариант, сохраняет конкретно заданные данные, то есть не обрабатывает раздел расширения и ProgID рекурсивно, как хотелось бы.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
Добавил пункт "Обновить кеш иконок", подсмотрел код в скрипте Refresh.vbs

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
92192может вызвать диалог выбора приложения
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer /v "NoNewAppAlert" /t REG_DWORD /d 1 /f

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
Обновил
Экспорт расширений не работал, исправлено и добавлено 3 варианта: всех, группы, одиночный.

[Цитировать]

    Adler
  • 1708
  • Стаж: 8 лет 5 месяцев
  • Сообщений: 1196
  • Репутация:65

    [+] [-]
  • Откуда: Луганск
aa Небольшая придирка. Имхо, было бы удобно, если бы можно было передвигаться по дереву стрелками так, что бы "активировались" выбранные пункты.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
Adler, добавил, и кроме этого ещё несколько горячих клавиш, они указаны в меню.
Ctrl+Delete - удалить пункт меню
Ctrl+F - Открыть в проводнике, типа найти файл
Ctrl+Down - Добавить пункт (Down - перемещение по дереву и тут же Ctrl+Down добавляет пункт, почти что групповое добавление)
Alt+J - Открыть в реестре
Хоткей Delete поменял на Ctrl+Delete, иначе как стирать символы вправо в поле ввода.
Добавлены события по нажатию Enter взависимости от того на каком элементе окна находится фокус.
Экспорт расширений сделан в отдельном потоке, так как процесс занимает несколько секунд, и прогресс виден в строке состояния.
Добавлен пункт "Открыть ini" (добавить расширение файла, кликнуть "Обновить дерево", расширение появится в списке)

[Цитировать]

    bighead
  • 29484
  • Стаж: 2 года 4 месяца
  • Сообщений: 348
  • Репутация:21

    [+] [-]
AZJIO, нашёл аналог на purebasic SetUserFTA
https://github.com/DanysysTeam/SFTA

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

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


Показать сообщения:    

Текущее время: 29-Мар 18:40

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы