|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||||||
Как программно в Windows XP поменять картинку на рабочем столе, используя файл JPG?30.07.2023, 20:16. Показов 2383. Ответов 33
Метки нет (Все метки)
Всем привет!
Скажите, пожалуйста, как в Windows XP установить картинку на рабочем столе в формате JPG??? Или никак вообще? Неужели только начиная от Windows Vista или даже Windows 7 можно установить именно JPG-картинку??? В семёрке этот код прекрасно работает: Модуль:
1
|
|||||||||||
| 30.07.2023, 20:16 | |
|
Ответы с готовыми решениями:
33
Как сохранить файл напрямую в базу данных,не используя путь к файлу на рабочем столе? Как создать файл на рабочем столе так, что бы работало на Linux и на Windows? Как средствами 1С сменить картинку на рабочем столе |
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 31.07.2023, 19:59 [ТС] | ||
|
I can, спасибо большое в семёрке работает со всеми форматами файлов, сейчас в XP ещё проверю будет ли работать...
Добавлено через 10 минут Да, проверил и в XP тоже работает даже с PNG. Но XP конечно сама их конвертирует в BMP и копирует в определённую папку. А семёрка конвертирует в JPG. Добавлено через 1 минуту
0
|
||
|
dive
4976 / 4689 / 848
Регистрация: 13.04.2015
Сообщений: 9,902
|
|
| 31.07.2023, 20:44 | |
|
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 31.07.2023, 20:59 [ТС] | |
|
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 01.08.2023, 12:44 [ТС] | |
|
Единственный минус этой функции ActiveDesktopSetWallpaper это то, что она выполняется слишком долго от 350 до 600 миллисекунд ажно. То есть в среднем приходится ждать аж по пол секунды времени, чтобы картинка поменялась и обратно пришёл отклик в твою программу...
Добавлено через 2 минуты Я провел некоторые тесты где понял что исполнение SystemParametersInfo выигрывает в производительности это самая быстрая функция для смены обоев, так как ничего не конвертируется в BMP? ничего никуда не перекопируется... Просто сразу устанавливаются обои и всё Добавлено через 1 минуту Исполнение функции SystemParametersInfo занимает в среднем 93 миллисекунды времени
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||
| 01.08.2023, 13:25 [ТС] | ||||||
|
Итак, продолжаем эту интересную тему! Я создал для себя модуль в котором расположил две функции. Первая функция, которая сразу меняет картинку, вторая функция которая ещё и конвертирует в BMP сначала. Потом я добавил второй модуль, позаимствовав код с иностранного форума, где какой-то гений придумал код смены картинки через ActiveDesktop.
Итого я решил протестировать три эти функции по времени их выполнения. Тест скорости проводил в EXE в семёрке: 1. SetWallpaper: 63 ml 2. SetWallpaperAndConvertToBMP: 109 ml 3. ActiveDesktopSetWallpaper: 359 ml Хочу обратить внимание на то, что самая быстрая функция это моя SetWallpaper, которая просто выполняет SystemParametersInfo и всё Самая медленная функция - ActiveDesktopSetWallpaper она в среднем выполняется вообще пол секунды, очень долго Код моего модуля с двумя этими функциями:
1
|
||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 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
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||
| 01.08.2023, 21:36 [ТС] | ||||||
|
Ура! Я наконец-то написал модуль с универсальной функций смены картинки на рабочем столе:
1
|
||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 02.08.2023, 00:09 [ТС] | |
|
Я обнаружил, что функция ActiveDesktopSetWallpaper не работает в P-коде есть такой минус... Только, если компилировать EXE в Native коде. Это странно, учитывая, что в среде выполнения VB6 всё работает как надо
Добавлено через 15 минут Самая новая версия тут: Готовые решения и полезные коды на Visual Basic 6.0 Всё работает как надо. Вроде всё исправил и добавил проверку на существования файла. Добавлено через 4 минуты Должно работать для всех версий Windows по идее.
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||
| 08.07.2024, 21:15 [ТС] | |||||||
Теперь с этим новым кодом, уже будет не важно русская винда или английская или вообще китайская какая-нибудь... Автор этого кода FlasherX. Тема: Смена обоев рабочего стола
1
|
|||||||
| 09.07.2024, 05:56 | ||
|
Добавлено через 3 минуты но мене не нраится, это слишком выпендрежно
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 09.07.2024, 05:57 [ТС] | |
|
testuser2, да, это самый лучший код с помощью ассемблерной вставки
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||||||||||||
| 15.07.2024, 08:45 [ТС] | ||||||||||||||||
|
Вот более правильный код:
Единственное в чём я не разобрался это как включить красивое плавное появление картинки на рабочем столе с fade эффектом? Дело в том, что пока я сам вручную не поменяю картинку на рабочем столе через меню "Персонализация" красивого эффекта смены картинки не будет... А как только я хотябы один раз поменяю картинку вручную то и потом всегда будет красиво меняться картинка через интерфейс IActiveDesktop Это странное поведение мною ещё пока не разгадано... Добавлено через 7 минут И главное что в MSDN нет такого описания... Добавлено через 13 минут Конечно для VB такого кода нигде нет, как обычно, но я выяснил, что нужно сначала включать ActiveDesktop специальным хаком, через функцию EnableActiveDesktop, это код на сях:
![]() Добавлено через 9 минут Итак мы переписали этот код на VB6:
И это реально работает!!! Ура!!! Теперь нужно сначала только один раз вызвать EnableActiveDesktop и всё, и потом всякий раз картинка на рабочем столе будет меняться плавно с красивым fade эффектом.
0
|
||||||||||||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||
| 15.07.2024, 10:19 [ТС] | ||||||
|
Вот окончательный вариант моего творчества:
0
|
||||||
| 15.07.2024, 10:19 | |
|
Помогаю со студенческими работами здесь
34
Как программно создать иконку на рабочем столе?
Как поменять обои на рабочем столе? Как поменять рисунок на рабочем столе. Как поменять фоновый рисунок на рабочем столе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера»
Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит.
Придуман Биллом Госпером в 1970-х, опубликован в. . .
|
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb">
<style>
<!]>
</ style>
<g id="bush">
</ g>
</ svg>
function fn(){
let rost;/ / высота древа
let xx=165,yy=210,w=256;
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|