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

    marik_drdr
  • 16332
  • Стаж: 6 лет 10 месяцев
  • Сообщений: 46
  • Репутация:-1

    [+] [-]
  • Откуда: СССР
AZJIO, дошло! Спасибо! ag

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

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

    [+] [-]
Обновил
Добавлена кнопка прыжка в реестр, то есть можно удалить пункт, просто перейдя в реестр и удалить по имени пункта.
Добавлена возможность через ini-файл добавлять пункты в раскрывающийся список разделов реестра. Для примера добавлены некоторые стандартные расширения, точнее их ProgID, который не меняется, так как является системный. Туда можно было бы и VBA и JS добавить.

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

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

    [+] [-]
Не критичные исправления, если не задано имя пункта или иконка, то не заполняются и не вводятся в реестр пустые параметры.
Обнаружилось когда я встроил прогу себе в ОС, но удалив из ini-файла разделы [Setting] [Lang], так как преднастройки мне не нужны а русский язык и так встроен, оставил только [reg], чтобы добавить пункты в список. При этом в поле иконки вставился путь к папке без файла. Ну и также имя пункта можно оставить пустым, тогда в качестве имени будет название добавляемого раздела в реестре, то есть имя проги, а значит надо было убрать добавление пустых параметров в реестр: иконки и имени пункта.

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

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

    [+] [-]
Прекрасно интегрируется
Compare It!
FastStone Image Viewer
(да и прочие аналогичные гладелки крафики)
А вот с Araxis Merge (которой пользуюсь постоянно лет 7 уже для сравнения документов и прочих текстов) ничего пока не получилось.
Поскоку интеграция араксиса в проводник происходит не через экзешник, а через dll ...
Собственно, экзешник араксиса интегрируется прекрасно, тока вот при попытке отправить на него два текстовых файла для сравнения , он открывает их в двух разных окнах, а не в одном, как требуется.
Пока не могу понять как реализовать интеграцию программы через эту аракисовскую спец дллэлку ...

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

    i.C-boy
  • 13845
  • Стаж: 8 лет
  • Сообщений: 11
  • Репутация:0

    [+] [-]
rekshd,
Не уверен, но может быть так у Вас получится:-
[HKEY_CLASSES_ROOT\DesktopBackground\Shell\...............\command]
@="rundll32.exe ваша.dll,%1"

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

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

    [+] [-]
rekshd, там надо реестр смотреть параметры, посмотри print у блокнота, например параметр "%1" "%2" "%3" "%4". Я вчера хотел добавить Defraggler, там через CLSID, ну я просто экспортировал, из "для всех" в файл и "*" сменил на ProgID от ISO и заработало как хотел только для ISO.

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

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

    [+] [-]
93904rekshd, там надо реестр смотреть параметры
Посмотрел я на свои порташки Araxis Merge и понял, что все они из одного экзешника, то есть dll, присуствующая в обычной версии, в них отсутствует вообще ...
Так что вопрос для себя с этим вариантом практически закрыл.
Есть, однако, один нюанс ah
Если я просто сую ярлык порташки Araxis Merge в SendTo системы, то усё работает штатно.
То есть прямая отправка двух файлов из контекстного меню открывает каждый файл в отдельном окне и они не сравниваются, а вот отправка этих двух файлов в порташку через "Отправить на" реализует штатную работу программы - оба файла в одном окне и нормально сравниваются ...
А вот в чём отличие этих двух действий понять не могу, но оно ведь есть !
И можно каким либо образом симулировать отправку через SendTo через zRegistration ?

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

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

    [+] [-]
Попробуй "%1" "%2" это захват двух файлов.

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

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

    [+] [-]
93964Попробуй "%1" "%2" это захват двух файлов.
Нет не помогло ...
А "Отправить на" таки работает. Похоже надо детально копать виндосовский механизм SendTo.
Если понять как он работает, то можно и симитировать его работу.
Кстати, если перетянуть эти два файла на сам экзешник портабла или его ярлык,
то усё тоже срабатывает нормально.
Открывается одно окно программы с этими двумя файлами и они штатно сразу сравниваются
Колдовство какое -то ai

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

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

    [+] [-]
rekshd
Для Meld есть ком-строка
meld file1 file2
пытался разные варианты:
"%1" "%2"
%1 %2
"%1" %*
"%1" "%*"
"%1 %*"
%*
"%*"
не работает. Этот способ принуждает каждый перечисленный параметр запускаться отдельно с exe-файлом, а не передать это одному exe-файлу. Аналогично для WinMerge проверил все эти варианты. При чём путь не содержит пробелов, и для Meld без кавычек запускается 2 окна, с кавычками вообще не видит. Через "Отправить" работает.
Так как параметры ком-строки разделяются по пробелу, то без кавычек вообще не вариант. Я подсмотрел в разных типа, например cmd-файлы
cmd.exe /C "%1" %*
где %* подразумевает множество файлов, аналогично в vbs и js
в printto всегда было "%1" "%2" "%3" "%4"
В плеерах используется "%L" %* тоже пробовал, не помогает.
Инфа по ключам:
https://web.archive.org/web/20111002101214/http://m...01(v=vs.85).aspx

подробнее

%* - replace with all parameters
%~ - replace with all parmaters starting with and following the second parameter
%0 or %1 the first file parameter. For example “C:\Users\Eric\Destop\New Text Document.txt”. Generally this should be in quotes and the applications command line parsing should accept quotes to disambiguate files with spaces in the name and different command line parameters (this is a security best practice and I believe mentioned in MSDN).
%<n> (where N is 2 - 9), replace with the nth parameter
%s – show command
%h – hotkey value
%i – IDList stored in a shared memory handle is passed here.
%l – long file name form of the first parameter. Note win32 applications will be passed the long file name, win16 applications get the short file name. Specifying %L is preferred as it avoids the need to probe for the application type.
%d – desktop absolute parsing name of the first parameter (for items that don’t have file system paths)
%v – for verbs that are none implies all, if there is no parameter passed this is the working directory
%w – the working directory
ссылка2

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

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

    [+] [-]
Спасибо за детальную информацию по ключам aa
Но усё таки получилась у Вас "малахитовая шкатулка" ?
Для меня плюсом этих поисков по интеграции Araxis Merge стало то, что я открыл для себя Compare It!
Очень даже неплохая замена Араксису и, мало того, прекрасно интегрируется с помошью zRegistration в контекстное меню и открывает для сравнения два файла так, как надо !

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

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

    [+] [-]
rekshd, не получилось и проблема конечно же не проги, а движка Windows, он понимает как открыть выделенные файлы в программе, каждый в отдельности. Когда мы выделяем в проводнике, это же не текст путей разделённых пробелом, это объект, а уж как он интерпретируется зависит от разработчиков. Они сделали перечисление файлов и запуск каждого с прогой, то я не могу заставить с теми же параметрами видеть это как строку путей. Я попробовал все параметры и даже там по ссылке чел сделал пример что выведет параметр если использовать тот или иной ключ и там нигде нет объединения путей в строку. Так что пока одно решение через "Отправить".
94011Compare It
Была бы находкой если бы была бесплатной. А среди платных "Beyond Compare" лучший, там и бинарное сравнение и картинок методом вычитания. И я её использовал, пока через время прога не запросила регистрацию.

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

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

    [+] [-]
94012Была бы находкой если бы была бесплатной
Есть же крайняя порташка уже зареганая на руборде в профильной теме ...
Если честно, то на этот нюанс не обращал внимания.
Впрочем и Araxis Merge тоже платная ...-
94012Так что пока одно решение через "Отправить".
Жаль ...
Я себе в бортовой комп записал закладку про эту ситуацию с араксисом и SendTo
Когда нибудь может набреду на ответ.
Скорей всего мы сейчас не можем его найти не потому что его нету,
а потому, что этот ответ редок и особо никому и не нужен ...
Бывали у меня такие случаи, когда я ответ находил и через 20 лет ! Причём случайно af

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

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

    [+] [-]
rekshd, предположу вариант запуска через иную прогу, например
%i – IDList stored in a shared memory handle is passed here.
то есть получаем дескриптор, только надо понять как из него взять пути, соединить их потом в нужную ком-строку и передать дальше. То есть получим что-то вроде такого:
launcher.exe "C:\...\Compare.exe %i
здесь мы получаем какую прогу запускать в первом параметре, а во втором дескриптор объекта с файлами, которые мы соединим в ком-строку и запустим с ней Compare.exe. Здесь нет привязки к проге, так как мы её передаём в параметре. Проблема что это всё ручная работа.
Немного погуглил и кажется функция SHGetNameFromIDList позволяет получить данные из объекта IDList.

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

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

    [+] [-]
94015здесь мы получаем какую прогу запускать в первом параметре, а во втором дескриптор объекта с файлами, которые мы соединим в ком-строку и запустим с ней Compare.exe. Здесь нет привязки к проге, так как мы её передаём в параметре. Проблема что это всё ручная работа.
В оригинальном установленном варианте Araxis Merge похоже так и делает - через dll
То есть для загрузки двух файлов в программу из проводника производитель использует какой то алгоритм из dllки-посредника.
И, если производитель делает именно так, то это означет,
что у него не получилось отправить эти два файла из проводника напрямую в прогу.

Страница 2 из 2


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

Текущее время: 19-Апр 18:57

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


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