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

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

    [+] [-]
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
  • 19892
  • Стаж: 5 лет 4 месяца
  • Сообщений: 331
  • Репутация:7

    [+] [-]
C txt по типам файлов крайняя версия начала работать.
"запрос ProgID" по txt выдал -{txtfile}-
А вот с =текст не пашет. и с ini не пашет.
Наверно из-за того, что
"запрос ProgID" по ini выдал -{AkelPad.exe}- ai
Откуда акелпад взялся ...

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

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

    [+] [-]
90225"запрос ProgID" по ini выдал -{AkelPad.exe}-
я в предыдущем посте написал :Хотя последнее это же не ProgId. Надо подумать... если у тебя дошло до AkelPad.exe, то значит предыдущие ходы не сработали и даже если удалить последнее то в итоге получим пустую строку в качестве ProgId.

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

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

    [+] [-]
А вот с =музыка и =видео усё прошло успешно aa
Причём я добавлял в ини файл несколько дополнительных расширений уже после регистрации меню с помощью =музыка для оригинального списка расширений в ini
И так же всё прошло успешно !
Добавлено через 6 минут 2 секунды:
AZJIO, вот вся моя ветка реестра по ini файлу
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ini]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ini\OpenWithList]
"a"="NOTEPAD.EXE"
"MRUList"="bca"
"b"="AkelPad.exe"
"c"="DllHost.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ini\OpenWithProgids]
"inifile"=hex(0):
А вот оттуда же ветка по txt
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]
"a"="NOTEPAD.EXE"
"MRUList"="cba"
"b"="browser.exe"
"c"="AkelPad.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithProgids]
"txtfile"=hex(0):
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice]
"Progid"="txtfile"
Как видишь в отличии от ini у txt есть UserChoice ah


Последний раз редактировалось: rekshd (2021-12-02 21:31), всего редактировалось 1 раз

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

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

    [+] [-]
rekshd, скачай опять, исправил
Теперь AkelPad туда вообще не попадёт, а поиск в OpenWithProgids теперь правильный. Блин я сам ошибся в том что у меня Win10 и мне ProgId выдаётся родным методом, я закомментировал эту строку чтобы у меня ProgId начал вычисляться алгоритмом и я нашёл все ошибки.

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

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

    [+] [-]
Отлично. Для ini заработало! И запрос ProgID.exe показывает правильный ProgId

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

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

    [+] [-]
rekshd, Про рабочий стол и экспорт я не забыл, но ещё идейка - кнопка "сменить иконку меню", а то насоздавал без иконки, потом передумал и не искать же заново, хоть и можно через экспорт это провернуть.

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

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

    [+] [-]
Сейчас лично я пользуюсь кмдшкой для закидывания ico файла в System32...
А вот с кнопкой будет гораздо удобнее
Тем более если кнопка будет с открывающимся окном выбора пользовательской иконки и SubMenu Windows 7-10 будет автоматически адаптировать выбранную иконку под свои требования (определённое имя файла иконки, его местоположение и размер)
PS А что Вы думаете про разделители в создаваемом программой контекстном меню.
С ними ведь меню будет гораздо удобней. Особенно если программ будет много.
Группировка с помощью таких разделителей будет явно к месту.
И реализовать их просто - там ведь фиксированный код. Фактически добавляется одна строка и усё.

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

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

    [+] [-]
Обновил
Добавлены пункты: "Сменить иконку меню", "Сменить имя меню", "Открыть меню в реестре", "Инфо о меню в реестре"
Все пакетные пункты где игнорировался "Рабочий стол", теперь учитывают.
90254 про разделители
Чтобы "Действия" были в разделителях?
90254С ними ведь меню будет гораздо удобней
У меня несколько прог и каждая добавила разделитель и выглядит это как куча разделителей, каждый разделитель не отличает одну прогу от другой, нет никакой группировки.
Проверил, если добавить в реестр параметры SeparatorBefore и SeparatorAfter, то появляются соответствующие разделитель над и под пунктом "Действие"
Кстати "Рабочий стол" это по факту пустое пространство любой папки и эти пункты появляются там. Возможно надо было добавить к этим пунктам %V в качестве параметров ком-строки или спрашивать нужен ли параметр вообще и надо просто прогу запустить. А то получается для сканера нужен %V, а для диспетчера задач, просмотрщика драйверов и т.д. не нужен.


Последний раз редактировалось: AZJIO (2021-12-04 19:52), всего редактировалось 2 раз(а)

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

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

    [+] [-]
Смотреть буду чуток позже, пока работаю.
Но есть сразу предложение и вопрос.
Давно хотел спросить, есть ли разница в том как писать в ини - до и после равно - с пробелами или без ?
Или никакой разницы нет ?
А предложение - кнопки сменить имя меню и сменить иконку меню лучше будут смотреться на основном интерфейсе программы, а не по ПКМ в столбике программ
Кстати, а что ночью с сайтом было. не мог зайти ниоткуда. Ни из России, ни с Дикого Западп ai

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

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

    [+] [-]
rekshd, перекачай с яндекса, добавил флажки-чекбоксы (2 шт), чтобы добавлять линию-разделитель до и/или после пункта.
90261как писать в ини - до и после равно - с пробелами или без ?
ну читает, же значит работает. А там не угадаешь, универсально я не могу ответить на этот вопрос, так как я не знаю какой обработчик использует какая либо программа, они могут быть собственными и со своими правилами. В движке PureBasic есть флаг который отвечает за пробел, добавлять ли его при записи или нет, но в этой программе запись в ini-файл не происходит, а значит только чтение. Если значение не подразумевает пробел вокруг себя, то можно в любом формате, а если данные могут содержать пробел на краях, то лучше использовать "без пробела", тогда данные читаются как есть, сколько пробелов до или после значения все они будут считаны целиком.
Из справки:
PB_Preference_NoSpace: Не будет пробелов между "ключом", знаком "=" и "значением". Это может быть полезно при работе с файлами внешних настроек
Я этот ключ не использовал, так как у меня все значения не подразумевают пробел.
90261лучше будут смотреться на основном интерфейсе программы
Да кто их знает как лучше. Выбор в ПКМ начался всвязи с тем, что если список пуст, то нет смысла делать кнопки в интерфейсе программы, так как и меню не возможно создать без этого списка. А значит эти пункты должны применяться только к списку. Но так как меню можно вызвать при пустом списке или на белом фоне не выбирая пункт (это можно запретить и конечно выбор проверяется), то вроде как и нет смысла делать эти пункты обязательно в меню. И тот же "Последняя запись в реестре" тоже подразумевает наличие добавленного пункта меню, то есть он тоже не по правилам тут. С другой стороны если делать все в виде кнопок, то получится каша, тексты разной длины и лепить это красиво не получится, тем более для многоязычного варианта это и вовсе будет криво. Идеально я хотел сделать "Главное меню" и в приципе это не сложно, вместо Popup создать Main, а в его дескриптор впишутся эти же пункты, то есть одну запись поменять, но меня пока и так устраивает, кто знает что ещё добавиться и что потом опять перелепливать кнопки...

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

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

    [+] [-]
ну читает, же значит работает. А там не угадаешь, универсально я не могу ответить на этот вопрос, так как я не знаю какой обработчик использует какая либо программа, они могут быть собственными и со своими правилами. В движке PureBasic есть флаг который отвечает за пробел, добавлять ли его при записи или нет, но в этой программе запись в ini-файл не происходит, а значит только чтение. Если значение не подразумевает пробел вокруг себя, то можно в любом формате, а если данные могут содержать пробел на краях, то лучше использовать "без пробела", тогда данные читаются как есть, сколько пробелов до или после значения все они будут считаны целиком.
То есть правильно писать в ini
MenuName=Действия
и нежелательно
MenuName = Действия

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

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

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

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

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

    [+] [-]
С другой стороны если делать все в виде кнопок, то получится каша, тексты разной длины и лепить это красиво не получится, тем более для многоязычного варианта это и вовсе будет криво. Идеально я хотел сделать "Главное меню" и в приципе это не сложно, вместо Popup создать Main, а в его дескриптор впишутся эти же пункты, то есть одну запись поменять, но меня пока и так устраивает, кто знает что ещё добавиться и что потом опять перелепливать кнопки..
Согласен с мыслью, А про эти нюансы, особенно про многоязычность, я не подумал ..
Добавлено через 23 минуты 58 секунд:
Иконка и название меню переназначаются
Сделал свой пункт и ини
фото=jpg,bmp
Сработало штатно

@@@@@@@@@@@@@

Есть мелкое предложение
Вот скриншот

Если винда делает длинный пункт меню (как на фото - Сделать фоновым изображением рабочего стола), то название меню находится слева.
А может красивее будет , если это создаваемое нами название меню будет отсортировано по центру, а не слева ?
Если такое в винде вообще возможно ...
Наверно, проше отключить этот фукционал с фоновым изображением в самой виндосе ag

@@@@@@@@@@@@@

Удаление всех меню пока не пашет. Розничное удаление прекрасно пашет
Добавлено через 8 минут 49 секунд:
перекачай с яндекса, добавил флажки-чекбоксы (2 шт), чтобы добавлять линию-разделитель до и/или после пункта
Не пашут пока ...
Причём если галочку проставить, то она так и стоит железобетонно, даже если мышкой выбрать другой пункт в программах. Думаю, что наличие или отсутствие включенного чекбокса должно быть привязано к конкретному пункту списка программ.

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

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

    [+] [-]
90274Удаление всех меню пока не пашет
А пункт информация о меню выдаёт число пунктов?
90274Не пашут пока ...
флажки ставятся для пункта меню "Действия", почему они должны сниматься? Они не ставятся для программ в меню "Действия". Причём ставятся если меню "Действия" ещё не существует.

Страница 6 из 12


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

Текущее время: 25-Апр 18:29

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


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