Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/101: Рейтинг темы: голосов - 101, средняя оценка - 4.52
2 / 2 / 0
Регистрация: 23.05.2010
Сообщений: 5

Смена обоев рабочего стола

28.05.2010, 16:19. Показов 21453. Ответов 80
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужен скрипт после запуска которого менялся бы фон рабочего стола на любое изображение из определенной папки.
2
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2010, 16:19
Ответы с готовыми решениями:

Можно ли с рабочего стола открыть js скрипт, чтобы он вывел messagebox?
Здравствуйте, возник вопрос, можно ли с рабочего стола открыть js скрипт, чтоб он вывел messagebox? Заранее спасибо за ответы нашел...

Настройка удаленного рабочего стола
Помогите пожалуйста настроить удаленный рабочий стол.У меня windows7,и второй комп так же,как настроить,чтобы я смог,находясь в...

Запись сессии удаленного рабочего стола
Мне нужно знать что делает пользователь, после подключения к удаленному рабочему столу. Как мне можно записать сессию удаленного...

80
 Аватар для Abu
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
30.05.2010, 16:35
Visual Basic
1
2
3
Set WShell = CreateObject("WScript.Shell")
WShell.RegWrite "HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper","N:\обои\Безымянный.bmp","REG_SZ"
WShell.Run  "%windir%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters", 1, False
4
2 / 2 / 0
Регистрация: 23.05.2010
Сообщений: 5
31.05.2010, 16:11  [ТС]
а возможность использовать jpeg картинки имеется? чтоб система сама их конвертировала.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
08.07.2024, 14:06
Цитата Сообщение от eatmore Посмотреть сообщение
а возможность использовать jpeg картинки имеется? чтоб система сама их конвертировала.
Без перезагрузки компьютера изменит обои сразу (но только на русской винде):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub SetWallpaper(dirpath, fileName)
    On Error Resume Next
 
    Dim objShellApp, objItem, objFolder, objFile
    Dim colFolderItemVerbs, objFolderItemVerb
 
    Set objShellApp = CreateObject("Shell.Application")
    Set objFolder = objShellApp.Namespace(dirpath)
 
    Set objFile = objFolder.ParseName(fileName)
    Set colFolderItemVerbs = objFile.Verbs
    For Each objFolderItemVerb In colFolderItemVerbs
        If InStr(1, objFolderItemVerb.Name, "фон") Then
          objFolderItemVerb.DoIt
        End If
    Next
End Sub
0
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
08.07.2024, 14:21
Лучший ответ Сообщение было отмечено HackerVlad как решение

Решение

Цитата Сообщение от eatmore Посмотреть сообщение
возможность использовать jpeg картинки имеется?
имеется.

2 универсальных решения с общим недостатком - помимо vbs-скрипта понадобится что-либо еще

powershell

ChangeWallpaper.ps1
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
Param(
    [string] $imgPath
)
 
$mbDef = @'
[DllImport("user32.dll")]
public static extern int SystemParametersInfoA(int act, int ip, string sp, int wi);
'@
 
$WinAPI = Add-Type -MemberDefinition $mbDef -Namespace 'WinAPI' -Name 'User32' -PassThru
 
$WinAPI::SystemParametersInfoA(0x14, 0, $imgPath, 2)
Visual Basic
1
2
3
4
5
Dim imagePath
imagePath = "wallpaper.jpg"
 
Set sh = CreateObject("WScript.Shell")
sh.Run "powershell -ex bypass -file ChangeWallpaper.ps1 -imgPath """ & imagePath & """", 0


самописная утилита (тык)
Visual Basic
1
2
3
4
5
Dim imagePath
imagePath = "wallpaper.jpg"
 
Set sh = CreateObject("WScript.Shell")
sh.Run "rundll34 user32 SystemParametersInfoA int int:20 int:0 string:""" & imagePath & """ int:2", 0
1
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
08.07.2024, 14:48
nekit270, спасибо большое))) rundll34 это конечно очень прикольно)))

Добавлено через 2 минуты
Должно быть и какое-то универсальное решение только для VBS, но я пока его не нашёл. Чтобы был только один VBS файл и всё и чтобы работало на всех виндах.
0
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
08.07.2024, 14:51
Цитата Сообщение от HackerVlad Посмотреть сообщение
универсальное решение
Цитата Сообщение от HackerVlad Посмотреть сообщение
InStr(1, objFolderItemVerb.Name, "фон")
запихиваешь сюда слово "фон" на всех поддерживаемых виндой языках. насколько мне известно, других вариантов нет.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
08.07.2024, 14:53
Цитата Сообщение от nekit270 Посмотреть сообщение
запихиваешь сюда слово "фон" на всех поддерживаемых виндой языках.
ахаххаха насмешил, а у тебя этот код вообще работает кстати?
0
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
08.07.2024, 14:58
HackerVlad, не работает, хотя винда на русском
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
08.07.2024, 15:34
Цитата Сообщение от nekit270 Посмотреть сообщение
не работает, хотя винда на русском
да, этот код не надёжный...

Добавлено через 21 минуту
Цитата Сообщение от nekit270 Посмотреть сообщение
не работает
Я разобрался кстати почему не работает. Потому что скрипт завершает свою работу почему-то ещё до того как произойдёт необходимая команда. Если в конце написать msgbox "Обои установлены!" то всё будет работать, потому что msgbox будет не завершать работу скрипта долгое время, пока не нажмёшь ОК...

Добавлено через 2 минуты
Или Sleep добавлять получается надо что ли...
0
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
08.07.2024, 15:34
Цитата Сообщение от HackerVlad Посмотреть сообщение
Если в конце написать msgbox "Обои установлены!"
лучше уж WSH.Sleep 500
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
08.07.2024, 15:48
Лучший ответ Сообщение было отмечено HackerVlad как решение

Решение

nekit270, да, теперь работает:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub SetWallpaper(dirpath, fileName)
    On Error Resume Next
 
    Dim objShellApp, objItem, objFolder, objFile
    Dim colFolderItemVerbs, objFolderItemVerb
 
    Set objShellApp = CreateObject("Shell.Application")
    Set objFolder = objShellApp.Namespace(dirpath)
 
    Set objFile = objFolder.ParseName(fileName)
    Set colFolderItemVerbs = objFile.Verbs
    For Each objFolderItemVerb In colFolderItemVerbs
        If InStr(1, objFolderItemVerb.Name, "фон") Then
          objFolderItemVerb.DoIt
        End If
    Next
WScript.Sleep 5000
End Sub
 
SetWallpaper "D:\wallpaper", "wallpaper.jpg"
Добавлено через 1 минуту
Тогда получается лучше всего будет соединить этот код мгновенной установки картинки на рабочем столе с тем старым кодом где происходит запись в реестр и тогда будет функция которая точно установит картинку а мгновенно её поменяет только в русской винде)))
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
08.07.2024, 17:02
Цитата Сообщение от HackerVlad Посмотреть сообщение
только в русской винде
Поскольку сабж был немного про другое, выложу свой старый код, где нет такой проблемы:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
'——————————————————————————————————————————————————————
' Назначение: Сделать произвольный в заданной папке или
'       указанный графический файл фоном Рабочего стола
'  Авторство: FlasherX (24.02.2017)
'— Путь графического файла или папки с графикой: ——————
Item = "D:\Wallpapers"
'——————————————————————————————————————————————————————
Set oShA = CreateObject("Shell.Application")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Filt = "*.bmp;*.gif;*.jpg;*.jpeg;*.png;*.tif;*.tiff"
If oFSO.FileExists(Item) Then
   If InStr(Filt & ";*", "." & LCase(oFSO._
   GetExtensionName(Item)) & ";*") Then File = Item Else WSH.Quit
ElseIf oFSO.FolderExists(Item) Then
   Set oItems = oShA.NameSpace(Item).Items: oItems.Filter 73920, Filt
   Cnt = oItems.Count: If Cnt = 0 Then WSH.Quit
   Randomize: File = oItems.Item(CLng(Round(Rnd * (Cnt-1), 0))).Path
Else WSH.Quit() End If
On Error Resume Next
Set oShA = oShA.Windows.Item.document.Application
If Not IsObject(oSHA) Then _
Set oShA = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}").document.Application
On Error GoTo 0: Er = Not IsObject(oSHA)
If Er Then Set oShA = CreateObject("Shell.Application")
oShA.NameSpace(0).ParseName(File).InvokeVerb "setdesktopwallpaper"
If Er Then WSH.Sleep 4000
Set oFSO = Nothing: Set oShA = Nothing
2
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
08.07.2024, 17:11
Цитата Сообщение от FlasherX Посмотреть сообщение
{C08AFD90-F2A1-11D1-8455-00A0C91F3880}
а что это за объект?
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
08.07.2024, 17:19
Очень интересный код, и правда будет работать теперь на всех виндах, где в контекстном меню графических файлов, конечно, есть такой пункт Установки обоев на рабочем столе.
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
08.07.2024, 17:47
Цитата Сообщение от nekit270 Посмотреть сообщение
а что это за объект?
Shell Browser Window из Microsoft Internet Controls (ieframe.dll).

Цитата Сообщение от HackerVlad Посмотреть сообщение
будет работать теперь на всех виндах
Ну не на всех, конечно. На сильно старых вряд ли.
2
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
08.07.2024, 18:13
Цитата Сообщение от FlasherX Посмотреть сообщение
На сильно старых вряд ли.
В XP тоже есть такой пункт меню на файлах!
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
08.07.2024, 18:24
HackerVlad, вообще-то в моём коде не про пункт меню, а про канонический глагол.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
08.07.2024, 20:02
FlasherX, это очень хорошо, но в итоге всё равно выбирается же пункт меню)))) просто можно теперь на винде с любым языком выбирать)
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,694
08.07.2024, 20:06
Цитата Сообщение от HackerVlad Посмотреть сообщение
но в итоге всё равно выбирается же пункт меню
Нет, не выбирается, просто выполняется соотв. команда в отношении файла.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.07.2024, 20:06
Помогаю со студенческими работами здесь

Запрет на удаление ярлыков с рабочего стола
Доброго времени суток! Работаю в школе, появилась необходимость ограничить действия учеников на компьютере. Windows 10 Был создан...

Не отображается фоновый рисунок рабочего стола
Возникла проблема, компьютер с ОС Win7 находится в домене. В групповых политиках выставил запрет на изменение фонового рисунка рабочего...

Где находятся картинки рабочего стола ?
Люди, подскажите плз, как выкачать из винды картинки, которые в темах раб. стола? Где находится эта папка, я уже понял. Resourses - Theme....

Исчезает фоновый рисунок рабочего стола
Каждый раз после включения ноутбука у меня исчезает фоновый рисунок на рабочем столе и становится белым экран, а панель задач автоматически...

Странная сообщение и все пропало с рабочего стола
Эта штука произошла на работе, что они сделали я не знаю.(говорят просто вставили переносной жёсткий, но я им не верю. что все было так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru