|
Панель быстрого запуска, как добраться до её свойств?
|
|
| DarkDemon | Дата: Суббота, 11.04.2026, 13:41 | Сообщение # 1 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Стоит винда 7, панель добавлена руками через ПКМ --> панели --> создать панель инструментов. Дальше туда вписано %userprofile%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch. Убрано название панели и подписи кнопок. По факту выходит то же самое что и в 98\XP. Но есть одна неприятная деталь, добавляешь кнопку и она пропадает из-за того размер панели фиксированный. Меня долго дрючила эта тема и решил попробовать побороть, но хрен там пел.
Чтобы было понятнее что нужно приложу картинку.

Значит сел за компиль, сначала не понял как добраться до окна, поставил Window Detective, посмотрел там класс окна и название, написал сие:
Код #INCLUDE ONCE "windows.bi"
DIM hTray AS HWND = FindWindowEx (0, 0, @"Shell_TrayWnd", 0) DIM hReBar AS HWND = FindWindowEx (hTray, 0, @"ReBarWindow32", 0) DIM hQuickLaunch AS HWND = FindWindowEx(hReBar, 0, @"ToolbarWindow32", 0)
Но любая попытка жёстко изменить размер окна через MoveWindow, SetWindowPos или же SendMessage(hQuickLaunch, TB_SETBUTTONSIZE, .... заканчивается очевидно ничём... Тут я понял, что бесполезно пытаться через свойства, к тому же Window Detective показывает мало свойств(как будто он не может туда залезть). Вспомнил про ArtMoney и то как писал модификатор значений для игрушки с PSX, но вот жопа в том что встроенные средства выявления процессов(3 типа: kernel32.dll, psapi.dll, user32.dll) ArtMoney не видят панель задач и трей т.е. этот самый explorer.exe.
Так вот как и чем вообще эту хрень вскрыть, или может есть путь проще чтобы задать размер панели(желательно без перезагрузок винды и explorer.exe)?
Как бы если не получится нормально, то просто напишу софтину, которая будет на долю секунды блокировать мышь хуком и через эмуляцию событий потом включать плавающую панель, двигать ползунок и выключать, понятно что это очень кривой путь. Ну а как ещё?
Есть какие-нибудь идеи?
|
| |
|
|
| haav | Дата: Суббота, 11.04.2026, 14:58 | Сообщение # 2 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1459
Статус: Offline
| Леха , попробуй поработать с ReBar. То есть, у тебя это хендл окна hReBar. Какое послать сообщение , сразу не могу сказать. Почитай доку (особенно Rebar Control Messages): https://learn.microsoft.com/en-us....ference
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| DarkDemon | Дата: Суббота, 11.04.2026, 16:28 | Сообщение # 3 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Стас, спасибо за инфу, попробую разгрести, хотя и слабо верится что там что-то пойму.
Навскидку пока вижу это https://learn.microsoft.com/en-us....borders https://learn.microsoft.com/en-us....ndwidth
Ща буду думать как этот код закодить...
|
| |
|
|
| DarkDemon | Дата: Суббота, 11.04.2026, 16:50 | Сообщение # 4 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Не, похоже ноль эмоций...
Код #INCLUDE ONCE "windows.bi"
#IFNDEF RB_GETBANDBORDERS CONST RB_GETBANDBORDERS = 1058 #ENDIF
DIM hTray AS HWND = FindWindowEx (0, 0, @"Shell_TrayWnd", 0) DIM hReBar AS HWND = FindWindowEx (hTray, 0, @"ReBarWindow32", 0) 'DIM hQuickLaunch AS HWND = FindWindowEx(hReBar, 0, @"ToolbarWindow32", 0)
DIM Razm AS RECT
SendMessage(hReBar, RB_GETBANDBORDERS, 0, VARPTR(Razm))
SLEEP 100, 1
PRINT Razm.Top PRINT Razm.Left PRINT Razm.Right PRINT Razm.Bottom
SLEEP

Из под администратора тоже запускал, PostMessage пробовал, индексы в wparam перебирал, разницы нет.Добавлено (11.04.2026, 17:07) --------------------------------------------- Ну и вот отсюда не понятно как получать возвращаемое значение. https://learn.microsoft.com/en-us....ndcount
GetMessage забирает только из текущего потока. А hReBar не принадлежит к потоку моей программы.
Т.е. оно походу не может влезть в чужой поток ни одной функцией, которую я пытался использовать. Надо думать как этот туннель пробурить...
Сообщение отредактировал DarkDemon - Суббота, 11.04.2026, 16:54 |
| |
|
|
| haav | Дата: Суббота, 11.04.2026, 17:34 | Сообщение # 5 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1459
Статус: Offline
| Вряд ли поможет , но ты пробовал PostMessage вместо SendMessage?
---------- Может то , что ты хочешь , делается с помощью COM интерфейсов. А может вообще такого открытого функционала нет (банально такого метода в COM интерфейсе не вводили , посчитав что это нафиг никому будет не нужно).
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| DarkDemon | Дата: Суббота, 11.04.2026, 18:18 | Сообщение # 6 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Может, я потому и хотел через память попробовать. Слушай, у тебя вроде была прога где ты сканировал память. Тоже для каких-то игр там. У тебя остался пример? Как ты получал валидные диапазоны памяти процесса?
Может удастся добраться до этой штуки в explorer-e, оно же по любому где-то в памяти хранит эти значения, может там и сигнатуры есть, к которым удастся закрепиться для получения относительных указателей.
Цитата Вряд ли поможет , но ты пробовал PostMessage вместо SendMessage? Пробовал. Тоже самое. Ещё пробовал такую конструкцию(индексы тоже перебирал):
Код DIM rbbi AS REBARBANDINFO ZeroMemory(@rbbi, SIZEOF(REBARBANDINFO))
rbbi.cbSize = SIZEOF(REBARBANDINFO) rbbi.fMask = RBBIM_SIZE ' Гугл "помощник" выдал RBBIM_CX, но такой константы не нашёл, в хедере есть только RBBIM_SIZE rbbi.cx = 400
SendMessage(hReBar, RB_SETBANDINFO, 0, @rbbi)
Часть констант есть в win/commctrl.bi, который видимо тоже надо подключать.
Сообщение отредактировал DarkDemon - Суббота, 11.04.2026, 18:24 |
| |
|
|
| haav | Дата: Суббота, 11.04.2026, 19:09 | Сообщение # 7 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1459
Статус: Offline
| Ты эту имеешь ввиду?
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| DarkDemon | Дата: Суббота, 11.04.2026, 19:15 | Сообщение # 8 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Код Ты [url=https://users.freebasic-portal.de/freebasicru/hackgame.html]эту[/url] имеешь ввиду?
Да. Буду колупать. Кода вроде немного, но он, скажем так - насыщенный.
|
| |
|
|
| DarkDemon | Дата: Суббота, 11.04.2026, 19:40 | Сообщение # 9 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Так мужики, что-то начинаю нащупывать)))
Через ArtMoney библиотека для просмотре процессов: user32.dll Вкладка поиск, тип процесса: ВСЕ
Выбираем сверху процесс: Program Manager, дальше таскаем ползунок в панели быстрого запуска и отсеиваем...
По итогу видим три одинаковых основных значения (которые вроде совпадают с размером) и два побочных (которые при увеличении размера - уменьшаются ровно на столько же пикселей на сколько сдвигаем).

Добавлено (11.04.2026, 21:39) --------------------------------------------- Короче, абсолютно дичайше адский метод тыка абсолютно случайно дал положительный результат. Каким хером оно работает я честно сказать не возьмусь, но работает.
Вкратце, из трёх красных значений на картинке выше реальное - лишь среднее. Сначала меняем его, а потом хуяк и делаем:
Код ShowWindow (hReBar, SW_HIDE OR AW_HOR_NEGATIVE) ShowWindow (hReBar, SW_SHOWNA OR AW_HOR_NEGATIVE)
И оно, сука, работает. Осталось понять, как программно всегда правильно находить это значение в памяти. Сейчас пока это не очевидно, но пол дела сделано. Принцип теперь известен. НО надо тестить. Как минимум ещё на темах AERO. На классической - работает.
Добавлено (12.04.2026, 02:22) ---------------------------------------------
Итак, короче накидал скелет проги из того что было у меня. Пока промежуточная вариация с фиксированным адресом, который руками находим через ArtMoney по методичке выше и перебиваем в переменную BarWidthAdress, далее компилируем и запускаем.
Код ' ' [ AUTO_QL.BAS ] - Динамический размер панели быстрого запуска ' Версия: 0.5 \ Альфа ' FBC : 1.10.1 (64 Бит) '
'$Lang: "FB"
#INCLUDE ONCE "windows.bi" #INCLUDE ONCE "Win\tlhelp32.bi"
DECLARE SUB InitALL () DECLARE SUB RefreshQuickLaunch () DECLARE SUB GetIconCount ()
DECLARE FUNCTION ExamineFolder (BYVAL DirectoryName AS STRING, BYVAL Pattern AS STRING) AS INTEGER DECLARE FUNCTION GetNextEntry (BYVAL DirHandle AS INTEGER) AS INTEGER DECLARE FUNCTION FinishSearch (BYVAL DirHandle AS INTEGER) AS INTEGER DECLARE FUNCTION GetAttributes () AS INTEGER DECLARE FUNCTION DirEntryName () AS STRING
DIM SHARED FileInfo AS WIN32_FIND_DATA
DIM SHARED hTray AS HWND DIM SHARED hReBar AS HWND DIM SHARED hQuickLaunch AS HWND
DIM SHARED BarWidthAdress AS INTEGER = &H0041A360 DIM SHARED Icons AS INTEGER DIM SHARED LastCount AS INTEGER DIM SHARED Pixels AS LONG ' 4 байта - ширина меню быстрого запуска
DIM SHARED Path AS STRING ' Путь к папке быстрого запуска
DIM SHARED ShotID AS HANDLE ' Хендл снимка процессов DIM SHARED Exp_ID AS DWORD ' Найденный ID процесса explorer.exe DIM SHARED PID_RW AS HANDLE ' Открытый дескриптор процесса DIM SHARED FoundExp AS INTEGER ' Найден ли Program Manager (explorer.exe) DIM SHARED WrkAddr AS LPVOID ' Адрес куда пишем данные DIM SHARED BytesDo AS ULONGINT ' Сколько байт было записано DIM SHARED FResult AS INTEGER
' Делаем снимок процессов ShotID = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) IF ShotID <> INVALID_HANDLE_VALUE THEN DIM pe32 AS PROCESSENTRY32 pe32.dwSize = SIZEOF(PROCESSENTRY32) Process32First (ShotID, VARPTR(pe32)) IF Process32First (ShotID, VARPTR(pe32)) THEN DO
IF pe32.szExeFile = "explorer.exe" THEN ' explorer.exe SLEEP 100, 1 FoundExp = -1 Exp_ID = pe32.th32ProcessID EXIT DO END IF
LOOP WHILE Process32Next(ShotID, VARPTR(pe32)) END IF END IF
InitALL () GetIconCount () ' Узнаем кол-во иконок на старте LastCount = Icons ' Запомним кол-во иконок
PRINT "FoundExp ="; FoundExp
DO SLEEP 1000, 1 GetIconCount () ' Узнаем кол-во иконок ' Если изменилось IF Icons <> LastCount THEN PRINT "Izmen...ok" IF FoundExp THEN PID_RW = OpenProcess(PROCESS_VM_READ OR PROCESS_VM_WRITE OR PROCESS_VM_OPERATION, 0, Exp_ID) IF PID_RW <> 0 THEN ' Пишем в память ширину WrkAddr = CAST(LPVOID, BarWidthAdress) FResult = WriteProcessMemory(PID_RW, WrkAddr, @Pixels, SIZEOF(Pixels), @BytesDo) 'FResult = ReadProcessMemory(PID_RW, WrkAddr, @Pixels, SIZEOF(Pixels), @BytesDo) PRINT "Pixels ="; Pixels CloseHandle(PID_RW) END IF END IF ' Если запись в память прошла успешно IF (FResult <> 0) AND BytesDo = 4 THEN RefreshQuickLaunch () ' Обновим быстрый запуск LastCount = Icons PRINT "Refresh...ok" END IF END IF
LOOP UNTIL INKEY = CHR(27)
END
' ' Базовая инициализация ' SUB InitALL () hTray = FindWindowEx (0, 0, @"Shell_TrayWnd", 0) hReBar = FindWindowEx (hTray, 0, @"ReBarWindow32", 0) hQuickLaunch = FindWindowEx(hReBar, 0, @"ToolbarWindow32", 0) Path = ENVIRON("userprofile") + "\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch" END SUB
' ' Обновление быстрого запуска ' SUB RefreshQuickLaunch () ShowWindow (hReBar, SW_HIDE OR AW_HOR_NEGATIVE) ShowWindow (hReBar, SW_SHOWNA OR AW_HOR_NEGATIVE) END SUB
' ' Узнать кол-во иконок (файлов в папке быстрого запуска) ' SUB GetIconCount () DIM fd AS WIN32_FIND_DATA DIM FId AS INTEGER DIM IsEntry AS INTEGER DIM TekFNm AS STRING ' Текущее имя файла\директории DIM DEA AS INTEGER ' DirectoryEntryAttributes
FId = ExamineFolder(Path + "\", "*.*")
Icons = 0 IF FId THEN TekFNm = DirEntryName() DEA = GetAttributes() IF (DEA AND FILE_ATTRIBUTE_DIRECTORY) = 0 THEN IF LCASE(TekFNm) <> "desktop.ini" AND TekFNm <> "." AND TekFNm <> ".." THEN Icons += 1 END IF END IF
DO ' Есть ли на этом уровне файлы\папки IsEntry = GetNextEntry(FId) TekFNm = DirEntryName() DEA = GetAttributes() IF (IsEntry = 1) AND ((DEA AND FILE_ATTRIBUTE_DIRECTORY) = 0) THEN IF LCASE(TekFNm) <> "desktop.ini" AND TekFNm <> "." AND TekFNm <> ".." THEN Icons += 1 'PRINT !"\u" + TekFNm + STR(IsEntry) END IF END IF 'IF INKEY = CHR(27) THEN EXIT DO LOOP UNTIL IsEntry = 0 FinishSearch(FId) END IF ' Вычисляем по кол-ву пикселей на иконку правую границу Pixels = Icons * 23 + 4 END SUB
' Обёртка из WinAPI для сканирования директории
FUNCTION ExamineFolder(BYVAL DirectoryName AS STRING, BYVAL Pattern AS STRING) AS INTEGER DIM strPattern AS STRING strPattern = DirectoryName + Pattern + CHR(0) RETURN CINT(FindFirstFile(SADD(strPattern), @FileInfo)) END FUNCTION
FUNCTION GetNextEntry(BYVAL DirHandle AS INTEGER) AS INTEGER RETURN FindNextFile(CAST(HANDLE, DirHandle), @FileInfo) END FUNCTION
FUNCTION FinishSearch(BYVAL DirHandle AS INTEGER) AS INTEGER RETURN FindClose(CAST(HANDLE, DirHandle)) END FUNCTION
FUNCTION GetAttributes() AS INTEGER RETURN FileInfo.dwFileAttributes END FUNCTION
FUNCTION DirEntryName() AS STRING RETURN FileInfo.cFileName END FUNCTION
Теперь надо разгребать ту софтину, что дал Стас, как-то автоматически находить адрес по привязкам в памяти. Всё зависит от фиксированности возможных относительных привязок к этому адресу, может и не получится хз. Но интересно это колупать.
Сообщение отредактировал DarkDemon - Воскресенье, 12.04.2026, 02:50 |
| |
|
|
| DarkDemon | Дата: Воскресенье, Вчера, 02:38 | Сообщение # 10 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Как эта штука работает показано на видео:
|
| |
|
|
| haav | Дата: Воскресенье, Вчера, 07:10 | Сообщение # 11 |
 Генералиссимус
Группа: Администраторы
Сообщений: 1459
Статус: Offline
| Цитата DarkDemon (  ) Всё зависит от фиксированности возможных относительных привязок к этому адресу, может и не получится хз.
А если под отладчиком это погонять? Может там проще искать зацепку.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| DarkDemon | Дата: Воскресенье, Вчера, 10:12 | Сообщение # 12 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Цитата haav (  ) А если под отладчиком это погонять? Может там проще искать зацепку. По сути да, там при должных навыках - выгоднее. Но я плохо владею виндовыми отладчиками. Надо подтягивать эту область, тут то времени нет, то желания. Хотя основной инструмент - HEX просмотр дата секции. Он есть и в отладчиках и в том же ArtMoney, сигнатуры найти можно. Скорее вопрос постоянства от запуска к запуску. Мол достаточно перезагуржать explorer.exe или нужно всю систему перезагружать, чтобы понять что что-то поменялось. Судя по карте процесса - explorer.exe огромный процесс с кучей всяких штук, халявно и просто тут не будет. Короче это максимально геморойный тестинг. И ещё твой код не изучил. Вот думаю, по сути утилита должна запускаться в автозагрузке при старте винды в скрытом виде, по висящим песочным часам понятно что нужна очередь сообщений, т.е. создать руками окно, спрятать его и уже потом ждать, ну и желательно чтобы сканирование памяти сильно не вешало диспетчер задач(ArtMoney тратит секунды две и даже это - много), возможно сделать приоритет процессу - Idle. Плюс опционально можно задержку старта, потому что на старте винды грузится куча софта в той же автозагрузке. Т.е. есть над чем покопаться и на чём закопаться.Добавлено (12.04.2026, 10:24) --------------------------------------------- Плюс нужна проверка корректности записи в адрес. Но это понятно как сделать, взять RECT с hQuickLaunch получить значение из памяти, прибавить единицу, записать, обновить, сравнить. Если на RECT-е есть увеличение - значит корректно, в противном случае можно прогу терминировать. Добавлено (12.04.2026, 10:36) --------------------------------------------- Одна из зацепок в данном случае это ТРИ одинаковых значения через определённые промежутки(через 8 байт). Судя по всему зависимые от ширины RECT-а. Достаточно их найти, а дальше относительно них уже попытаться увидеть текстовые сигнатуры(которые уже могут не фиксированно, но где-то рядом находиться), при наличии которых уже будет +/- понятно что это тот самый диапазон и можно уже будет делать чек, сильно не опасаясь что промахнулись. Думаю такая стратегия должна сработать на конкретной операционной системе(Win7).
Но есть ещё XP, VISTA, 8, 10. Охватить бы ещё их, хотя чую что там не только охватить, а ещё отхватить можно...
|
| |
|
|
| zamabuvaraeu | Дата: Воскресенье, Вчера, 15:42 | Сообщение # 13 |
|
Полковник
Группа: Друзья
Сообщений: 191
Статус: Offline
| напомнило историю, о которой упоминал Реймонд Чен: Парсинг структур данных Проводника
Одна софтверная компания решила, что им нужно модифицировать поведение окна Проводника из расширителя оболочки (shell extension). Поскольку нет никакого способа сделать это легально (расширение оболочки не должно влиять на пользовательские настройки окна - они принадлежат пользователю), то они решили сделать это другим способом.
Из расширения оболочки они использовали недокументированное сообщение, которое позволяло получить указатель на внутренние структуры данных Проводника. Потом они проходились вдоль структуры, пока не находили часть, которую они узнавали. Потом они говорили: "штука, что я хочу, лежит сразу за штукой, что я сейчас опознал".
Ну, той "штукой", что они хотели и той штукой, что они опознавали, являлись базовые классы другого класса с множественным наследованием (такое не поддерживается в Delphi - прим. пер.). Если у вас есть класс, который наследуется от нескольких других классов, то нет никаких способов узнать порядок классов - это зависит от компилятора. Так уж случилось, что порядок этот был X,Y,Z во всех версиях Windows, в которых они протестировали свой продукт.
Кроме Windows 2000.
В Windows 2000 компилятор решил, что порядок будет X,Z,Y. Теперь, когда они просматривали структуру, видели "X" и говорили: "ага, следующей штукой здесь должен быть Y", но вместо этого там был Z. И тогда чуть позже они крэшили всю вашу систему.
Поэтому мне пришлось создать "фальшивый X,Y", поэтому когда программа начинала искать X (чтобы взять Y), то она находила и брала фальшивый Y.
Этот случай отнял у меня добрую половину недели на анализ.Добавлено (12.04.2026, 17:12) --------------------------------------------- Цитата Но я плохо владею виндовыми отладчиками. Надо подтягивать эту область, тут то времени нет, то желания. Хотя основной инструмент - HEX просмотр дата секции. Хороший отладчик https://x64dbg.com/
|
| |
|
|
| DarkDemon | Дата: Воскресенье, Вчера, 19:15 | Сообщение # 14 |
|
Генерал-майор
Группа: Друзья
Сообщений: 305
Статус: Offline
| Цитата В Windows 2000 компилятор решил, что порядок будет X,Z,Y. Теперь, когда они просматривали структуру, видели "X" и говорили: "ага, следующей штукой здесь должен быть Y", но вместо этого там был Z. И тогда чуть позже они крэшили всю вашу систему. Да не исключено. Определить систему по сути не сложно(из системных переменных). Но на тестинге можно опупеть. Придётся ставить кучу систем. Но ограничить можно сразу. В принципе мне оно надо только для 7-ки, это так уж, мол если удастся сваять, можно и о других подумать будет, при готовом коде соорудить что-то рабочее уже попроще.
О багах особо не думаю, там всего 4 байта, почти всегда, даже если их хаотично пульнуть - ничего не будет. А особенно если есть чёткие паттерны определения правильной ячейки и понятный механизм проверки. Само собой без какой-то уверенности что-то пулять в память - это не наш метод))) Но да, при каких-то редких и левых условиях можно пульнуть и не туда, но в любом случае больше 1 осечки не будет, что снижает риски. Особенно если оно для конкретной версии ОС. Тут прям силно платформозависимый софт.
По сути этим не планировал заниматься, вообще другие задачи в приоритете, просто брату менял винду, добавлял память и менял 32 битку на 64 битку. И меня попёрло настраивать "идеальную систему" ударился настраивать визуал и функционал и эта штука была бы последним приятным штрихом, да и самому пригодится, т.к. задолбало таскать этот ползунок, выгадывая чтобы меньше пикселей отхавало от панели задач. Плюс ко всему, возможно более гибко стану использовать эту панель. Ну и себе так же захотел всё настроить, там прям очень сексуально всё выглядит по визуалу. Да я реально переставлял винду 3 раза и 2 недели убил на настройку. Например, написал авто-скрипт для распаковки CS Source на RAM диск и его перезапуск, думаю все помнят как некоторые версии не запускались сразу и лагали при выстрелах(из-за отсутствия кеширования звуков). Потом замутил интеграцию 7Zip + WinRAR(только для RAR, по сути без интеграции). Зафигачил кастомный дизайн ПУСК-а для Classic Shell под AERO, кучу каких-то мелочей типа интеграции FlicFlac. Когда в системе всё компактно и ничего лишнего - скорость работы увеличивается. Плюс весь софт самый общий.
По быстрому запуску - как раз тот случай когда трачу несоразмерно и нерационально своё время, этим по факту должны были озаботится сами MS на стадии дизайна GUI. Т.к. настолько базовая потребность, но увы, обосрались.
Мне на самом деле смешно видеть на 11-й просто пустую полосу и пуск по центру, столько места пропадает. Просто полоса не использующаяся НИКАК. И толстые пикчи, вместо подписей на панели задач, пасиба MS за такую лажню. Интересно как там люди ориентируются когда 10 проводников открыто, несколько Gimp-ов, несколько блокнотов и надо их попеременно то включать то выключать, думаю это пиздец))).
Добавлено (12.04.2026, 19:17) ---------------------------------------------
Цитата zamabuvaraeu (  ) Его и выкачал. Но работал мало пока. В основном реверсил кое чего по мелочи с готового x64 asm кода. Так вроде всё +/- стандартно. Но надо смотреть нормальные пояснялки по нему.
Сообщение отредактировал DarkDemon - Воскресенье, 12.04.2026, 19:19 |
| |
|
|
| zamabuvaraeu | Дата: Понедельник, Сегодня, 14:56 | Сообщение # 15 |
|
Полковник
Группа: Друзья
Сообщений: 191
Статус: Offline
| У меня вообще эта панель сбоку слева + автоскрытие. Чтобы не отнимала полезное пространство монитора, которого всегда не хватает.
|
| |
|
|
|