Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Изменение внешнего вида Windows » Оформление Windows XP » Разное - LogonUI - изменение размеров аватаров

Ответить
Настройки темы
Разное - LogonUI - изменение размеров аватаров

Аватара для Boa Soft

Компьютерный шаман


Сообщения: 2910
Благодарности: 956


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Boa Soft
Дата: 31-01-2009
Вложения
Тип файла: 7z logonui_96px_user_pix_sample.7z
(814.7 Kb, 156 просмотров)
В интернете очень много интересных модифицированных экранов приветствия (logonUI.exe). Многие авторы кардинально меняют дизайн экрана, и делают размер аватарок большим, по подобию висты. Но, вот беда - размер подложки (PictureFrame) изменить можно, а самой аватарки юзьверя - нет. Она всегда 48 на 48 точек. Поэтому, в этих логонах аватарки не отображаются, а на подложке нарисована жеско заданная аватарка. Она будет едина для всех пользователей. Что не очень красиво.

Найдя красивый логон http://raulwindows.deviantart.com/ar...3-10-111322984 я решил его доработать. После основных доработок ресурсов я покопался IDA в его потрошках. И, вот что получилось:


Картинки отображаются реально размером 96х96 точек .

Для этого необходимо пропатчить в 3 местах процедуру LogonAccount__OnTreeReady:


Код: Выделить весь код
.text:01009948                 push    24h           ; nNumber
.text:0100994A                 call    ?PointToPixel@LogonFrame@@SGHH@Z ; LogonFrame::PointToPixel(int)


.text:010099CB                 push    24h             ; nNumber
.text:010099CD                 call    ?PointToPixel@LogonFrame@@SGHH@Z ; LogonFrame::PointToPixel(int)
.text:010099D2                 push    eax             ; __int16
.text:010099D3                 push    24h             ; nNumber
.text:010099D5                 call    ?PointToPixel@LogonFrame@@SGHH@Z ; LogonFrame::PointToPixel(int)
Здесь размер аватарки задается в внутренних модулях. 24h соответствует 48 пикселям. 48h - 96 пикселям. Т.е. 1 модуль примерно равен 1.333 пикселя.

Первое вхождение задает размер, когда аватарка грузится из bmp картинки, вторые два - когда невозможно загрузить картинку и загрузка идет из внутреннего ресурса №114.

Для патча нам надо в любом HEX - редакторе открыть LogonUI и найти и заменить следующее (3 вхождения):

Код: Выделить весь код
6A 24 E8 -> 6A 48 E8
Внимание! Патчим только первые 3 вхождения. 4 не трогаем!

После сохранения файла проверяем, что теперь у нас тарки размером 96x96!


Но, иметься только проблема, даже две:

1. Менеджер учетных записей всегда создает картинки 48x48
2. При отсутствии картинки logonui сам создает какртинку тоже 48x48.

Ищем далее. Искомая функция сидит уже не в LogonUI а в Shell32.dll - без имени, №324.

В ее подпрограмме находим:

Код: Выделить весь код
.text:7CAD3F3F                 jmp     short loc_7CAD3F46
.text:7CAD3F41 ; ---------------------------------------------------------------------------
.text:7CAD3F41
.text:7CAD3F41 loc_7CAD3F41:                           ; CODE XREF: sub_7CAD3EAA+6Cj
.text:7CAD3F41                 push    30h
Тут уже будет просто в точках:

Для патча нам надо в любом HEX - редакторе открыть Shell32.dllи найти и заменить следующее (1 вхождениу):

Код: Выделить весь код
EB 05 6A 30 5F 8B ->  EB 00 6A 60 5F 8B
Первый байт отключает вычисления размера модуля, а второй сразу задает размер в 96пикселей.

После подмены shell32 на патченную и перезагрузки аватарки создаются 96 px.

Только следует учесть, что эта функция только уменьшает картинки. Если же картинка была менее 96 пикселей, то такой она и останется.
Но, это не страшно - logonUi сам растянет при отображении до 96x96 точек.


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

Пример логона во вложении. Shell32 пропатчте при необходимости сами.

PS За основу был взят экран Logon User Interface created by RaulWindows.deviantart.com, правда тут от исходного мало чего осталось. Но, так что, если захотите включить в какие-либо публичные пакеты/сборки, желательно испросить разрешения у автора.

Так же хинт для отладки логона. Если неправильно что-то сделать, то после проверки по Win-L может не отобразится сам аккоунт. И войти обратно невозможно.

Завершаем работу с перезагрузкой и после загрузки до логона удерживая ctrl-alt жмем два раза del. В окне классического входа вводим имя и пароль и попадаем в виндовс.

Чтобы не повторять ошибку, запускаем любой сторонний менеджер, закрываем процесс explorer.exe и запускаем logonui. И. видим, как все отображается. LogonUI можно только прибить из менеджера процессов. Почему надо убивать проводник - потому, что LogonUI проверяет его запущенность.

-------
Человеческая лень - главная движущая сила технического прогресса.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:00, 31-01-2009

 


Компьютерный форум OSzone.net » Изменение внешнего вида Windows » Оформление Windows XP » Разное - LogonUI - изменение размеров аватаров

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Slackware - Изменение шрифтов и их размеров в консоли Линукс. gambini Общий по Linux 7 16-10-2009 11:49
Разное - [решено] Изменение размеров иконок в Windows yoptitt Оформление Windows XP 20 26-08-2009 00:38
Win32 API - запретить изменение размеров окна Turman Программирование и базы данных 1 21-06-2009 21:00
HDD - Изменение размеров дисков при помощи PowerQuest PartitionMagic 8.0 (подскажите!!!) Metalmar85 Накопители (SSD, HDD, USB Flash) 20 24-01-2008 20:07
Изменение размеров разделов HDD SKLAD Накопители (SSD, HDD, USB Flash) 13 26-09-2006 17:44




 
Переход