Открыть новую вкладку в текущем окне

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Re: Открыть новую вкладку в текущем окне

Сообщение laburj »

DoctorIkari писал(а):Суть: пропатчил файл uTorrent.exe чтобы возможно было перходить в тотал по меню "Открыть папку".
можешь рассказать как ты нашёл пункт "Открыть папку" и в какой программе ты его искал?
мои действия:
распаковал utorrent с помощью upx, открыл ResHack'ом и пытался найти что-то напоминающее "explorer", но увы не нашёл.. может плохо искал?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Re: Открыть новую вкладку в текущем окне

Сообщение MVV »

DoctorIkari писал(а):MVV, ты в чем просматривал файл?
Я привык к WinHex и пользуюсь только им.
laburj писал(а):мои действия:
распаковал utorrent с помощью upx, открыл ResHack'ом и пытался найти что-то напоминающее "explorer", но увы не нашёл.. может плохо искал?
Надо было открывать не ресурс хакером, а hex-редактором. Искомые строки находятся в секции данных, а не в секции ресурсов.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

MVV, а не мог бы поподробнее рассказать как и что ты искал в winHex'e и в последствии на что заменял?
а также как сравнивал 2 файла в winHex'e?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

laburj писал(а):MVV, а не мог бы поподробнее рассказать как и что ты искал в winHex'e и в последствии на что заменял?
а также как сравнивал 2 файла в winHex'e?
Сравнивать можно просто в тотале. А в винхексе можно сравнивать и одновременно править, при этом можно сравнивать файлы с разных позиций (но кратных ширине строки) - для этого грузишь два файла и выбираешь View - Synchronize & Compare.

К сожалению, винхекс не позволяет править юникод-строки в текстовом виде, как некоторые hex-редакторы.

Открываешь распакованный файл в винхексе, жмешь Find Text, вводишь explorer.exe и выбираешь Unicode. Найдешь два места, где прописан explorer.exe - они рядом расположены. Далее нужно аккуратно прописать поверх строки explorer.exe новую строку (автор темы прописывал open.lnk) - необходимо уместиться в длину исходной строки. В юникод-строках каждый символ занимает два байта, английские символы кодируются как сам символ и за ним нулевой байт - поэтому все английские юникод-строки выглядят как текстовые строки, где после каждого символа идет нулевой байт - так их и надо оставить, и обязательно в конце два нулевых байта для завершения строки. То есть, исходная строка explorer.exe длиной 12 символов плюс завершающий нулевой (или 26 байт):

Код: Выделить всё

65 00  78 00  70 00  6C 00  6F 00  72 00  65 00  72 00  2E 00  65 00  78 00  65 00  00 00
e      x      p      l      o      r      e      r      .      e      x      e      _
(подчерком я обозначил нулевой символ)

Прописываем поверх этой строки, скажем, строку open.lnk длиной 8 символов плюс нулевой (18 байт):

Код: Выделить всё

6F 00  70 00  65 00  6E 00  2E 00  6C 00  6E 00  6B 00  00 00
o      p      e      n      .      l      n      k      _
Прописывать новые значения можно как в столбце текста, так и в столбце hex-значений (например, нулевой байт можно прописать только в нем).
А остаток исходной строки (там еще будут символы exe и нулевые байты) можно оставить без изменения, так как мы и так прервали строку нулевым символом (то есть, двумя нулевыми байтами).
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

MVV, спасибо огромное за такое подробное разъяснение!
подправил свой utorrent и теперь открывает папку в новой папке текущей панели

ярлык таков:
C:\totalcmd\TOTALCMD.EXE /O /S /T


пс. правда одно НО! :
Если торрент содержал один лишь файл, без папки, то в тотале его папка не открывается, а только лишь активируется тотал.
Последний раз редактировалось laburj Ср июн 23, 2010 14:28, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj
Нет такого ключа /L, есть ключ /L=<путь>, и восприниматься он будет Тоталом в данной команде как исходный каталог. См. справку.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Flasher
случайно добавил, copy-paste подвёл
но всё равно проблему не решает
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj
Да как же он будет открывать ТС в нужной папке и ставить курсор на нужный файл, если не задан сам путь к файлу? См. как я писал во втором посте. Сразу пишу, что пока свой utorrent не патчил, поэтому точно сказать не могу, что даёт специальный параметр utorrent-a "%s", я его понимаю как вставку полного пути в комстроке, как в случае с ТС это был бы %P%N.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Я проверял с батником. Если исправлять только путь к explorer.exe, то параметры, передаваемые ярлыку (или батнику), будут такими:

Код: Выделить всё

/select,"X:\путь\к\папке"
Такой параметр будет передаваться ярлыку при выборе команды перехода в контекстном меню торрента из одного файла, а также при выборе команды перехода в контекстном меню любого файла в списке файлов торрента. А команда перехода из контекстного меню торрента-папки передает просто путь к папке. Поэтому надо еще подправить строчку файла, содержащую этот самый /select. Это единственная строка файла /select,"%s", и ее нужно исправить на просто "%s" (она тоже в юникоде, поэтому после каждого символа нужен нулевой байт, а в конце - два). После корректировки мюторрент будет передавать ярлыку просто полный путь к файлу или папке в кавычках.
Нет такого ключа /L, есть ключ /L=<путь>, и восприниматься он будет Тоталом в данной команде как исходный каталог. См. справку.
Кстати, хорошо, что тотал понимает и просто путь в командной строке, без /L=. Поэтому в ярлык можно написать просто TOTALCMD.exe /O /S /T, а мюторрент при запуске ярлыка будет указывать дополнительный параметр - путь к файлу/папке - и тотал будет прыгать к объекту в новой вкладке активной панели запущенного тотала - собственно, такие параметры и используются в описанном выше ярлыке. А вот с неактивной панелью такой фокус уже не пройдет, придется менять в мюторренте описанную выше строчку на /R="%s", или же ярлыком запускать батник, который будет передавать тоталу параметр /R=%1.
Сразу пишу, что пока свой utorrent не патчил, поэтому точно сказать не могу, что даёт специальный параметр utorrent-a "%s", я его понимаю как вставку полного пути в комстроке, как в случае с ТС это был бы %P%N.
Здесь строка /select,"%s" - форматная строка функции построения строк по формату (например, есть стандартная системная функция wsprintf), и %s означает, что параметр является строковым - в этом параметре мюторрент и передает функции путь к файлу/папке.
Последний раз редактировалось MVV Ср июн 23, 2010 16:08, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Это единственная строка файла /select,"%s", и ее нужно исправить на просто "%s"
Пока разницы в эффекте не почувствовал.
MVV писал(а):Кстати, хорошо, что тотал понимает и просто путь в командной строке, без /L=. Поэтому в ярлык можно написать просто TOTALCMD.exe /O /S /T, а мюторрент при запуске ярлыка будет указывать дополнительный параметр - путь к файлу/папке - и тотал будет прыгать к объекту в новой вкладке активной панели запущенного тотала
Фактически уже начал писать об этом, опередил, только вот прыжка не наблюдается.
MVV писал(а):Здесь строка /select,"%s" - форматная строка функции построения строк по формату (например, есть стандартная системная функция wsprintf), и %s означает, что параметр является строковым - в этом параметре мюторрент и передает функции путь к файлу/папке.
Тем не менее, как оказалось и без него всё работает. Вот только с перескоком-то что делать?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Чтобы переход к файлу или папке работал на ура, необходимо пропатчить строку /select,"%s" файла - у меня после изменения этой строки на "%s" все работает на ура. Как вариант, можно просто поставить в этой строке пробел вместо запятой - тогда ТК при запуске проигнорит параметр /select, а следующий за ним путь откроет в панели. :D
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Flasher писал(а):MVV писал(а):Это единственная строка файла /select,"%s", и ее нужно исправить на просто "%s"Пока разницы в эффекте не почувствовал.
я тоже увы не разницы не заметил, файлы мюторрента как не открывались в торренте, так и не открываются, только папки.
MVV писал(а): Как вариант, можно просто поставить в этой строке пробел вместо запятой - тогда ТК при запуске проигнорит параметр /select, а следующий за ним путь откроет в панели.
так тоже пробовал, но увы всё по прежнему
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Ну, ребята, не знаю, у меня работает правильно. Попробуйте прописать в свойства ярлыка не тотал с параметрами, а чисто бат-файл без параметров:

Код: Выделить всё

@echo off
echo %*
pause
cls
Тогда он будет показывать параметр, с которым его запустил мюторрент. Во всех случаях показывать должно лишь полное имя файла/папки в кавычках.
Мюторрент точно тот патчите? Перезапускаете? :D

Изменял я строку:

Код: Выделить всё

2F 00  73 00  65 00  6C 00  65 00  63 00  74 00  2C 00  22 00  25 00  73 00  22 00  00 00
/      s      e      l      e      c      t      ,      "      %      s      "      _
И прописывал поверх нее строку:

Код: Выделить всё

22 00  25 00  73 00  22 00  00 00
"      %      s      "      _
А с просто пробелом вместо запятой попробовал - не так работает, как ожидалось, факир был нетрезв.
Тем не менее, как оказалось и без него всё работает.
Без него не работает. :) Если, конечно, он - это параметр %s в форматной строке. А просто так абы где (например, в свойствах ярлыка) его указывать и не получится.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

А я просто дЭлю строки в текстовом режиме

Код: Выделить всё

/.s.e.l.e.c.t.,.
Это не то же самое?
MVV писал(а):А просто так абы где (например, в свойствах ярлыка) его указывать и не получится.
Указать-то получится, только толку от него - ноль. :)
Последний раз редактировалось Flasher Ср июн 23, 2010 16:58, всего редактировалось 2 раза.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher писал(а):А я просто делю строки в текстовом режиме

Код: Выделить всё

/.s.e.l.e.c.t.,.
Это не то же самое?
В смысле "делишь"? Каждый второй символ строки должен быть нулевым байтом (00 в hex, а в текстовом столбце он отображается в виде точки), а после последнего должно идти минимум два нулевых байта (00 00 в hex). И тебе надо поверх этой строки /select прописать строку "%s". А в столбце текста нулевой байт поставить невозможно.
Указать-то получится, только толку от него - ноль. :)
Это и подразумевалось. :)
А толку от него будет ни больше ни меньше дополнительная пара символов %s.
Последний раз редактировалось MVV Ср июн 23, 2010 17:01, всего редактировалось 1 раз.
Ответить