Trinity - Управление частотой процессора
Цитата: dehote9223 от 01.09.2026, 09:09Добавлена глобальная системная комбинация клавиш Ctrl + Alt + F4
для принудительного закрытия зависших программ и полноэкранных игр в случаях, когда стандартный Alt + F4 игнорируется.
Добавлена глобальная системная комбинация клавиш Ctrl + Alt + F4
для принудительного закрытия зависших программ и полноэкранных игр в случаях, когда стандартный Alt + F4 игнорируется.
Цитата: dehote9223 от 01.09.2026, 14:23Усиление функции принудительного закрытия программ (Ctrl + Alt + F4)
[spoiler title="Функция экстренного завершения активного зависшего процесса была кардинально переработана и переведена на нативный Win32 API для достижения максимальной скорости, отзывчивости и стабильности системы."]Активация привилегии SeDebugPrivilege:
Перед завершением процесса программа запрашивает права отладчика уровня системы. Это позволяет принудительно снимать задачи с повышенными правами администратора и процессы, защищенные системными дескрипторами безопасности (DACL).Мгновенное нативное завершение дерева процессов (Native Process Tree Kill):
Вместо медленного запуска внешней консольной утилиты taskkill реализован прямой рекурсивный опрос дерева задач через CreateToolhelp32Snapshot и вызов TerminateProcess. Завершение зависшего приложения вместе со всей цепочкой дочерних задач (лаунчеры, воркеры, рендереры, оверлеи и краш-репортеры) теперь происходит мгновенно (~0.5 мс) — без задержек, создания лишних процессов и мерцания консольных окон.Мгновенное освобождение системных ресурсов и файлов:
Благодаря прямому снятию процесса через Win32 API ядро Windows немедленно аннулирует все открытые дескрипторы (handles) процесса. Это исключает появление «зомби-процессов», моментально снимает файловые блокировки на диске и освобождает сетевые сокеты, позволяя сразу же перезапустить упавшее приложение без ошибки «Файл занят другим процессом».Возврат контроля над мышью и восстановление разрешения экрана:
Помимо сброса аппаратного захвата границ экрана (ClipCursor(NULL)) и принудительной перезагрузки системных указателей Windows (SPI_SETCURSORS), внедрен автоматический сброс видеорежима дисплея через ChangeDisplaySettingsW(NULL, 0). Если полноэкранная 3D-игра зависла, скрыла курсор или оставила рабочий стол в нестандартном растянутом разрешении (например, 4:3 / 1280x960), управление, видимость мыши и штатное разрешение монитора моментально восстанавливаются во всей системе.Определение корневого окна приложения (GA_ROOT):
Добавлена проверка GetAncestor(hFore, GA_ROOT). Если зависание произошло при открытом модальном окне, диалоге ошибки или прозрачном оверлее, программа безошибочно вычисляет главное окно и закрывает само зависшее приложение, а не сторонний слой.Сквозная многоуровневая защита ядра и расширенный «белый список»:
Внедрена жесткая изоляция процессов ядра (PID <= 4: System Idle Process и System) и процесса самой утилиты. Встроен белый список критически важных компонентов ОС (csrss.exe, lsass.exe, services.exe, smss.exe, wininit.exe, winlogon.exe, fontdrvhost.exe, dwm.exe, explorer.exe). Проверка белого списка теперь выполняется сквозным образом на каждом шаге рекурсии дерева процессов, что полностью исключает риск случайного повреждения системных служб и появления BSOD («синего экрана смерти»).[/spoiler]
Усиление функции принудительного закрытия программ (Ctrl + Alt + F4)
Перед завершением процесса программа запрашивает права отладчика уровня системы. Это позволяет принудительно снимать задачи с повышенными правами администратора и процессы, защищенные системными дескрипторами безопасности (DACL).
Мгновенное нативное завершение дерева процессов (Native Process Tree Kill):
Вместо медленного запуска внешней консольной утилиты taskkill реализован прямой рекурсивный опрос дерева задач через CreateToolhelp32Snapshot и вызов TerminateProcess. Завершение зависшего приложения вместе со всей цепочкой дочерних задач (лаунчеры, воркеры, рендереры, оверлеи и краш-репортеры) теперь происходит мгновенно (~0.5 мс) — без задержек, создания лишних процессов и мерцания консольных окон.
Мгновенное освобождение системных ресурсов и файлов:
Благодаря прямому снятию процесса через Win32 API ядро Windows немедленно аннулирует все открытые дескрипторы (handles) процесса. Это исключает появление «зомби-процессов», моментально снимает файловые блокировки на диске и освобождает сетевые сокеты, позволяя сразу же перезапустить упавшее приложение без ошибки «Файл занят другим процессом».
Возврат контроля над мышью и восстановление разрешения экрана:
Помимо сброса аппаратного захвата границ экрана (ClipCursor(NULL)) и принудительной перезагрузки системных указателей Windows (SPI_SETCURSORS), внедрен автоматический сброс видеорежима дисплея через ChangeDisplaySettingsW(NULL, 0). Если полноэкранная 3D-игра зависла, скрыла курсор или оставила рабочий стол в нестандартном растянутом разрешении (например, 4:3 / 1280x960), управление, видимость мыши и штатное разрешение монитора моментально восстанавливаются во всей системе.
Определение корневого окна приложения (GA_ROOT):
Добавлена проверка GetAncestor(hFore, GA_ROOT). Если зависание произошло при открытом модальном окне, диалоге ошибки или прозрачном оверлее, программа безошибочно вычисляет главное окно и закрывает само зависшее приложение, а не сторонний слой.
Сквозная многоуровневая защита ядра и расширенный «белый список»:
Внедрена жесткая изоляция процессов ядра (PID <= 4: System Idle Process и System) и процесса самой утилиты. Встроен белый список критически важных компонентов ОС (csrss.exe, lsass.exe, services.exe, smss.exe, wininit.exe, winlogon.exe, fontdrvhost.exe, dwm.exe, explorer.exe). Проверка белого списка теперь выполняется сквозным образом на каждом шаге рекурсии дерева процессов, что полностью исключает риск случайного повреждения системных служб и появления BSOD («синего экрана смерти»).
Цитата: dehote9223 от 02.09.2026, 09:24В контекстное меню трея добавлен переключатель "🔄 Проверять обновления"
При включении опции программа в фоновом режиме проверяет наличие свежих релизов в облаке при каждом запуске Windows / программы.
Принцип работы
Программа не скачивает сам файл целиком для проверки.
Вместо этого через защищённый HTTPS-запрос (WinHTTP) она опрашивает открытый REST API Яндекс.Диска.
Сервер возвращает лёгкий мета-ответ (JSON ~1 КБ), содержащий точную дату и время последнего изменения файла на диске (modified) и прямую ссылку для скачивания (file).Сравнение версий
Полученная временная метка сравнивается с записью LastRemoteModified в локальном файле конфигурации settings.ini.
Если дата в облаке отличается (новее), программа понимает, что вы опубликовали новую сборку, и выводит окно с предложением обновиться.При согласии скачивает новый бинарник во временный файл Trinity.exe.tmp.
Переименовывает текущий запущенный Trinity.exe в Trinity.exe.old.
Переименовывает скачанный Trinity.exe.tmp в основной Trinity.exe.
Записывает актуальную дату релиза в settings.ini.Программа принудительно удаляет свою иконку из трея (NIM_DELETE), предотвращая появление "значков-призраков".
Запускает новый Trinity.exe и завершает процесс старой версии.
При следующем старте новая версия автоматически удаляет временный файл Trinity.exe.old.
В контекстное меню трея добавлен переключатель "🔄 Проверять обновления"
При включении опции программа в фоновом режиме проверяет наличие свежих релизов в облаке при каждом запуске Windows / программы.
Принцип работы
Программа не скачивает сам файл целиком для проверки.
Вместо этого через защищённый HTTPS-запрос (WinHTTP) она опрашивает открытый REST API Яндекс.Диска.
Сервер возвращает лёгкий мета-ответ (JSON ~1 КБ), содержащий точную дату и время последнего изменения файла на диске (modified) и прямую ссылку для скачивания (file).
Сравнение версий
Полученная временная метка сравнивается с записью LastRemoteModified в локальном файле конфигурации settings.ini.
Если дата в облаке отличается (новее), программа понимает, что вы опубликовали новую сборку, и выводит окно с предложением обновиться.
При согласии скачивает новый бинарник во временный файл Trinity.exe.tmp.
Переименовывает текущий запущенный Trinity.exe в Trinity.exe.old.
Переименовывает скачанный Trinity.exe.tmp в основной Trinity.exe.
Записывает актуальную дату релиза в settings.ini.
Программа принудительно удаляет свою иконку из трея (NIM_DELETE), предотвращая появление "значков-призраков".
Запускает новый Trinity.exe и завершает процесс старой версии.
При следующем старте новая версия автоматически удаляет временный файл Trinity.exe.old.
Цитата: dehote9223 от 02.09.2026, 19:26Контроль целостности по размеру
Перед заменой запущенного файла программа сверяет фактически скачанные байты с полем size из метаданных облака.
При обрыве соединения или неполной загрузке обновление отменяется, а повреждённый временный файл удаляется, предотвращая поломку программы.
Контроль целостности по размеру
Перед заменой запущенного файла программа сверяет фактически скачанные байты с полем size из метаданных облака.
При обрыве соединения или неполной загрузке обновление отменяется, а повреждённый временный файл удаляется, предотвращая поломку программы.
Цитата: dehote9223 от 03.09.2026, 06:29В меню "🖱 Средняя кнопка на Рабочем столе" добавлен пункт "🎙 Отключить микрофон"
Если вам не хватает какого-то пункта или функции — напишите
В меню "🖱 Средняя кнопка на Рабочем столе" добавлен пункт "🎙 Отключить микрофон"
Если вам не хватает какого-то пункта или функции — напишите
Цитата: dehote9223 от 03.09.2026, 08:49Улучшение игровой оптимизации "Профиль задержек (MMCSS / Network)"
Ранее эта оптимизация управляла только сетевым троттлингом и системной отзывчивостью мультимедиа.
Теперь функционал доработан до полноценного игрового профиля службы MMCSS (Multimedia Class Scheduler).Добавлена настройка ветки SystemProfile\Tasks\Games:
Приоритет GPU выставлен на 8, приоритет процесса — на 6 (стандартно в Windows — 2).
Категория планирования потоков и приоритет дискового ввода-вывода (SFIO) переведены в режим High (было Medium / Normal).Ядро Windows начинает отдавать максимальный приоритет рендеру кадров, потокам видеокарты и подгрузке ассетов игры, не давая фоновым службам вызывать микрофризы и статтеры.
Если в прошлой версии этот пункт был у вас включен, галочка снимется автоматически (так как программа проверяет наличие новых параметров).
Чтобы применить обновлённый профиль, просто включите его снова и перезагрузите компьютер.
Улучшение игровой оптимизации "Профиль задержек (MMCSS / Network)"
Ранее эта оптимизация управляла только сетевым троттлингом и системной отзывчивостью мультимедиа.
Теперь функционал доработан до полноценного игрового профиля службы MMCSS (Multimedia Class Scheduler).
Добавлена настройка ветки SystemProfile\Tasks\Games:
Приоритет GPU выставлен на 8, приоритет процесса — на 6 (стандартно в Windows — 2).
Категория планирования потоков и приоритет дискового ввода-вывода (SFIO) переведены в режим High (было Medium / Normal).
Ядро Windows начинает отдавать максимальный приоритет рендеру кадров, потокам видеокарты и подгрузке ассетов игры, не давая фоновым службам вызывать микрофризы и статтеры.
Если в прошлой версии этот пункт был у вас включен, галочка снимется автоматически (так как программа проверяет наличие новых параметров).
Чтобы применить обновлённый профиль, просто включите его снова и перезагрузите компьютер.
Цитата: Сибирь от 03.09.2026, 10:48Доброго дня, dehote9223 🙂
Ты добавил уйму всяких тонких настроек в последнее время, но у меня вопрос:
Trinity сохраняет изначальное состояние системы всех настроек которые она меняет? В смысле, можно ли нажатием кнопки откатиться обратно к дефолту, который был в системе (*без* запоминания а как оно было, т.е. не руками твикать обратно, а чтобы сама программа так делала)? Я в том смысле, что, вот, например, с частотой процессора ты чудесно реализовал возможность правой кнопкой нажать по ползунку -> вернуть к ИСХОДНОМУ состоянию как было до изменений. Его запоминать человеку не надо, сама Trinity вносит начальный параметр в файл своих настроек. Но вопрос о том, касается ли это также всех остальных добавленных тобою тонких настроек, например, касающихся игр и прочего? Иначе человек может натвикать кучу всего, а потом словить какие-то непонятные глюки, а при желании вернуть к дефолту не будет помнить как оно было и что именно менял в Trinity... Надеюсь, что мысль донёс🙂.
Думаю можно реализовать вообще одну кнопку для полного обнуление всех изменений (дефолт вообще всех настроек изначальный). И также к каждому пункту по отдельности.
Доброго дня, dehote9223 🙂
Ты добавил уйму всяких тонких настроек в последнее время, но у меня вопрос:
Trinity сохраняет изначальное состояние системы всех настроек которые она меняет? В смысле, можно ли нажатием кнопки откатиться обратно к дефолту, который был в системе (*без* запоминания а как оно было, т.е. не руками твикать обратно, а чтобы сама программа так делала)? Я в том смысле, что, вот, например, с частотой процессора ты чудесно реализовал возможность правой кнопкой нажать по ползунку -> вернуть к ИСХОДНОМУ состоянию как было до изменений. Его запоминать человеку не надо, сама Trinity вносит начальный параметр в файл своих настроек. Но вопрос о том, касается ли это также всех остальных добавленных тобою тонких настроек, например, касающихся игр и прочего? Иначе человек может натвикать кучу всего, а потом словить какие-то непонятные глюки, а при желании вернуть к дефолту не будет помнить как оно было и что именно менял в Trinity... Надеюсь, что мысль донёс🙂.
Думаю можно реализовать вообще одну кнопку для полного обнуление всех изменений (дефолт вообще всех настроек изначальный). И также к каждому пункту по отдельности.
Цитата: dehote9223 от 03.09.2026, 12:01Сибирь, привет!
Да, ИИ предлагает сделать откат, но пока особого желания нет )
Программа раздуется
Сибирь, привет!
Да, ИИ предлагает сделать откат, но пока особого желания нет )
Программа раздуется
Цитата: Сибирь от 03.09.2026, 12:13Брат, я по жизни всегда только за минимализм, однако по-моему, в данном случае это более чем оправдано. Мне кажется условные несколько мегабайт стоят того, чтобы каждый пользователь имел 100 процентную подушку безопасности. Здесь уже слишком много твиков набралось... и некоторые из них весьма, скажем так, специфические и потенциально опасные. На разных системах и конфигурациях могут вести себя по разному, хоть в теории вроде как полезные. Понятно, что можно и из образа откатить систему, но это как пушкой по воробьям бить. Да и не совсем понятно будет куда именно откатывать, Trinity стала довольно навороченной, опций много, хрен запомнишь что, где и когда твикал)).
Ну да ладно. Как говорится, хозяин — барин😃.
Брат, я по жизни всегда только за минимализм, однако по-моему, в данном случае это более чем оправдано. Мне кажется условные несколько мегабайт стоят того, чтобы каждый пользователь имел 100 процентную подушку безопасности. Здесь уже слишком много твиков набралось... и некоторые из них весьма, скажем так, специфические и потенциально опасные. На разных системах и конфигурациях могут вести себя по разному, хоть в теории вроде как полезные. Понятно, что можно и из образа откатить систему, но это как пушкой по воробьям бить. Да и не совсем понятно будет куда именно откатывать, Trinity стала довольно навороченной, опций много, хрен запомнишь что, где и когда твикал)).
Ну да ладно. Как говорится, хозяин — барин😃.
Цитата: dehote9223 от 03.09.2026, 13:04В меню "Игровые оптимизации" добавлен пункт-чекбокс "📋 Сохранить текущие настройки"
Сохраняет текущее состояние (HAGS, MPO, MSI-режим, профили задержек, алгоритм Нейгла, таймеры BCD, изоляция ядра и др.) в файл конфигурации settings.ini.
После сохранения пункт меняет название на "↩ Восстановить настройки", позволяя откатить оптимизации до исходных значений в один клик без множества всплывающих окон (с общим предложением перезагрузки при необходимости).
После восстановления пункт меняет название на "📋 Сохранить текущие настройки".
В меню "Игровые оптимизации" добавлен пункт-чекбокс "📋 Сохранить текущие настройки"
Сохраняет текущее состояние (HAGS, MPO, MSI-режим, профили задержек, алгоритм Нейгла, таймеры BCD, изоляция ядра и др.) в файл конфигурации settings.ini.
После сохранения пункт меняет название на "↩ Восстановить настройки", позволяя откатить оптимизации до исходных значений в один клик без множества всплывающих окон (с общим предложением перезагрузки при необходимости).
После восстановления пункт меняет название на "📋 Сохранить текущие настройки".
Цитата: dehote9223 от 03.09.2026, 19:02Полная переработка механизма "🛑 Закрыть зависшие программы"
Механизм переписан на чистый нативный Win32 API (EnumWindows + IsHungAppWindow), что обеспечивает мгновенное срабатывание без задержек и без создания скрытых консольных процессов.
Теперь зависшие приложения закрываются рекурсивно вместе со всеми дочерними процессами, лаунчерами (Steam, Epic Games и др.) и службами отчетов об ошибках, исключая появление процессов-"зомби".
Подключен встроенный белый список защищенных процессов (IsProtectedPid / IsProtectedProcessName).
В отличие от старого фильтра taskkill, полностью исключен риск случайного завершения системных служб (audiodg.exe, csrss.exe, services.exe, lsass.exe и др.).
Добавлен автоматический сброс захвата мыши (ClipCursor(NULL)).
Если зависшая полноэкранная игра заблокировала курсор в своих невидимых границах, после закрытия управление курсором возвращается в нормальное состояние.
Функция задействует отладочные привилегии (SE_DEBUG_NAME).
Полная переработка механизма "🛑 Закрыть зависшие программы"
Механизм переписан на чистый нативный Win32 API (EnumWindows + IsHungAppWindow), что обеспечивает мгновенное срабатывание без задержек и без создания скрытых консольных процессов.
Теперь зависшие приложения закрываются рекурсивно вместе со всеми дочерними процессами, лаунчерами (Steam, Epic Games и др.) и службами отчетов об ошибках, исключая появление процессов-"зомби".
Подключен встроенный белый список защищенных процессов (IsProtectedPid / IsProtectedProcessName).
В отличие от старого фильтра taskkill, полностью исключен риск случайного завершения системных служб (audiodg.exe, csrss.exe, services.exe, lsass.exe и др.).
Добавлен автоматический сброс захвата мыши (ClipCursor(NULL)).
Если зависшая полноэкранная игра заблокировала курсор в своих невидимых границах, после закрытия управление курсором возвращается в нормальное состояние.
Функция задействует отладочные привилегии (SE_DEBUG_NAME).
Цитата: Сибирь от 03.09.2026, 21:05Добрый вечер, dehote9223.
Ну очень полезная функция ["🛑Закрыть зависшие программы"].
Огромное тебе спасибо за неё, тем более за её усовершенствование!
Добрый вечер, dehote9223.
Ну очень полезная функция ["🛑Закрыть зависшие программы"].
Огромное тебе спасибо за неё, тем более за её усовершенствование!
Цитата: dehote9223 от 04.09.2026, 09:19Улучшены твики
"🎬 Отключить Game DVR / Запись"
"🎯 Режим MSI для GPU (Снижение DPC Latency)"
"🔊 Режим MSI для аудио (Фикс треска звука / DPC)"
"📢 Буст максимальной громкости (+15 dB)"
"🎮 Профиль задержек (MMCSS / Network)"Если какие-то из них были включены — выключите и включите снова (для применения новых параметров в реестре).
Для пунктов MSI и MMCSS потребуется перезагрузка ПК.
Улучшены твики
"🎬 Отключить Game DVR / Запись"
"🎯 Режим MSI для GPU (Снижение DPC Latency)"
"🔊 Режим MSI для аудио (Фикс треска звука / DPC)"
"📢 Буст максимальной громкости (+15 dB)"
"🎮 Профиль задержек (MMCSS / Network)"
Если какие-то из них были включены — выключите и включите снова (для применения новых параметров в реестре).
Для пунктов MSI и MMCSS потребуется перезагрузка ПК.
Цитата: dehote9223 от 04.09.2026, 15:19В контекстное меню добавлен пункт "🎧 Колонки ⇄ Наушники" для раздела "🖱 Средняя кнопка на Рабочем столе"
Позволяет быстро переключать устройство вывода звука по умолчанию в один клик колёсиком мыши по рабочему столу, без необходимости заходить в системные параметры Windows.disk.yandex.ru/d/E_vfHfAcbNM6gg
Для меня это особенно полезная функция, так как практически ежедневно приходится переключать звук со встроенных колонок монитора на наушники для обработки музыкальных треков
В контекстное меню добавлен пункт "🎧 Колонки ⇄ Наушники" для раздела "🖱 Средняя кнопка на Рабочем столе"
Позволяет быстро переключать устройство вывода звука по умолчанию в один клик колёсиком мыши по рабочему столу, без необходимости заходить в системные параметры Windows.
disk.yandex.ru/d/E_vfHfAcbNM6gg
Для меня это особенно полезная функция, так как практически ежедневно приходится переключать звук со встроенных колонок монитора на наушники для обработки музыкальных треков