Как стать автором
Обновить

Комментарии 117

ОМГ, правой кнопкой мыши -> Properties -> Taskbar buttons -> Never combine.
Патчить то, что под WFP нехорошо.
Я вроде написал, что о существование такой опции знаю, но группировку она все равно не отменяет.

Пример: у меня одновременно открыто несколько проектов, каждый из них лежит в своей папке.
Мне удобно, когда панель задач выглядит подобным образом:



В противном случае, все папки будут собраны в кучу, да и к тому же Windows не позволяет менять их распорядок. По моему не очень удобно.

Можно, конечно, привыкнуть, но зачем? :)
Не знаю, как там в windows, но слышал, что тоже есть понятия нескольких рабочих столов? Почему бы не использовать их для разделения работы с несколькими проектами одновременно?
В windows зер из онли уан стол.
Лучше VirtuaWin
Огромное спасибо! Наконец-то нашел систему виртуальных столов, где полностью корректно работает Chrome и еще некоторый нужный мне софт) Жалко, что не могу в карму плюс поставить…
Не знаю как вас отблагодарить!
Вы только что перевернули мой мир. Да, я конечно, знал и пробовал рабочие столы от разных создателей… но работало оно «не очень». То что есть такое же от MS я не знал.

Спасибо
Тогда советую вам поизучать по подробнее что у них есть: technet.microsoft.com/en-us/sysinternals/bb842062
Тут целый кладезь полезных утилит. Кстати ихние виртуальные столы с dwm никак не хотят дружить ;)
НЛО прилетело и опубликовало эту надпись здесь
Лучше Dexpot
Даже не знаю чего в нем нет.
Из коробки у винды такой опции нет. Есть сторонние приложения, предлагающие эту фичу, но они тоже не идеально работают.

Да и удобнее, по моему, когда все на одном экране. Пока есть место :)

А когда оно заканчивается… тот твикер, о котором я упомянул в статье, умеет не только отключать группировку, но и группировать произвольные кнопки:
Скриншот
НЛО прилетело и опубликовало эту надпись здесь
Ну лично у меня, если попробовать перетащить мышкой один из значков, например, проводника, перетащится и второй…
Хабр торт :)
В macosx, когда я хочу прибегнуть к подобной модификации программы, я иду немножко другим путем.
С помощью obj-dump я достаю полный дамп заголовков из бинарника, а не дизасемблирую его. Имея эти заголовки я могу, воспользовавшись проектом SIMBL, IMBL (можно и без него, конечно — этот проект просто позволяет не писать сотню-другую boilerplate кода) подменить (привычный и знакомый многим swizzle) имплементации методов в момент запуска приложения.

Преимущество такого подхода — после обновления приложения модификация не слетит (вероятность изменения сигнатуры метода мала), бинарник не модифицируется и как следствия не слетает codesign и можно свои модификации отключить просто убрав их из инжектора.

Подумал, может статью написать… Такие интересные вещи можно этим делать оО
Конечно написать. Было бы интересно почитать про это дело.
Теперь нужно придумать что-то интересное.
Кстати, я же уже публиковался с результатом: habrahabr.ru/post/151746/
Только вот не описывал, как я это сделал. Надо придумать новый tweak.
Интересное — напишите, пожалуйста, аналог DeathToDSStore.app, было бы интересно посмотреть, как хорошо оно будет работать.
на съемных дисках с FAT и NTFS когда он надумает писать этот файл — пусть передумает. А если какойто извращенец хочет с флешки запускать скрипты или еще чего-нить пусть создаст в папке файл .DS_Store и тогда Finder сможет его изменять. Но чтобы создавать не мог сам…
Кстати, как насчет того, чтобы использовать xattr-ы директорий для хранения содержимого .DS_Store? Т.е. перехватывать попытку создания файла .DS_Store и форвардить его в setxattr/fsetxattr для той же директории, в которой он должен был бы храниться.

И функциональность Finder-а в виде цветных закладок и порядка сортировки значков сохранится, и ничего мешать не будет.
Напишите, правда — потому Хабр и торт, что такое на нем встречается!
НЛО прилетело и опубликовало эту надпись здесь
напишите, с удовольствием почитаю, как, думаю, и многие на хабре. Как можно без него, как становится лучше с ним:)
Ну чтож. Уговорили. Цикл статей
1. Свой инжектор.
2. Своим инжектором встраиваемся в свое приложение и подменяем методы
2.1 Уже в чужое (принимаются предложения. Пока что планирую научить Ecoute ходить по списку песен одним кликом, а не двумя)
3. Используем для этих целей SIMBL

Пошел писать инжектор, к черту матан.
просьба кинуть в ПМ линк на статью, а то могу пропустить:)
правильно, делегируй свою задачу в чужой список задач!
Друг, запили лучше «Пуск» в 8ку
Classic shell имхо, получше будет :)
Об этом в самом начале топика написано.
Речь о том, что если открыть блокнот, потом, например консоль, а потом ещё один блокнот, то они выстроятся не по порядку открытия, а два блокнота, и потом консоль.
То есть тут скорее фиксилась сортировка, а не группировка.
И по мне так это даже удобно (не группировка, а именно такая сортировка)… так как через некоторое время интуитивно тыкаешься в нужное место в зависимости от приложения…
Это замечательно, что Вам удобно. А мне не удобно. Поэтому всем было бы хорошо, если бы интерфейс настраивался. Но ребята из MS почему-то решили, что такие пользователи как Вы есть, а таких как я нет.
В третьем абзаце про это написали. Даже со скриншотом.
Стандартная настройка Win-7 прекрасно работает, и группировки кнопок при её использовании не замечено. Это раз.

А два — привыкнуть к их группировке занимает от силы пару недель, и навигация потом уже не вызывает никаких затруднений.
Just for fun?
Группировки не будет, если вам нужны заголовки. Меня вот они не интересуют, а группировку убрать хочется. И хороша она ровно до момента, когда придётся много раз обратиться к одной из копии приложения и дрэг&дропнуть оттуда что-нибуль. Я уже задолбался.
Надеюсь здесь нет юристов российского представительства мелкософта, подсудное же дело :)
Если не ошибаюсь, по российскому законодательству, если ты легально приобрел софт, то отлаживать и декомпилировать его имеешь право :)
Если не ошибаюсь, в последней редакции 4й части ГК убрали явное указание этого.
Там разрешено только исправлять явные ошибки и несовместимость. Остальное дизассемблирование запрещено EULA, в ГК ничего не написано по этому поводу, значит, действует запрет из EULA.
Тут явная системная несовместимость с мозгом топик-стартера, потому нарушений ГК нет.
Это как раз та проблема, к которой я долго и тщетно искал решение. Думал, что таки будет когда-нибудь опубликовано решение без дополнительных утилит-твиков. Но, как Вы показали, такого решения не существует, к сожалению. Это плохая для меня новость.

Но есть и хорошая новость. Теперь есть твикер которому бы я доверил свой комп (в общем случае я не доверяю подобному софту). Спасибо Вам огромное.
интересно, сколько нужно будет провести времени в отладчике, когда Вы пересядете на Windows 8? Там допиливать поболе придется
Все давно сделано :)
На самом деле, портирование на Windows 8 было не такое сложное, код у обоих очень похож в плане панели задач. Единственное серьезное нововведение — поддержка нескольких мониторов.
Время, проведенное в отладчике, летит незаметно) Последний раз 2 игры ковырял, одну неделю, другую месяц. В итоге мозг радуется и довольно урчит.
Поначалу тоже бесило, что нельзя отменить группировку. А сейчас как-то попривык, даже логичной ее нахожу. Но утилитка интересная, вот бы три назад ее.
Вообще-то три года назад она уже была :)
image
Microsoft Symbol Server показывает названия функций для всех программ, или только для тех, которые написаны Microsoft? Мне кажется, это странно, что из скомпилированной программы можно вынуть человекочитаемые название — разве это не избыточная информация?
И еще. Можно ли во время взаимодействия с процессом смотреть какой код сейчас исполняется? С паузой на каждую строку, как положено.
Я почему спрашиваю: есть программа, которая на определенное событие умеет только прогрывать wav файл, хотелось бы научить ее пищать PC Speaker'ом.
Можно ходить по «строкам», между чем меняя код или данные. Можно ставить breakpoint-ы. Много всякого можно.
Есть даже плагин для писания скриптов: ODBGScript.
Только Майкрософтовские, конечно. В целом этот сервер предоставляет отладочные .pdb файлы, которые, кстати, можно скачать и пачкой:
msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx

Насчет избыточной информации — для этого оно и предназначено. Зачем Microsoft их публикует, я не знаю :)
Рад новой статье по реверсингу. Пишите еще!
Печально, что до сих пор не сделали 64-битную Ольку.
НЛО прилетело и опубликовало эту надпись здесь
Думаете, она удалённо добавит недостающую логику в explorer.exe? :)
замечательная программа, использую давно, спасибо вам, RaMMicHaeL, всем делать donate
Ох, спасибо тебе милчеловек за информацию по интеграции OllyDbg и Mycrosoft Symbol Server. Знатно я в своё время насиловал гугл по этому вопросу, но так и не нашел пояснений.
за исключением мелочей это прекрасный дизайн, современным дизайнерам есть чему на этом примере поучиться
Да, действительно, есть над чем поработать:
1. Неизменяемый размер окна.
2. Custom list неюзабелен из-за микроскопического размера, Allow list и Reject list тоже будут неудобны.
3. Overwrite logfile и Save to custom dir должны быть дополнены кнопочкой выбора файла/директории с помощью системного диалога.
4. Список Accept/Reject не кастомизируется.
5. Отсутствие акселераторов (хотя возможно они присутствуют, но просто не видны пока не нажат Alt).

И мы ещё не видели, что скрывается за кнопкой Pro Mode, возможно там всё это исправлено.
Пользуюсь вашей программой уже несколько лет, спасибо вам большое!
Только хотел написать «зачем изобретать велосипед, есть же замечательная 7+ Taskbar Tweaker» как вдруг… :)
RaMMicHaeL
Спасибо большое :-)
Если можно, расширьте возможности «не группировать закр. элементы» для отдельных процессов, то цены не будет вашему приложению
Уже есть :)

Вот
Третья опция, Group pinned item (Группировать закрепленный элемент).

image
Ухты спасибо :-)
Я привык как есть, не знаю что удобнее, но привык.
Вот научиться бы окна в пределах группы сортировать, вот бомба была бы!
И это умеем :)
Опция в твикере: Эскизы -> Менять местами перетягиванием
ААА чувааак! You made my day! Это то чего мне очень долго не хватало. Молю бога что это ещё и у меня в 8ке дома заработало. Задонатил немного :)
Мы ждали вас на хабре! Давайте теперь про ваш знаменитый плагин для Ольги :)
Сайт недоступен. Думал вечером скачаю, но видимо кончились лимиты на хостинге. Где можно еще скачать?
И до кучи вопрос: есть ли простая программа — вертикальное меню без каких-либо спецэффектов, котрое открывается при подведении мыши к краю экрана?
Спасибо. То, чего так долго не хватало.
Может кто на будь пропатчить Explorer так, что бы он не ругался на файлы с именами начинающимися с точки и без расширения? Типа ".htaccess".
Существует такой трюк: если добавить точку в конце, например ".htaccess.", Explorer ничего не будет иметь против, а последнюю точку сбросит.
Я про это знаю, но, как правило, вспоминаю после того, как explorer один раз откажется переименовывать.
Эта проверка находится в библиотеке shell32.dll, в функции IsEmptyFileName.

Скриншот

На скриншоте видно, что совершается проверка CMP EAX, 2E — то есть равен ли первый символ точке. Если заменить условный прыжок на безусловный, как на скриншоте, ошибки не будет.
Отдельное спасибо за отличную статью и отличную софтину.
Расскажите, пожалуйста, как Ваш твикер уживается с разными версиями explorer.exe? В разных пакетах обновления и обновлениях безопасности адреса заплаток разные же. Вы храните наборы заплаток для всех известных версий? Или распознаёте нужные адреса на ходу?
То, что описано в статье — демонстрация самого простого способа изменения работы процесса.
Твикер не модифицирует код, он использует более «совместимые» методы, среди которых:
* Хук функции методом подмены указателя в таблице виртуальных функций.
* Внутренние структуры.
* Subclassing окон.

За все время существования твикера, он ни разу не ломался из за обновления explorer.exe.
У таблицы виртуальных функций и у внутренней структуры всё же нужно определить адрес. Как? Читаете из PDB? (Если это секретное ноу-хау, так и скажите – я отстану.)
Да нет, не секрет. Все очень просто.

Все начинается с окошек:
hTaskbarWnd = FindWindow(L"Shell_TrayWnd", NULL);
hTaskbandWnd = (HWND)GetProp(hTaskbarWnd, L"TaskbandHWND");
hTaskListWnd = FindWindowEx(hTaskbandWnd, NULL, L"MSTaskListWClass", NULL);

У этих окошек проводник хранит указатель на класс в DWLP_MSGRESULT:
lpTaskListLongPtr = GetWindowLongPtr(hTaskListWnd, DWLP_MSGRESULT);

В этих классах есть много всего интересного, например массив кнопок панели задач, который, кстати, хранится в виде dynamic pointer array (DPA).
> Если вы находитесь здесь по этой же причине
А я все внимательно прочитал. Спасибо, очень захватывающе.
Это первая программа, которую я ставлю на новую семерку.

К сожалению, когда на новой работе оказалась 7 винда, я не смог отключить идиотские всплывающие эскизы над кнопками на панели задач (как и не смог крепить папки в виде панели задач на части рабочего стола, как можно в XP). Эскизы всплывают при ховере. Ховер — самое ужасное событие на которое можно навесить действие (для сайтов кстати тоже).

Так вот, перерыв весь гугл, я не нашел ничего (было года 3.5 назад). Гуглил в несколько подходов в разные дни, каждый раз не в состоянии поверить что это невозможно пофиксить. Ну и в навыках гугления себя ламером не назову. Всегда считал что могу нагуглить все что угодно. Пришлось смириться.

Так я проработал 1.5 года.
Терпел, но не смирился.

Потом уволился с работы, и в один прекрасный день, решил купить себе новый ноут.
С предустановленной лицензионной win7.

Конечно, на своем собственном ноуте у меня было еще меньше желания продолжать видеть эти эскизы и группировку. Заранее зная о проблеме (предварительно погуглив еще разок) я предупредил продавца — куплю ноут только если отключите всплывающие эскизы. Продавец воспринял спокойно (видимо знал про Taskbar Tweaker, покопался в гугле минут пять и протянул мне бумажку с написанным названием твикера.

Вот такая история.

Теперь твикер ставлю на все 7 по дефолту в автозагрузку.
За программу автору невыразимый респект и почтение!
Он — Человек с большой буквы!
спасибо за программу!
было бы круто еще добавить возможность настраивать какие программы закрывать клавишей Esc и возможность тягать окна с Alt(хотя для этого есть твикеры но что б не ставить 2)
Просто супер!

image — радовался при каждом проставлении галочки.
Дизассемблер — это хорошо. Но вы будете смеяться: не далее как 3 дня назад я решал как раз эту задачу, и за пару минут нагуглилось вот что: superuser.com/questions/30007/is-there-any-way-to-hide-taskbar-labels-and-not-combine-taskbar-buttons

Как видите, решается простым созданием ключа в реестре. У меня, правда, размер шрифта нестандартный, поэтому пришлось поэкспериментировать с MinWidth, но в итоге все работает идеально.
Речь ведь совсем не об этом.

То, что описано по ссылке — вариант группировать, но не комбинировать.
То, что я описал в статье — полное отключение группировки.

Откройте у вас несколько копий блокнота, и сравните с этим скриншотом:
image

У вас они будут «слипнутые», и разлучить, или поменять местами, их не получится.
Да, вы правы: комбинирование выключилось, но группировка осталась. (Под группировкой понимается то, что 3 блокнота таскаются по панели задач, как единое целое; кстати, у вас в статье не акцентировано внимание на определении того, что такое «группировка».)
Еще было бы интересно почитать статью про то, как ваше приложение патчит эксплорер рантайм…
Что именно интересует?
Некоторые аспекты описаны здесь.
Просто более подробное описание этих идей. Хотя с другой стороны — читать всегда проще, чем писать… можно и самому разбраться если что.
Вы предлагаете визардов нагородить вместо компактного диалога настроек? Или может быть убрать настройки вовсе, как в продуктах Google и Apple?
А по-моему очень удобно. Все настройки сразу на виду. Вы можете быстро пробежаться глазами по трём колонкам настроек и выбрать то, что вам нужно. Вот если бы настроек было бы ещё больше, то уже можно было бы сделать вкладки по категориям, или слева дерево страниц с настройками.
RaMMicHaeL, а вы можете добавить в свою программу опцию показывания номера программы на «супербаре»? Что-то вроде вот этого.
Я джва года ждал такую программку…
Очень не хватает кастомизации часиков. Хотелось бы вывести секунды. Стандартные средства, к сожалению, не позволяют этого сделать.
Знаете, иногда бывает нужно что-нибудь замерить. Например, сколько секунд отрабатывает тот или иной алгоритм. И приходится либо считать в уме, либо кликать по часикам, открывая отдельный диалог. Пробовал разные утилиты — но всё не то. Хотелось бы страндартные часы, но просто с другим форматом отображения. Даже начали мысли посещать, что надо свою утилитку писать для этих целей :)
Я для этого использую clock.exe, который был ещё в NT4. Держу включенной галку «Always on top», а окно помещено в правый нижний угол поверх штатных часов. Есть и цифровой и аналоговый внешний вид, если помните.
А можно из группы выделить одно окно отдельно остальные оставляя сгруппировано?
Можно, или с помощью опции «Перетягивать внутри/между группами правой кнопкой мыши», или с помощью инспектора задач.
Как работает опция «Перетягивать внутри/между группами правой кнопкой мыши» к сожалению так и не разобрался, соединить в одну группу разные приложения можно, а разъединить никак не получается, а каждый раз лазить в инспектор задач не очень удобно.
Если группа комбинированная, то никак.
Чтобы временно раскрыть группу, можно использовать опцию Раскрывать: Активную группу / При наведении мыши.

Видео пример, с 0:55 по 1:05:
rammichael.com/7-taskbar-tweaker-v2-0
Спасибо! При раскрытии значки уже можно отделять, то что нужно.
Просто отличная утилита! Очень помогает в работе. Спасибо))))
На этот раз сравниваются так называемые Application ID — идентификатор аппликации, по которым панель задач группирует кнопки.

Однажды знакомая, живущая в Германии, перевела «application» как «аппликация». Я её поправил, а она возразила, что «у вас тоже скоро все так будут говорить». Видимо, она была права :)
А можно ли сделать так, чтобы через инспектор задач можно было переопределить для отдельного приложения отображение списков либо эскизов? Например, хочу для всего эскизы, а для проводника — списки.
Такой возможности нету.
Не планируете? Или вообще малореально такое реализовать
Пока нет, опция не очень востребованная.
Насколько реально реализовать — сложно сказать, надо покопаться с отладчиком.
Вот спасибо тебе святой человек! Полдня убил пытаясь сделать так, чтобы закрепленные окна отображались значками. Яндекс в ответ на это ничего путного не выдает. Оказывается, надо было подойти с другой стороны — убрать показ меток с определенных окон. С помощью вашей программы это удалось сделать!

PS: Отправил вам денежку на пиво )))

Вау, я столько лет пользуюсь этой программой и не знал что её русскоязычный сделал :)

Попал сюда из статьи, что в Windows 11 всё плохо :(

Microsoft: представляем самую безопасную Windows — Zero Trust, VBS, HVCI, TPM, ELAM, DRTM, BitLocker.

Пользователи Windows 11: качаем патченную DLL и твикер в одном флаконе в системную папку, чтобы вернуть панель задач.

Это, конечно, неправильно со стороны Microsoft — приучать пользователей пихать в системные каталоги патченные файлы.

Про Explorer Patcher - справедливости ради, это не "патченная DLL", а маленькая DLL, собранная со свободного исходного кода, которая грузится процессом explorer.exe и патчит его в памяти так, чтобы он использовал свой старый код, который еще не удалили. Название "Explorer Patcher", по моему, не удачное, но проект не мой.

Ну и оба инструмента - и Explorer Patcher, и 7+ Taskbar Tweaker - не запускаются от имени администратора. Так что почти любой установщик случайной программы имеет больше возможностей нарушить безопасность системы.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории