|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
|||||||||||
Как программно в Windows XP поменять картинку на рабочем столе, используя файл JPG?30.07.2023, 20:16. Показов 2498. Ответов 33
Метки нет (Все метки)
Всем привет!
Скажите, пожалуйста, как в Windows XP установить картинку на рабочем столе в формате JPG??? Или никак вообще? Неужели только начиная от Windows Vista или даже Windows 7 можно установить именно JPG-картинку??? В семёрке этот код прекрасно работает: Модуль:
1
|
|||||||||||
| 30.07.2023, 20:16 | |
|
Ответы с готовыми решениями:
33
Как сохранить файл напрямую в базу данных,не используя путь к файлу на рабочем столе? Как создать файл на рабочем столе так, что бы работало на Linux и на Windows? Как средствами 1С сменить картинку на рабочем столе |
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
||
| 31.07.2023, 19:59 [ТС] | ||
|
I can, спасибо большое в семёрке работает со всеми форматами файлов, сейчас в XP ещё проверю будет ли работать...
Добавлено через 10 минут Да, проверил и в XP тоже работает даже с PNG. Но XP конечно сама их конвертирует в BMP и копирует в определённую папку. А семёрка конвертирует в JPG. Добавлено через 1 минуту
0
|
||
|
jump
5006 / 4788 / 852
Регистрация: 13.04.2015
Сообщений: 10,033
|
|
| 31.07.2023, 20:44 | |
|
0
|
|
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
|
| 31.07.2023, 20:59 [ТС] | |
|
0
|
|
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
|
| 01.08.2023, 12:44 [ТС] | |
|
Единственный минус этой функции ActiveDesktopSetWallpaper это то, что она выполняется слишком долго от 350 до 600 миллисекунд ажно. То есть в среднем приходится ждать аж по пол секунды времени, чтобы картинка поменялась и обратно пришёл отклик в твою программу...
Добавлено через 2 минуты Я провел некоторые тесты где понял что исполнение SystemParametersInfo выигрывает в производительности это самая быстрая функция для смены обоев, так как ничего не конвертируется в BMP? ничего никуда не перекопируется... Просто сразу устанавливаются обои и всё Добавлено через 1 минуту Исполнение функции SystemParametersInfo занимает в среднем 93 миллисекунды времени
0
|
|
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
||||||
| 01.08.2023, 13:25 [ТС] | ||||||
|
Итак, продолжаем эту интересную тему! Я создал для себя модуль в котором расположил две функции. Первая функция, которая сразу меняет картинку, вторая функция которая ещё и конвертирует в BMP сначала. Потом я добавил второй модуль, позаимствовав код с иностранного форума, где какой-то гений придумал код смены картинки через ActiveDesktop.
Итого я решил протестировать три эти функции по времени их выполнения. Тест скорости проводил в EXE в семёрке: 1. SetWallpaper: 63 ml 2. SetWallpaperAndConvertToBMP: 109 ml 3. ActiveDesktopSetWallpaper: 359 ml Хочу обратить внимание на то, что самая быстрая функция это моя SetWallpaper, которая просто выполняет SystemParametersInfo и всё Самая медленная функция - ActiveDesktopSetWallpaper она в среднем выполняется вообще пол секунды, очень долго Код моего модуля с двумя этими функциями:
1
|
||||||
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
|
| 01.08.2023, 14:04 [ТС] | |
|
Функцией SetWallpaperAndConvertToBMP особо не пользуйтесь, она не поддерживает PNG я её писал только для проверки скорости
Чтобы написать оптимальную новую универсальную функцию лучше всего сначала вызывать SystemParametersInfo и в случае неудачи повторно пробовать вызывать ActiveDesktopSetWallpaper, тогда будет работать само быстро по времени Добавлено через 1 минуту Кстати функция ActiveDesktopSetWallpaper в операционной системе Windows XP работает в два раза быстрее по скорости, я заметил Добавлено через 3 минуты Но тут важно понимать разницу в алгоритмах, как работает XP и как работает семёрка, при установлении картинки на рабочий стол XP конвертирует любой графический файл в BMP сохраняет его на диске C: и сразу устанавливает картинку А семёрка конвертирует любой графический файл в JPG уже, а значит потребуется больше времени на сохранение графического файла ибо его ещё и упаковать надо, а потом уже устанавливает эту картинку. Плюс уходит время на процесс копирования файла ещё на диск C: в дебри системы (я уже писал пути сохранения этих картинок) Добавлено через 20 минут Да и функция SetWallpaperAndConvertToBMP не поддерживает юникод и китайщину... А вот функция ActiveDesktopSetWallpaper поддерживает китайщину, это мне понравилось) Добавлено через 4 минуты Хотя в том модуле используется CallWindowProcA вместо CallWindowProcW и всё равно поддерживает китайщину... Ну там какой-то гений писал этот код с ассемблерной вставкой даже...
1
|
|
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
||||||
| 01.08.2023, 21:36 [ТС] | ||||||
|
Ура! Я наконец-то написал модуль с универсальной функций смены картинки на рабочем столе:
1
|
||||||
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
|
| 02.08.2023, 00:09 [ТС] | |
|
Я обнаружил, что функция ActiveDesktopSetWallpaper не работает в P-коде есть такой минус... Только, если компилировать EXE в Native коде. Это странно, учитывая, что в среде выполнения VB6 всё работает как надо
Добавлено через 15 минут Самая новая версия тут: Готовые решения и полезные коды на Visual Basic 6.0 Всё работает как надо. Вроде всё исправил и добавил проверку на существования файла. Добавлено через 4 минуты Должно работать для всех версий Windows по идее.
0
|
|
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
|||||||
| 08.07.2024, 21:15 [ТС] | |||||||
Теперь с этим новым кодом, уже будет не важно русская винда или английская или вообще китайская какая-нибудь... Автор этого кода FlasherX. Тема: Смена обоев рабочего стола
1
|
|||||||
| 09.07.2024, 05:56 | ||
|
Добавлено через 3 минуты но мене не нраится, это слишком выпендрежно
0
|
||
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
|
| 09.07.2024, 05:57 [ТС] | |
|
testuser2, да, это самый лучший код с помощью ассемблерной вставки
0
|
|
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
||||||||||||||||
| 15.07.2024, 08:45 [ТС] | ||||||||||||||||
|
Вот более правильный код:
Единственное в чём я не разобрался это как включить красивое плавное появление картинки на рабочем столе с fade эффектом? Дело в том, что пока я сам вручную не поменяю картинку на рабочем столе через меню "Персонализация" красивого эффекта смены картинки не будет... А как только я хотябы один раз поменяю картинку вручную то и потом всегда будет красиво меняться картинка через интерфейс IActiveDesktop Это странное поведение мною ещё пока не разгадано... Добавлено через 7 минут И главное что в MSDN нет такого описания... Добавлено через 13 минут Конечно для VB такого кода нигде нет, как обычно, но я выяснил, что нужно сначала включать ActiveDesktop специальным хаком, через функцию EnableActiveDesktop, это код на сях:
![]() Добавлено через 9 минут Итак мы переписали этот код на VB6:
И это реально работает!!! Ура!!! Теперь нужно сначала только один раз вызвать EnableActiveDesktop и всё, и потом всякий раз картинка на рабочем столе будет меняться плавно с красивым fade эффектом.
0
|
||||||||||||||||
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
||||||
| 15.07.2024, 10:19 [ТС] | ||||||
|
Вот окончательный вариант моего творчества:
0
|
||||||
| 15.07.2024, 10:19 | |
|
Как программно создать иконку на рабочем столе?
Как поменять обои на рабочем столе? Как поменять рисунок на рабочем столе. Как поменять фоновый рисунок на рабочем столе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|