![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Как получить раб. стол т.е его снимок без фонового рисунка только иконки ну и сами окна примеру ??
--------------------
Джедаи не пройдут.. |
|||
|
||||
Virtuals |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
никак, рисунок загружен в окно рабочего стола DC=0;
ну если только отключить фоновой рисунок, скопировать изображение, включить рисунок ![]() |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Да ну ерунда, я ведь уверен, что способ есть
![]() Взять тот же RAdmin, PCAnywhere там ведь получение идёт частичное без фона, чем и разгружает траффик, вопрос как это можно реализовать ??? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Может получает картинку рабочего стола и вычитает из нее рабочий стол, затем все что нечерное заливает белым, после чего делает операцию AND с исходной, тогда рабочий стол удалиться а все остальное останется на месте.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
попробуй поработать с ним, как с обычным ListView
-------------------- Обижено школьников: 8 |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Alexeis, bems вот это уже интересно поподробнее, плиз !
--------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Путь к обоям можно найти тут
1) HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper Это всегда будет битмап с битностью цвета такой какая установлена в системе. 2) битовые операции над картинками осуществляет функция BitBlt, параметры операции устанавливаются последним параметром. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Так и что нам это даёт? т.е мы можем преобразовать битмап с меньшей битностью, но как сделать его монотонным ? или я что-то не так понял??
--------------------
Джедаи не пройдут.. |
|||
|
||||
BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 3 Всего: 18 |
Если суть в экономии трафика, и если нужны только иконки и окна, то можно просто составить список иконок, их мест, а также по дескрипторам окон составить запись всех контролов этих окон. Это, конечно, будет работать в случае, если окон не много. А так Alexeis прежложил, помоему очень неплохой вариант. Юзай BitBlt/TransparentBlt
![]() -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Согласен вариант очень неплохой только не могу реализовать, может поможете ??
--------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Есть проблемы. Если исходная картинка для обоев была другого размера, то работать не будет, а сделать стретч так же как винда не получается, да и не получиться ведь в зависимости от версии метод сжатия/растяжения может меняться. Исходный формат не имеет значения, так как винда все равно конвертит его в BMP, а вот как бы найти ее кэшированую картинку... Ну впрочем можно проверять если картинка отличается от размеров рабочего стола, то не применять методику. Вот, а вот результирующая pngшка сжалась до 32кб. см. Атач. Это сообщение отредактировал(а) Alexeis - 7.8.2007, 11:52 Присоединённый файл ( Кол-во скачиваний: 28 ) ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Virtuals |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
сам же себя и опровергаю // смотрим ЗЫ
о нашел нечто похожее, сам бился над проблемой получения окна скрытого другим, решение _+_+_+ function PrintWindow(hwnd: HWND; hdcBlt: HDC; nFlags: UINT): BOOL; stdcall; implementation function PrintWindow; external user32 name 'PrintWindow'; +_+_+_+_ PrintWindow(findwindow('Progman',nil), PaintBox2.Canvas.Handle, 0); \\но именно с progmanom какието глюки ща расковыриваю функцию PrintWindow \\ ни разу не видел ее и в 2000 исходниках не находил ![]() она заставляет приложение отрисоватся в другом месте, (и иногда приложение забывает где правильно рисовать ![]() ЗЫ короче рисунок находится на DC=0 а иконки на окне 'Progman' (прозрачном) dash1 Это сообщение отредактировал(а) Virtuals - 7.8.2007, 19:07 |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Да блин в этом то и проблема тут ведь идёт попиксельное сравнение двух изображений
исходной картинки и раб. стола, но если размер результирующей picture не совпадает тут начинаются проблемы..... ![]() Щас тоже буду думать как оптимизировать это дело позже сообщу о результатах.... --------------------
Джедаи не пройдут.. |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Да кстати тут ещё одну приколюху нашёл немного не затирается рисунок вокруг
надписей у иконок ![]() --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Ну тут проблема с альфа-каналом думаю, с одной стороны цвет отличается от картинки, с другой содержит ее часть, так что как-то так...
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
В общем у меня тут идея возникла как создать картинку соразмерную с рабочим столом,
в рез-те чего картинку из Wallpappers использовать не будем, а сделаем так: 1) При загрузке системы прикрываем на время Explorer в рез-те чего уберутся все иконки и таскбар, делаем быстренько скриншот экрана и помещаем его в папку Windows или System32 не важно, под названием скажем Cache.bmp, затем снова запускаем Explorer. При последующей загрузке системы если файл уже существует то ничего больше не делаем, таким образом мы получаем изображение соразмерное с раб. столом. Как вам моя идея ? Или не очень ? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 8 Всего: 76 |
если честно не очень... Ну это можно и отловить ![]() -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Ну а если обои сменили, то определяем размер и дату изменения файла, если
какое-либо из условий не совпадает, значит обои поменяли заново обновляем файл вот и всё, можно и по другому изменение отловить... Ваши предложения ???
Есть идеи получше ![]() --------------------
Джедаи не пройдут.. |
|||
|
||||
Virtuals |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
тень! |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Так продолжая тему двухмесячной давности..
вот мы сравнили две картинки методом ScanLine, а можно ли как-то выделить эти изменившиеся части изображения и сохранить их в файл или поток для дальнейшей обработки ??? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Какая обработка предвидится?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Сохранение выделеных кусков в поток передача их по сети к клиенту (это уже моя забота),
ну и далее "налепление" выделенных кусков на существующее предыдущее изображение Вот такая обработка ! --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Если только это, то советую ничего не выделять, а пожимать в RLE. т.е. повторяющиеся последовательности кодировать числом повторений и указанием повторяющегося цвета. Если кадров мало то еще луше для сжатия использовать zLib. Добавлено через 59 секунд Налепливать - процесс долгий, да и мерцать будет неслабо, лучше уж кадр целиком. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Вот все говорят пожимать в RLE, а что можно по подробнее ??
zLib использовать пробовал тормоза "жутчайшие" может правда не то пробовал это было из папки Demos в Delphi где-то. Добавлено через 1 минуту и 28 секунд Да кстати может его в png конвертить сразу в таком случае как его перевести из bmp в png ? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Это еще медленнее. Про RLE есть в вики http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%...%80%D0%B8%D0%B9 Есть в MSDN, но там алгоритм для 16/256 цветов. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Можно ссылку на MSDN тоже ?, в принципе для 16/256 цветов тоже нормальный вариант !
--------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Но об этом много знать и не нужно, так как RLE 256/16 поддерживается на уровне API. Функция GetDIBits() - возвращает такую сжатую маску. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Можно на примере, а то я только на C++ нашёл ??
--------------------
Джедаи не пройдут.. |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Так стоп в смысле "сжатую" маску прошу разъяснить ?
--------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Ну эт я так иногда называю битовую карту. Правильнее сжатая битовая карта, т.е. растр другими словами. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Сорри за глупые вопросы, но что мне это даёт ? и как мне это применить в моём
случае ? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Это дает то что скриншоты получаются маленькими по размеру и не так загружают сеть.
Сжать картинку, передать, на той стороне распаковать, сложить с фоном и получить на экране картинку рабочего стола. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
В смысле маленькими по размеру тут нужно уточнить имеется ввиду размер по высоте-длине
или фактический размер картинки в байтах если да то насколько меньше они по размеру ?? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
фактический. На сколько зависит от картинки. Разностные должны хорошо жаться, думаю если экран меняется медленно то 100 раз реально.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Что-то я видимо совсем туплю или чего-то не понимаю всё таки ещё раз
картинка сжимается чем-либо еще типа zLib или она уже сжатая битовая карта посредством этого GetDIBits или как его там?? и её прямо так можно уже отправлять по сети?? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
GetDIBits можно использовать для RLE сжатия картинок с числом цветов не более 256, потому он врядли пригодиться... Если формат соответствует то можно прям так и отправлять. Но сейчас на 256 цветах почти не работают... потому прийдеться свой алгоритм писать.
Еще есть вариант сжимать в TIFF или PCX. Эти форматы тоже хранят изображения сжатые методом RLE. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Да кстати, я что это борландовцы зажилили исходный код файла Jpeg.pas
можно ли где-то его достать ?? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
php, метод jpeg жмет медленно и некачественно чертежи или изображения с множеством тонких и контрастных линий. ИМХО лучше копать в сторону TIFF. Он популярный и быстрый.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Да я уже заметил, что Jpeg явно уступает по скорости сжатия даже ZLib.
А что правда TIFF очень быстрый что-то я про это ничего нигде не слышал или что-то пропустил ?? --------------------
Джедаи не пройдут.. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Ну я вот порылся в инете, оказывается что TIFF поддерживает различные форматы сжатия. Быстрым разумеется будет только PackBits (RLE).
Можно себе что-то подобрать отсюда -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Не знаю как там работают всякие: RAdmin и PCAnywhere, но подход с вычитанием десктопа из принт скрина ИМХО - LOL.
![]() Гораздо интересней получить координаты иконок и ассоциированные с ними картинки, а потом расположить их в соответствии и разрешением экрана у себя на клиентской части отображения, что касается открытых окон на фоне десктопа то тут уже много разных траффико-экономичных подходов можно применить. К примеру если окно эксплореровское то можно получить его координаты, а также координаты иконок и сами иконки и расположить всё это у себя, при этом можно учитывать файлы с индивидуальными иконками и файлы с общими иконками. Если окно чужое то тупо сфоткать его область, и получить его координаты. Если окно видно из под окна, то сфоткать общую область совместно занимаемого квадрата, а потом исходя из координат окошек вырезать всё что лишнее (С не прямоугольными окнами получится галимо) , ну и тд ...... ![]() Это сообщение отредактировал(а) RA - 17.10.2007, 00:44 |
|||
|
||||
php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Да да да всё это уже пройденный этап и иконки получал и даже
окна нестандартной формы с получением её регионов, но тут есть свои подводные камни во первых много в системе разных "суетливых" манипуляций я уже точно не помню в чём, но у меня в процессе разработки возникла какая-то проблема с этим всем делом. --------------------
Джедаи не пройдут.. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |