Вы должны войти, чтобы создавать сообщения и темы.

Trinity - Управление частотой процессора

1◄Страница 9 из 27► 27

Оптимизирован алгоритм быстрой и автоматической очистки ОЗУ

Из быстрой очистки исключён принудительный сброс модифицированных страниц памяти (Modified page list), который перенесён исключительно в "Глубокую очистку".
Теперь безопасный сброс файловых буферов томов (Modified file cache) освобождает больше полезной памяти без задержек ввода-вывода.

Поверх значка приложения теперь выводится текущий процент занятой ОЗУ со специальной теневой подложкой для максимальной читаемости (аналог функционала Mem Reduct).

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

Добавлены горячие клавиши для очистки ОЗУ

Ctrl + F1 — Быстрая очистка оперативной памяти (сброс кэша и рабочих наборов).
Ctrl + F2 — Глубокая очистка оперативной памяти (с предварительным сбросом модифицированных страниц).

disk.yandex.ru/d/E_vfHfAcbNM6gg

Реализовано динамическое тонирование иконки программы
При потреблении оперативной памяти от 85% треугольник окрашивается в красный цвет, предупреждая о возможном начале свопинга на диск и микрофризах в играх.

Редизайн подменю "Автоочистка ОЗУ"
Формат условий очистки приведен к единому виду со значком в трее: вместо процента оставшейся памяти отображается порог текущей загрузки ("Очищать при 70% / 75% / 80% / 85% / 90%").

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

В меню "🖱 Средняя кнопка на Рабочем столе" добавлен пункт "🎨 Пипетка цвета (HEX в буфер)"

Для быстрого копирования цвета пикселя под курсором в формате #RRGGBB с выводом стильного OSD-уведомления и наглядным цветным индикатором (превью цвета).
Удобно для дизайнеров, разработчиков и кастомизации системы без использования стороннего софта.

Теперь окно программы можно свернуть клавишей ESC.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

Полностью переработан алгоритм проверки нахождения курсора над Рабочим столом

Устранена проблема ложного перехвата колеса мыши над сторонними окнами (Диспетчер задач, Редактор реестра и Диспетчер устройств), если перед этим был сфокусирован Рабочий стол.
Убраны универсальные классы интерфейса (SysListView32, DirectUIHWND) из критериев определения Рабочего стола.
Введена строгая проверка принадлежности целевого окна к процессу оболочки (explorer.exe) и корневым классам Progman / WorkerW.

disk.yandex.ru/d/E_vfHfAcbNM6gg

В меню "📁 Проводник и кэш" добавлен пункт "Если в проводнике нет флешки"
Иногда из-за сбоя драйвера или некорректного извлечения флешка остаётся подключённой к ПК, но исчезает из Проводника.

Что делает функция

Принудительно восстанавливает автомонтирование томов (mountvol /e).
Сбрасывает зависший стек драйверов и кэш узлов USBSTOR через pnputil.
Инициирует мгновенное пересканирование шины Plug and Play (pnputil /scan-devices).

Есть вероятность, что накопитель определится и появится в "Этот компьютер" даже без необходимости физически вынимать его из разъёма.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Улучшение функции "Если в проводнике нет флешки"

Включено глобальное системное автомонтирование томов (mountvol /e) и добавлено принудительное присвоение свободных букв всем доступным разделам USB-накопителей (с автоматическим пропуском системных и зарезервированных областей).
Добавлен автоматический перевод обнаруженных USB-накопителей из состояния Offline в активный режим Online.
Добавлен автоматический сброс зависшего атрибута Read-Only на физическом уровне диска.
Реализовано строгое строковое экранирование идентификаторов устройств (InstanceId) при сбросе сбойных контроллеров через pnputil.
Завершающим этапом вызывается аппаратное пересканирование шины (/scan-devices) для мгновенной инициализации накопителя в системе.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Доработка функции "Если в проводнике нет флешки"

Спойлер
Устранена зависимость от powershell.exe и командлетов модуля Storage/CIM, которые могли работать нестабильно на оптимизированных или облегчённых сборках Windows.
Алгоритм перебора накопителей и привязки букв переведён на системные API.
Выполнение всей цепочки действий вынесено в отдельный рабочий поток пула потоков (RunAsync), что исключает зависание интерфейса программы на время работы дисковых утилит.

Реализован перебор зарегистрированных томов в системе с помощью FindFirstVolumeW / FindNextVolumeW.
Для обнаруженных томов без точек монтирования буква назначается напрямую через SetVolumeMountPointW (с повышением привилегии SE_MANAGE_VOLUME_NAME).
Это позволяет обойти флаги NoDefaultDriveLetter и атрибуты скрытия разделов (характерно для накопителей, подготовленных через Rufus, Ventoy или в среде Linux).
Первая свободная буква в диапазоне от D: до Z: определяется динамически через анализ битовой маски GetLogicalDrives().

Если накопитель не идентифицируется системой как съёмный (DRIVE_REMOVABLE), выполняется опрос свойств оборудования через DeviceIoControl (IOCTL_STORAGE_QUERY_PROPERTY).
Проверка свойства BusType == BusTypeUsb позволяет корректно подхватывать и монтировать внешние жёсткие диски, картридеры, а также быстрые внешние SSD (SATA/NVMe в USB-боксах и с протоколом UASP).

Добавлен предварительный вызов mountvol /e и пакетных команд diskpart (san policy=OnlineAll, automount enable, rescan).
Это предотвращает перевод новых дисков в режим "Вне сети" (Offline) системными политиками SAN и принудительно активирует службу автомонтирования.
Выполняется повторное сканирование аппаратной конфигурации через pnputil /scan-devices.

Отправляется широковещательное сообщение WM_DEVICECHANGE с флагом DBT_DEVICEARRIVAL и маской добавленного тома, уведомляя ОС о появлении нового диска.
Сбрасывается кэш каталога "Этот компьютер" (FOLDERID_ComputerFolder) через вызовы SHChangeNotify.
Через COM-интерфейс IShellWindows для каждого открытого окна Проводника вызывается метод Refresh(), благодаря чему назначенный диск сразу отображается в интерфейсе.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Оптимизация перехватчика мыши (Mouse Hook)

Ранее идентификатор процесса сбрасывался при скроллинге над сторонними окнами (браузеры, игры), из-за чего на каждый тик колёсика вызывалась "тяжёлая" функция FindWindow, сканирующая всё дерево окон Windows.
Теперь кэш инвалидируется только при реальном перезапуске explorer.exe (по событию TaskbarCreated).

При прокрутке или клике СКМ над любым сторонним приложением выполняется лишь быстрая сверка PID (GetWindowThreadProcessId).
Дорогостоящие проверки классов окон больше не затрагиваются.

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

disk.yandex.ru/d/E_vfHfAcbNM6gg

В контекстное меню трея добавлено подменю "🖱 Колесо мыши на Панели задач"

🚫 Отключить действие
🔊 Громкость (Вверх: + / Вниз: -)
🔆 Яркость монитора (Вверх: + / Вниз: -)
🗔 Рабочие столы (Вверх: Вправо / Вниз: Влево)
🎵 Треки плеера (Вверх: След. / Вниз: Пред.)

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

В контекстное меню трея добавлено подменю "🔄 Обновления"

"🔍 Проверить сейчас" — ручной запуск проверки новой версии программы.

"Спрашивать перед обновлением" (по умолчанию) — программа запросит подтверждение перед загрузкой и перезапуском.
"Обновлять автоматически" — включение авто-установки без всплывающих диалоговых окон.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

В контекстное меню трея "🔄 Обновления" добавлен пункт "Не проверять автоматически"
Для отключения проверки обновлений

disk.yandex.ru/d/E_vfHfAcbNM6gg

В меню "🕹 Игровые оптимизации" добавлен пункт "🛡 Создать точку восстановления Windows"

Если функция "📋 Сохранить текущие настройки" запоминает только положения тумблеров в самой программе, то точка восстановления создаёт полноценный системный слепок реестра и состояния служб Windows.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Сибирь
Сибирь

Добавлена функция быстрой смены локализации: в меню трея появился пункт "🌐 English version"

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

Принцип работы механизма
Переход осуществляется по схеме In-Place Hot-Swap (горячая замена исполняемого файла "на лету" без сторонних инсталляторов и скриптов).

Диалог подтверждения и обработка клавиш:
При клике на пункт меню выводится модальное окно MessageBoxW с текстом на двух языках.
Флаг MB_DEFBUTTON1 сразу ставит фокус на кнопку "Да / Yes", что позволяет подтвердить действие простым нажатием клавиши Enter.
Через установленный глобальный хук сообщений WH_MSGFILTER отслеживается нажатие клавиши Esc: при её нажатии хук автоматически шлет команду IDNO, закрывая окно и отменяя переход.

Проверка подключения к сети:
Перед обращением к облаку функция IsInternetConnected() проверяет сетевой статус через WinINet API. Если компьютер оффлайн, скачивание не начнется, а пользователю отобразится предупреждение.

Асинхронное получение метаданных (REST API):
Задача уходит в отдельный поток пула QueueUserWorkItem, предотвращая зависание интерфейса программы.
Через стек WinHTTP выполняется защищённый HTTPS-запрос к публичному REST API Яндекс Диска по ключу папки с английской версией.
Из полученного JSON-ответа парсятся: прямая ссылка на файл (file), точный размер (size) и дата модификации (modified).

Безопасное скачивание и валидация целостности:
Файл скачивается порциями по 8 КБ напрямую в буферный временный файл рядом с программой: Trinity.exe.tmp.
По завершении загрузки проверяется соответствие фактического размера файла размеру, переданному сервером, что исключает запуск поврежденного или недокачанного бинарника.

Атомарная подмена файла (Atomic File Replacement):
Поскольку работающий файл .exe заблокирован Windows на удаление и прямую перезапись, применяется системный трюк переименования:
Текущий файл переименовывается в Trinity.exe.old с помощью флага MOVEFILE_REPLACE_EXISTING.
Скачанный Trinity.exe.tmp перемещается на место основного Trinity.exe.
В случае непредвиденного сбоя срабатывает откат: Trinity.exe.old возвращается на исходное место.

Сохранение состояния и перезапуск:
В settings.ini записывается дата удаленной модификации (LastRemoteModified), чтобы встроенный автоапдейтер английской версии сразу считал бинарник актуальным.
Иконка в трее корректно удаляется (Shell_NotifyIconW(NIM_DELETE)), предотвращая появление "зависших" иконок.
Через ShellExecuteW инициируется запуск обновленного Trinity.exe, а текущий процесс немедленно завершается (ExitProcess(0)).
При следующем старте приложение на этапе WM_CREATE автоматически удаляет оставшийся временный файл Trinity.exe.old. Все пользовательские настройки в .ini полностью сохраняются.

disk.yandex.ru/d/E_vfHfAcbNM6gg

1◄Страница 9 из 27► 27