Программное изменение разрешений и ещё куча вопросов :-)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Santiago
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2006 (Чт) 0:19
Откуда: Россия,Саратов

Программное изменение разрешений и ещё куча вопросов :-)

Сообщение Santiago » 20.07.2006 (Чт) 1:00

Здравствуйте!!! Вот, решил написать программу, вроде Boot XP... и сразу столкнулся с несколькими трудными для меня вопросами :-) Пожалуйста, подскажите:

1) Как программно изменить горизонтальное и вертикальное разрешение изображения (а для изменения размера изображения я пользуюсь методом PainPicture-правильно ли это?).

2) Как программно изменить глубину цвета загруженной в PictureBox картинки (до 16 цветов), можно сказать, преобразовать палитру?

3) Как программно создать exe-файл. В моём случае - это загрузчик Windows ntoskrnl.exe, в котором как раз содержится картинка, отображаемая при загрузке.


4) Такой вот ещё вопрос. Допустим, у меня на форме есть два элемента PictureBox1 и PictureBox2.
В PictureBox1 загружено изображение. Пользователь ведёт курсор над этим изображением и PictureBox2 окрашивается в тот цвет, над которым находится курсор. Проще говоря, как определить цвет?

СПАСИБО!!!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.07.2006 (Чт) 2:23

1) ChangeDisplaySettings и всё что с этим связано
2) Картинка должна быть сохранена с такой глубиной
3) Сомневаюсь что у тебя это вообще получится :lol:
4) Picture2.BackColor = Picture1.Point(x,y)

А вообще сомневаюсь что у тебя вообще что то получится...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.07.2006 (Чт) 2:36

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.07.2006 (Чт) 14:20

GSerg
Признаю ошибку, у меня пол шестого было... спать уже хотелось...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Santiago
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2006 (Чт) 0:19
Откуда: Россия,Саратов

Сообщение Santiago » 20.07.2006 (Чт) 16:22

Спасибо за помощь, определение цвета (4 вопрос) работает, а насчёт создания exe-файла..... :cry: Тут дело в самой структуре файла или в компиляции (ведь, например, создать файл реестра можно в блокноте, просто соблюдая определённые правила)? Просто как-то же это работает (хотя бы та же програ Boot XP, которая сама создаёт загрузчики, подменяя там 1-ую и 5-ую картинки) :roll:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 20.07.2006 (Чт) 16:36

без Visual Studio 6.0 (VB) у тебя ничего не выйдет

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.07.2006 (Чт) 17:53

Konst_One, что к чему? :-?

2) я выкладывал здесь пример палитризации, так что удачного поиска ;-)
3) они просто заранее знают адреса байтов, в которых хранится картинка, и перезаписывают эти байты. Если хочешь, можешь так же.
"Компиляцией" тут и не пахнет.
Изображение

Santiago
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2006 (Чт) 0:19
Откуда: Россия,Саратов

Сообщение Santiago » 20.07.2006 (Чт) 21:49

Tyomitch, в смысле это та самая тема о преобразовании RGB в HEX-код? Вот как раз сейчас попробую.

Кстати, обидно :(

Хакер писал(а): А вообще сомневаюсь что у тебя вообще что то получится...
- потому что уже кое-что начало получаться :)

БОЛЬШОЕ СПАСИБО ЗА
Хакер писал(а):4) Picture2.BackColor = Picture1.Point(x,y)
- это в событие MOUSE MOVE :D

Тут в общем вот какая штукенция, для того, чтобы БЕЗОПАСНО поменять загрузочный экран, нужны хотя бы две программы. Вот хотелось бы сделать свою, но ОДНУ

А, вот ещё..
tyomitch писал(а): 3) они просто заранее знают адреса байтов, в которых хранится картинка, и перезаписывают эти байты. Если хочешь, можешь так же.
"Компиляцией" тут и не пахнет.


Tyomitch, я правильно понимаю, что в каком-то системном файле, который подгружается ещё до появления Boot-screen, содержится информация о нём. Ведь откуда, например Windows знают, что progress bar должен располагаться внизу, а не сверху или в углу.

Вопрос с надеждой... Может быть кому-нибудь известны имена этих системных файлов... СПАСИБО!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.07.2006 (Чт) 22:16

Положение прогресс бара - тоже вероятно лежит в нтоскернел-е. И его тоже надо туда записывать. Хотя мне кажется что прогресс бар всегда внизу.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Glyckmen
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 30.04.2006 (Вс) 15:32
Откуда: Санкт-Петербург

Сообщение Glyckmen » 21.07.2006 (Пт) 0:28

Хакер Ты не совсем прав, да стандартное положение прогресс бара внизу, но его положение можно задавать, у меня загрузочный экран поменян программой BOOTSKIN и прогресс бар теперь вверху экрана. :shock:
Вложения
FerrariF1blue_Preview.jpg
FerrariF1blue_Preview.jpg (41.67 Кб) Просмотров: 921

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2006 (Пт) 0:34

значит это изменяемо за счёт правки каких то байт в файле ntoskrnl.exe
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Santiago
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2006 (Чт) 0:19
Откуда: Россия,Саратов

Сообщение Santiago » 21.07.2006 (Пт) 4:44

Glyckmen писал(а):Хакер ...у меня загрузочный экран поменян программой BOOTSKIN и прогресс бар теперь вверху экрана. :shock:


Вот это кстати, отличная прога. Не вносит изменений в BOOT.INI(обходится без прописи "второй" операционной системы), не изменяет ядро загрузки, позволяет позиционировать прогресс бар и по горизонтали. Но есть и прикол - если выставить "длину пробега" progress bar от 0 до 640 (предельный размер в загрузочном режиме - т.е. заставить бежать через весь экран), то система выпадет в BSOD. И вобще, при изготовлении boot scren надо избегать предельных значений типа 0, 640, 480.

НО BOOTSKIN SKIN'ов НЕ ДЕЛАЕТ. Поэтому хотелось объединить все нужные функции в своей проге.

Кстати, Хакер, определение цвета мне было нужно для того, что !!!-сейчас будет страшный секрет до которого я сам додумалсяи который не поддерживается в проге BOOT XP !!! - прогресс бар должен состоять ТОЛЬКО ИЗ ТЕХ ЦВЕТОВ, что использовались в картинке. А Boot XP, хоть и поддерживает установку других progress bar' ов, по умолчанию ляпает progress bar красного цвета, вследствие чего при загрузке цвета очень дико меняются. Я над этим долго сидел, пока не плюнул и не поставил стандартный загрузчик. А на нём заметил, что progress bar того же цвета, что и флаг Microsoft. Ну вот, в своей проге, я с помощью ЭТОГО ФОРУМА, так и сделал - чтобы окрашивать progress bar только теми цветами, что есть. Ещё прога изменяет размер, но не уверен, что сейчас всё правильно с форматом .BMP(сохранение конечного изображения в этом формате) - там ведь какие-то другие алгоритмы сжатия изображений.

А вообще-то жалко, что конечный результат нельзя сохранить в виде .exe. У меня идея, может кто подскажет: в общем, сначала прога узнаёт, куда проинсталирована Windows (это вполне реально сделать), а потом открывает system32, копирует ntoskrnl.exe куда-нибудь в TEMP и вносит в него изменения(а вот с этим облом) :?

Спасибо за проявленный интерес и помощь! Буду думать дальше! А то уже 5:44

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2006 (Пт) 5:29

а у нас вот 8:24 и мы тут сидим и думаем, сессион-контрол, понимаешь ли :lol:

Собственно насчёт правки boot.ini : а ты думашь надёжней ковырять ntoskrnk или же всё таки сделать его копию, и её ковырять?"
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2006 (Пт) 6:48

Santiago писал(а):Tyomitch, в смысле это та самая тема о преобразовании RGB в HEX-код? Вот как раз сейчас попробую.

Нет, совсем другая: за октябрь 2004, кажется.
Изображение

Santiago
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2006 (Чт) 0:19
Откуда: Россия,Саратов

Сообщение Santiago » 21.07.2006 (Пт) 14:44

Хакер писал(а):Собственно насчёт правки boot.ini : а ты думашь надёжней ковырять ntoskrnk или же всё таки сделать его копию, и её ковырять?"


Я просто свою мысль закончил словом "ОБЛОМ"
Santiago писал(а):
Сначала прога узнаёт, куда проинсталирована Windows (это вполне реально сделать), а потом открывает system32, копирует ntoskrnl.exe куда-нибудь в TEMP и вносит в него изменения(а вот с этим облом) :?


Ну вот, а потом уже изменённый файл ntoskrnk прога переименовывает и переносит в system32, добавляя при этом новую строку в BOOT.INI. И ЕСЛИ ЧТО-ТО НЕ СРАБОТАЕТ, то всегда можно будет подгрузится с "родным загрузчиком"

В общем-то кое-какие куски программы уже получились и работают(нашёл исходник, как писать в .ini) Прога смогла:
1)скопировать и переименовать ntoskrnk.exe
2) внести в BOOT.INI следующую строку:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect/KERNEL=01.exe
3) Создать прогресс бар того же цвета, что и изображение
Не густо но и не пусто :)
При загрузке всё правильно: предлагается выбрать операционную систему для запуска. Но отличий между ними нет :D
Я практически рад :?
Ещё есть исходник, как узнать, куда проинсталирована Винда. Буду пробовать.

Кстати, Res Hacker' ом в очередной раз открыл ntoskrnk в надежде найти строку, где указаны координаты progress bar'а. Нашёл только картинки, сообщения(типа "загрука невозможна" и "нехватка памяти" и информацию о версии. :( Может, всё же координаты указаны в какой-нибудь подгружаемой динамич. библиотеке?

А вообще если бы можно было бы программно поменять картинку в ntoskrnk, я бы сегодня же закрыл эту тему :lol:
Ведь тот же самый Res Hacker, который ДАЖЕ не требует установки и занимает 861 Кб, способен открыть тот же самый ntoskrnk.exe, заменить картинку и "Save as..." :shock:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.07.2006 (Пт) 16:09

Пожалуйста, не описывайтесь в названии ntoskrnl
Шесть раз в одном посте -- это слишком.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 21.07.2006 (Пт) 17:23

это не описка, это потому что после их издевательств, с nt os kernel будет большой kerdic вот и пишут они заранее ntoskrnk
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 3

    TopList