Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как отловить смену картинки на десктопе?

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Vygose



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги, не подскажете ли, как отловить смену картинки на десктопе?

Всего записей: 574 | Зарегистр. 01-10-2002 | Отправлено: 21:09 15-03-2005 | Исправлено: Vygose, 21:09 15-03-2005
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Коллеги, не подскажете ли, как отловить смену картинки на десктопе?

Если в смысле обоев, то есть вариант через хук на функцию SystemParametersInfo и если она вызывается с SPI_SETDESKWALLPAPER то значит происходит смена обоев. Иначе, уточни что имеешь в виду под сменой картинки на десктопе.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:22 16-03-2005
Vygose



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt

Цитата:
Если в смысле обоев

именно
 

Цитата:
то есть вариант через хук  

а есть вариант без хука?

Всего записей: 574 | Зарегистр. 01-10-2002 | Отправлено: 17:54 16-03-2005
EAS



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а есть вариант без хука?

разве что по таймеру проверять. Мессаг при смене wallpaper не шлется никаких вроде

Всего записей: 441 | Зарегистр. 18-07-2003 | Отправлено: 22:22 16-03-2005
Vygose



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EAS

Цитата:
разве что по таймеру проверять.

Да мне так и нужно, только что проверять?

Всего записей: 574 | Зарегистр. 01-10-2002 | Отправлено: 23:27 16-03-2005
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vygose

Цитата:
Да мне так и нужно, только что проверять?

Кажется где-то в Win хранится путь и имя wallpaper файла.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 01:05 17-03-2005
Vygose



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp

Цитата:
Кажется где-то в Win хранится путь и имя wallpaper файла.

Да, в реестре.
Но это не подходит если картинку сохранили под тем же именем.

Всего записей: 574 | Зарегистр. 01-10-2002 | Отправлено: 01:29 17-03-2005
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vygose

Цитата:
Но это не подходит если картинку сохранили под тем же именем.

Ну тогда только путем побитного сравнения каждых двух обоин. То есть при запуске считываешь в массив пиксельное представление картинки, потом по таймеру загружаешь во второй массив обоину сравниваешь, если есть расхождение, то второй массив становится первым и все сначала. Можно было бы проверять кусок, но к примеру чувак взял да и написал в середине что нить, а ты проверяешь только часть, поэтому надо проверять, кстати не все, а только до первого расхождения в значениях. То есть как только не совпадение, так выход. Хотя смысл этой проги? Я б ее сразу грохнул.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:38 17-03-2005
Vygose



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Я подозревал, что все так печально

Всего записей: 574 | Зарегистр. 01-10-2002 | Отправлено: 03:08 17-03-2005
nazaret

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все-таки через реестр стоит попробовать.
Считать параметр из ключа  
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper (там имя файла)
Определить время доступа к этому файлу, если оно "слишком новое",  
попытаться заменить этот файл нужным.
Функция АПИ такая, по-моему:
 

Цитата:
GetFileTime(
  HANDLE hFile,                 // handle to file
  LPFILETIME lpCreationTime,    // creation time
  LPFILETIME lpLastAccessTime,  // last access time
  LPFILETIME lpLastWriteTime    // last write time
);  


Всего записей: 29 | Зарегистр. 31-07-2003 | Отправлено: 13:10 17-03-2005
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vygose
А если так:
При включении переносишь текущий Wallpaper допустим на один фолдер глубже и меняешь путь в реестре соответственно. Затем переодически проверяешь реестр. Тот же самый Wallpaper менять никто не будет, а новый окажется по другому адресу.
 
Добавлено:
Можно еще дополнительно залокать файл, чтобы не смогли перезаписать.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:05 17-03-2005
Vygose



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nazaret
dneprcomp
 
А что, хорошие идеи, спасибо

Всего записей: 574 | Зарегистр. 01-10-2002 | Отправлено: 00:14 18-03-2005
Vygose



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt

Цитата:
хук на функцию SystemParametersInfo

Не подскажешь, как это сделать?
С мышой/клавой все понятно, а на функцию как?

Всего записей: 574 | Зарегистр. 01-10-2002 | Отправлено: 22:05 19-03-2005
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vygose
Почитай здесь по перехвату и подмене
http://www.rsdn.ru/article/baseserv/IntercetionAPI.xml


----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:22 21-03-2005
Vygose



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
уфф... спасибо, попробую разобраться

Всего записей: 574 | Зарегистр. 01-10-2002 | Отправлено: 02:48 21-03-2005
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Как отловить смену картинки на десктопе?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru