AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
rekshd, перекачай Ctrl+A и Del добавлены. параметр "RegProg = путь" укажи в ini ещё перекачай, добавил удаление всех меню (но не списка, его можно отдельно удалить Ctrl+A потом Del)
|
Отправлено: 01-Дек-2021 19:09
(спустя 1 час 44 минуты)
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Нельзя исключать что проблема на стороне Windows. Надо найти рабочую инструкцию или признать что на Win7 не работает.Пришлось покурить мануалы по использованию их в командной строке и вообще по ихним командам запуска. кроме того я сделал кавычки внутри кода, то есть путь указывать без кавычек. Возможно это неправильно, вдруг понадобиться добавить ключ типа "/f путь", тогда в кавычках должен быть только путь, но не f и вот тут нет гибкости. Но зато защита, если юзер не думает о кавычках и просто указал путь, то не сделав кавычки внутри этот путь распался бы на множество параметров по пробелам. Перезалил на обе ссылки, обновив англоязычную версию.
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
AZJIO,кроме того я сделал кавычки внутри кода, то есть путь указывать без кавычек. Возможно это неправильно, вдруг понадобиться добавить ключ типа "/f путь", тогда в кавычках должен быть только путь, но не f и вот тут нет гибкости. Но зато защита, если юзер не думает о кавычках и просто указал путь, то не сделав кавычки внутри этот путь распался бы на множество параметров по пробелам. Ну для меня ничего не изменилось поскольку оба моих редактора реестра изначально потребовали для корректной работы дополнительные ключи запуска. И оба редактора лежали по пути с пробелами, так что я сразу их пути закавычил. Конструкция у меня изначально получилась типа:RegProg="путь до проги с пробелами" /ключ запуска Поэтому ничего менять не пришлось
@@@@@@@@@@@@@ Добавлено через 1 час 15 минут 13 секунд: Есть исчо предложение по маленькому косметическому улучшению В SubMenu видно только название добавленной программы. Можно ли при подведении к этому названию сделать всплывающее меню с адресом программы ? А то при большом количестве программ добавленных вручную (не из ини файла) начинаю путаться ... Впрочем эта идея на Ваше усмотрение
@@@@@@@@@@@@@ Добавлено через 1 час 33 минуты 42 секунды: Странно Регфайл выгруженный с десятки и натравленный на семёрку в результате дал в проводнике такое же меню, какое было в 10ке. Для типов файлов... И работает оно в семёрке также как в десятке. Так что сами по себе настройки меню однотипные в обеих операционках. А вот SubMenu импортированные регфайлом настройки в режиме "Типы файлов" видит и позволяет их изменять, но по факту ничего не меняет... Похоже усё таки что то не учтено в SubMenu Но поскоку я нуль в PureBasic, найти в исходном коде я ничего не смогу. Сначала надо PureBasic изучить ... А я это уже год собираюсь сделать
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
Возможно ассоциации не срабатывают, ProgID не получен. Надо в LiveCD семерки попробовать исправить функцию. Подсказку в меню вряд ли, это же винда делает отображение меню. Если бы они сделали такой флаг в реестре, то я лишь могу обеспечить его включение. Смогу только вечером посмотреть.
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
Принесли мне ноут с x86 win7. На нём ситуация повторяется - для типов файлов ничего не создаётся Обнаружил исчо пару моментов: 1. вне зависимости от настроек пункта MenuName=Действия программа всё равно для всех файлов, папок, дисков и рабстола меню создает с пунктом Действия Добавлено - обновил дрова и перегрузил ноут - создание пунктов начало работать штатно. То есть если меняю название пункта меню в ини, он в меню начинает создаваться с новым, уже моим именем. 2. Пункт удалить все меню не срабатывает, пишет удалено 0 и это соответствует реальности - в реестре усё остается на месте. А вот пункт удалить меню (то есть в розницу) срабатывает прекрасно и меню удаляет. После перезапуска ноута Пункт удалить все меню так и не работает ... Так что этот момент стоит проверить
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
90217Пункт удалить все меню не срабатывает, Так как я не могу определить в какие места прописаны, то я запрашиваю данные SubCommands и если они существуют, то удаляю. Проблема, если меню пустое, то такое меню не будет видно для алгоритма, а в одиночном удалении так как конкретно запрашивается тип, то удаление происходит без проверки наличия, а только проверка, что удалено успешно. Итак, проблема: пустое меню. В допустимых функциях по работе с реестром нет функции проверки существования параметра, наверно напишу свою.
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
AZJIO,в одиночном удалении так как конкретно запрашивается тип под типом Вы понимаете "все файлы", диск, папка, рабстол ? ДА, удаление всех меню пытался использовать тока тогда, когда имел какое-либо наполнение. Оно никогда не было пустым. Пример из регфайла"SubCommands"="u.FileSizesList_x64;u.ProcExp x64 en ;u.ProcExp x64;u.PotPlayerMini64" Добавлено через 6 минут 6 секунд: Вопрос - под удалением всех меню Вы понимаете удаление ВСЕХ меню, что созданы в разных местах (рабстол, папки, диски и т.д.) сразу и одновременно ? Добавлено через 7 минут 59 секунд: А может поступить проще - при создании меню где нибудь это фиксировать в логе. А затем, считав этот протокол, удалить тока созданное программой ?
|
Отправлено: 02-Дек-2021 20:14
(спустя 1 час 12 минут)
dimo70
- Стаж: 6 лет 11 месяцев
- Сообщений: 3777
- Репутация:27[+] [-]
- Откуда: BG
|
AZJIO, приветствую. Я пока пользую программу ECMenu. Хорошо придумана и сделана, но есть один большой недостаток - невозможно автоматически приложить выбор. Надо открыть программу, выбрать и потом кнопкой приложить. Я даже писал на офсайт, но ничего не ответили. Вот хотел спросить возможно ли сделать такое автоматическое приложение заранее выбраного набора программ в SubMenu Windows 7-10?
_________________ Подпись отключена за нарушение правил форума
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
Ну можно исчо проще: Не искать содержимое "SubCommands"="u. а сразу удалять из четырёх мест (папки, все файлы, диски, рабстол) куст реестра, содержащий "SubCommands" (Возможно добавив проверку на присутствие в этих ветках чего-то с ="u.) Например: подлежат удалению HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\OpenActions HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\OpenActions HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shell\OpenActions Остаётся открытым вопрос с типами файлов. но там можно взять конечное количество расширений (которые представлены в ини) и провести с ними удаление аналогично ... Получится чисто механическое действие, не требующее сложных вычислений и поиска параметров ... Кстати, обнаружил тока что, что куст для рабочего стола HKEY_CLASSES_ROOT\Directory\Background\shell\OpenActions в Экспорт по кнопке не попадает ... хотя добавляется и удаляется в розницу отлично Проверьте пожалуйста
Последний раз редактировалось: rekshd (2021-12-02 20:25), всего редактировалось 1 раз
|
loban_ser
- Стаж: 6 лет 9 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
AZJIO, можно реализовать как например в PsMgr конфиге BackFile=%ProgramData%\PsMgr.bck какие значения вносились в реестр
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
rekshd, на яндексе скачай, проверь файл "запрос ProgID.exe", при вводе расширения например txt выдаст сообщение txtfile, то есть должен что-то выдавать, а конкретно я его всегда называл класс программы, винда называет это ProgID. Расширение связано с ProgID, а ProgID связан с путём, то есть если в реестре зайти в раздел txtfile, то там будет команда, это и есть ассоциация. Если теперь возвращает значение txtfile, то и суубменю будет работать. Алгоритм ручного поиска ProgID: зайти в раздел HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\ далее в расширение файла например .txt, далее в UserChoice (выбор пользователя), считываем ProgId. Если его нет, то там же открываем OpenWithProgids и ищем первый попавшийся. Если опять мимо, то открываем OpenWithList (список открыть с помощью), тут первым выбором стоит лучший вариант, поэтому считываем данные MRUList и берём первую букву, теперь считываем данные в этом же разделе с этой буквой. Хотя последнее это же не ProgId.
Последний раз редактировалось: AZJIO (2021-12-02 21:09), всего редактировалось 1 раз
|
rekshd
- Стаж: 5 лет 11 месяцев
- Сообщений: 331
- Репутация:7[+] [-]
|
C txt по типам файлов крайняя версия начала работать. "запрос ProgID" по txt выдал -{txtfile}- А вот с =текст не пашет. и с ini не пашет. Наверно из-за того, что "запрос ProgID" по ini выдал -{AkelPad.exe}- Откуда акелпад взялся ...
|
AZJIO
- Стаж: 6 лет 8 месяцев
- Сообщений: 1322
- Репутация:127[+] [-]
|
90225"запрос ProgID" по ini выдал -{AkelPad.exe}- я в предыдущем посте написал :Хотя последнее это же не ProgId. Надо подумать... если у тебя дошло до AkelPad.exe, то значит предыдущие ходы не сработали и даже если удалить последнее то в итоге получим пустую строку в качестве ProgId.
|
Страница 5 из 12
Текущее время: 22-Ноя 23:12
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|