Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

TC4Shell - использование WCX плагинов в Проводнике
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение printer-friendly view
View previous topic :: View next topic  
Author Message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Tue Apr 11, 2017 23:52    Post subject: Reply with quote

Flasher wrote:
А вот если получатель - архив, то прогресса нет.
Стандартной практикой в shell подсистеме является отсутствие диалогов в ситуации, когда в операцию не передан дескриптор какого нибудь окна, которое станет родительским по отношению к создаваемым в случае необходимости создания окон. Я придерживаюсь этой практики. Поскольку wscript.exe не передает ни какой дескриптор окна, TC4Shell считает, что UI не нужен. Ну а раз UI не нужен, то и окно прогресса не нужно.

Flasher wrote:
После того как...
Я поизучаю, как работает SHFileOperation с этим флагом.

Flasher wrote:
Речь про web-связку. Т.е. с этим проблем нет?
Проблем нет. Это фишка Проводника, я пока не планирую ее повторять.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11412
Location: Москва

Post (Separately) Posted: Tue Apr 11, 2017 23:56    Post subject: Reply with quote

Dec wrote:
отсутствие диалогов в ситуации, когда в операцию не передан дескриптор какого нибудь окна
Например? Дескриптор какого окна может быть передан, если мы задаём только пути?
Dec wrote:
Это фишка Проводника, я пока не планирую ее повторять.
Ясно.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Wed Apr 12, 2017 00:42    Post subject: Reply with quote

Flasher wrote:
Дескриптор какого окна может быть передан, если мы задаём только пути?
Я говорю в целом о shell подсистеме. Например, при операции drag&drop (при которой вызывается тот же самый код, что и при работе скрипта), мне передается дескриптор окна, соответственно я отображаю UI при необходимости. Средствами vbs дескриптор не передать. Ну а раз нет ножек, значит нет и мультиков.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11412
Location: Москва

Post (Separately) Posted: Wed Apr 12, 2017 00:58    Post subject: Reply with quote

Dec wrote:
Ну а раз нет ножек, значит нет и мультиков.
Так я выше написал, что мультики есть в случае папок без окон. Вот и спрашиваю, откуда там дескриптор?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Wed Apr 12, 2017 01:01    Post subject: Reply with quote

Flasher wrote:
Вот и спрашиваю, откуда там дескриптор?
Ну, MS славится нарушением собственных стандартов. Возможно, они показывают прогресс всегда независимо от наличия переданного дескриптор.

Добавлено спустя 1 час 55 минут:

Flasher wrote:
При попытке скопировать файлы в этот архив выпадает окно с ошибкой
Поправил свой код. Проверяй.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11412
Location: Москва

Post (Separately) Posted: Wed Apr 12, 2017 04:07    Post subject: Reply with quote

Порядок.
1. Что по 4096 и MoveHere?
2. А какие вообще плюсы у создания tmp в том же каталоге с заменой архива? Я утилитой могу распаковать файлы и переместить в архив. Я полагался на перенос, равносильный тому, что происходит между папками. В чём же тут виртуальность?
3. И ещё насчёт разрешения ассоциации для exe. Что нужно сделать, чтобы оно распространялось и на обсуждаемые методы?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Wed Apr 12, 2017 04:13    Post subject: Reply with quote

Flasher wrote:
1. Что по 4096 и MoveHere?
(Экий ты быстрый) Изучаю вопрос.

Flasher wrote:
А какие вообще плюсы у создания tmp в том же каталоге с заменой архива?
Как бы ты не упаковывал, чем бы ты не упаковывал, что бы ты не упаковывал, tmp файл будет создаваться в любом случае.

Flasher wrote:
И ещё насчёт разрешения ассоциации для exe. Что нужно сделать, чтобы оно распространялось и на обсуждаемые методы?
Не понят вопроса.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11412
Location: Москва

Post (Separately) Posted: Wed Apr 12, 2017 04:24    Post subject: Reply with quote

Dec wrote:
Экий ты быстрый
Просто постоянная переустановка из-за каждой незначительной правки с вероятностью нарваться на перезагрузку системы как-то не радует. Проще подождать нескольких правок, тем более, что на данном этапе это не горит.
Dec wrote:
чем бы ты не упаковывал, что бы ты не упаковывал, tmp файл будет создаваться в любом случае.
В смысле? Сама упаковка из общих папок никаких tmp не подразумевает. Если бы такое было, я бы это ещё 100 лет назад заметил.
Dec wrote:
Не понят вопроса.
Мы обсуждаем методы CopyHere/MoveHere. Если источник exe, то как заставить их с ним работать?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Wed Apr 12, 2017 04:34    Post subject: Reply with quote

Flasher wrote:
Сама упаковка из общих папок никаких tmp не подразумевает. Если бы такое было, я бы это ещё 100 лет назад заметил.
Т.е. ты хочешь сказать, что 7z умеет обновлять архивы без создания временных файлов?

Flasher wrote:
Если источник exe, то как заставить их с ним работать?
Для кого я это писал?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11412
Location: Москва

Post (Separately) Posted: Wed Apr 12, 2017 05:31    Post subject: Reply with quote

Dec wrote:
Т.е. ты хочешь сказать, что 7z умеет обновлять архивы без создания временных файлов?
Не, не умеет. Но она хотя бы в Temp их кидает.

Dec wrote:
Для кого я это писал?
Это я помню. Мы же там обсуждали, как разобраться отдельно с exe.

Quote:
А вот если получатель - архив, то прогресса нет.
Ошибочка. Без привязи к TC4Shell он есть:

Так что запрос остаётся актуальным. Если не получится, то по умолчанию TC4Shell лучше отвязать от ProgID zip-а.

Насчёт диалога ассоциаций. А можешь сделать, чтобы при применении обновлялись только изменённые значения вместо полной перезаписи?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Wed Apr 12, 2017 06:59    Post subject: Reply with quote

Flasher wrote:
Что по 4096?

Я так и не понял, за что этот флаг отвечает.

Flasher wrote:
Что по MoveHere?

Как ни странно, но как для сценариев, где указана функция CopyHere, так и для сценариев, где указана функция MoveHere, wscript.exe передает набор флагов [DROPEFFECT_COPY, DROPEFFECT_MOVE, DROPEFFECT_LINK], что обозначает, что я сам должен выбрать из этих вариантов, что мой код будет делать (мой код выбирает всегда DROPEFFECT_COPY). Т.е. я не могу в своем коде отличить CopyHere от MoveHere.

Flasher wrote:
Но она хотя бы в Temp их кидает.

А чем Temp лучше директории архива? Я лишь вижу две причины, чем хуже.

1) Temp может располагаться на другом физическом диске. Это обозначает, что после создания новой версии архива новый файл нужно КОПИРОВАТЬ с диска на диск вместо простого удаления исходного архива и переименования новой копии.

2) Для shell важна скорость, с которой обновляется файл. Если исходный архив удалить и начать копировать его новую версию из другой папки, то shell будет считать, что файл удален, и окна с архивами, открытые в Проводнике, просто закроются. А если удалить и быстро переименовать, то для shell это будет обновленный файл, поэтому окна с архивами, открытые в Проводнике, просто обновятся в соответствии с новым содержимым архива.

Flasher wrote:
Если не получится, то по умолчанию TC4Shell лучше отвязать от ProgID zip-а.
Если тебе не нужна ассоциация между zip и TC4Shell, то просто не включай ее. Или что то иное подразумевалось?

Flasher wrote:
А можешь сделать, чтобы при применении обновлялись только изменённые значения вместо полной перезаписи?
Нет. Это механизм самодиагностики и подчистки ненужных файлов.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11412
Location: Москва

Post (Separately) Posted: Wed Apr 12, 2017 07:50    Post subject: Reply with quote

Dec wrote:
Я так и не понял, за что этот флаг отвечает.
А просто добавить его можно, чтобы избежать проблем?
Dec wrote:
Т.е. я не могу в своем коде отличить CopyHere от MoveHere.
Предлагаю по неиспользуемому флагу. 64, например.

Dec wrote:
А чем Temp лучше директории архива?
Никогда не любил, когда времянки создавались в том же каталоге. Во всех скриптах скидывал их только в Temp. 7z.exe, кстати, так же делает. Не всегда ясно без сигналов, откуда этот tmp прибыл. В моменты операций с файлами в той же панели этот файл может случайно оказаться в обрабатываемом списке после групповых выделений, что крайне нежелательно.
1) В крайнем случае можно сравнивать буквы дисков и в случае совпадения, перемещать в Temp. Архивы в отличии от медиа чаще собирают на системном диске. В случае иных дисков можно искать в корне System Volume Information либо $RECYCLE.BIN и скидывать туда, если нет, то создавать папку с атрибутом "скрытый".
2) Окна с архивами в Проводнике как-то касаются скриптов? Зачем им окна?

Dec wrote:
Или что то иное подразумевалось?
Постараться выяснить, как отобразить прогресс аналогично системному поведению, добавить связанные флаги. Если не выйдет, то сделать привязку zip к ProgID системы по умолчанию, чтобы пользователю не рассказывать как специально добиться такого результата.

Dec wrote:
Это механизм самодиагностики и подчистки ненужных файлов.
Не понял. Он так медленно срабатывает из-за чтения реестра? Диагностировать то он должен перед отрисовкой флагов в окне. А при чём тут применение?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Wed Apr 12, 2017 08:36    Post subject: Reply with quote

Flasher wrote:
А просто добавить его можно, чтобы избежать проблем?
Добавляй, я просто игнорирую ее в своем коде.

Flasher wrote:
Предлагаю по неиспользуемому флагу.
Однозначно нет, никаких хаков я использовать не буду. Код обработки один для всего, и для твоих скриптов, и для Drag&Drop, и для Copy&Paste. Завтра еще кто-нибудь создаст какого нибудь клиента, который будет использовать NSE типа моего для манипуляций с архивами. И кто-то может случайно передать недокументированный флаг и потерять данные.

Flasher wrote:
Никогда не любил, когда времянки создавались в том же каталоге.
А я наоборот.

Flasher wrote:
В крайнем случае можно сравнивать буквы дисков и в случае совпадения, перемещать в Temp.
Одинаковые буквы дисков - это еще не обозначает, что файлы расположены на одном физическом диске, ибо есть такая штука, как hardlink.

Flasher wrote:
Окна с архивами в Проводнике как-то касаются скриптов?
Потому что код обработки один для всего, использовать хаки для определения того, какая операция выполняется я однозначно не буду.

Flasher wrote:
Постараться выяснить, как отобразить прогресс аналогично системному поведению
Это я и так знаю, как сделать. Но делать не буду. Нет переданного дескриптора окна - нет UI.

Flasher wrote:
добавить связанные флаги
Куда добавить? Какие флаги?

Flasher wrote:
Если не выйдет, то сделать привязку zip к ProgID системы по умолчанию, чтобы пользователю не рассказывать как специально добиться такого результата.
Не понимаю эту фразу. Если не нужна ассоциация между zip и TC4Shell, то просто не включай ее.

Flasher wrote:
Он так медленно срабатывает из-за чтения реестра?
Не занимался анализом.

Flasher wrote:
Диагностировать то он должен перед отрисовкой флагов в окне. А при чём тут применение?
Возможно, диагностика не совсем правильный термин. При применении происходит обновление всех записей в реестре на случай, если они были изменены, или была произведена установка ассоциаций с другими программами (в этом случае я удаляю ненужные записи в реестре).
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11412
Location: Москва

Post (Separately) Posted: Wed Apr 12, 2017 14:05    Post subject: Reply with quote

Dec wrote:
Добавляй, я просто игнорирую ее в своем коде.
Я имел в виду тебя. Мне то зачем добавлять то, что не поможет? Проблему наличие неработающего флага не вызовет, проблему может вызвать как раз его неработоспособность.
Dec wrote:
Однозначно нет
Ну, если ты не сделаешь MoveHere, то все твои последние старания коту под хвост.
Dec wrote:
не обозначает, что файлы расположены на одном физическом диске, ибо есть такая штука, как hardlink.
Которая всегда расположена не то, что на одном физическом диске, а в пределах его одного тома. Very Happy
Dec wrote:
Куда добавить? Какие флаги?
В смысле куда? В код. 4 ты уже добавил. Остался 256.
Dec wrote:
Если не нужна ассоциация между zip и TC4Shell
Так это объяснять мне как автору скрипта придётся, что и нужно избежать.
Dec wrote:
При применении происходит обновление всех записей в реестре на случай, если они были изменены
Вот это вещь должна быть строго опциональной, ИМХО. Мало ли кто и по какой причине вносил правку. Было бы правильно флаг снизу добавить.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Wed Apr 12, 2017 14:38    Post subject: Reply with quote

Flasher wrote:
Я имел в виду тебя.
А что мне добавить, если мы так и не выяснили, за что этот флаг отвечает.

Flasher wrote:
Ну, если ты не сделаешь MoveHere
А почему тебе так принципиально использовать именно MoveHere, почему не хочешь просто удалить файлы после CopyHere - Items.InvokeVerbEx("delete") (правда, тебе придется снова обновить TC4Shell с риском перезагрузки)

Flasher wrote:
Которая всегда расположена не то, что на одной физическом диске, а в пределах его одного тома. Very Happy
Ок, спутал с junctions points.

Flasher wrote:
Так это объяснять мне как автору скрипта придётся, что и нужно избежать.
Просто пиши комментарий в скрипте, что окна с прогрессом не будет, потому что автор TC4Shell не хочет его делать.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Программное обеспечение All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next
Page 7 of 8

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group