Показать полную графическую версию : [решено] Обновить картинку рабочего стола через командную строку
Larrikin
02-12-2010, 09:55
Пытаюсь сделать скрипт обновления картинки рабочего стола, нашел документацию похоже по XP
rem fix wallpaper
reg add "HKCU\Control Panel\Desktop" /v "Wallpaper" /t REG_SZ /d "D:\Script\CMD\logo.jpg" /f
rundll32.exe user32.dll,UpdatePerUserSystemParameters ,1 ,True
кажется, параметр в реестр правильный прописывает, но картинка не обновляется на самом рабочем столе
что я делаю не так? система:
Microsoft Windows [Version 6.1.7600]
Larrikin, explorer убивать пробовали? См. также Как применить тему оформления Windows из командной строки (http://winreview.ru/Sekreti-Windows/843/Kak-primenit-temu-oformleniya-Windows-iz-komandnoj-stroki)
Petya V4sechkin
02-12-2010, 10:27
[решено] Команда для обновления рабочего стола (http://forum.oszone.net/thread-171444.html)
Larrikin
02-12-2010, 11:08
[решено] Команда для обновления рабочего стола »
в первом варианте не команда, а программа - мне не годится
во втором варианте предлагают RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
кстати, попробовал убрал пробелы, вариант
start rundll32.exe user32.dll,UpdatePerUserSystemParameters,1,True
выдает окно ошибки RunDLL:
Ошибка в user32.dll
Нет точки входа: UpdatePerUserSystemParametrs,1,True
насколько кошерно убивать explorer.exe через taskkill?
такой вариант не меняет картинку :( хотя explorer умирает и возрождается
rem fix wallpaper
reg add "HKCU\Control Panel\Desktop" /v "Wallpaper" /t REG_SZ /d "D:\Script\CMD\komputeriya_logo.jpg" /f
rem start rundll32.exe user32.dll,UpdatePerUserSystemParameters,1,True
taskkill /im explorer.exe /F
start explorer.exe
Larrikin
03-12-2010, 09:50
с этим скриптом после перезагрузки картинка меняется, так что похоже прописывается в реестр правильно
осталось добиться, чтобы она применялась без перезагрузки - что нужно сделать?
Такой скрипт вызывает мигание иконок рабочего стола, но картинка всё так же меняется только после двух-трех перезагрузок:
rem fix wallpaper
reg add "HKCU\Control Panel\Desktop" /v "Wallpaper" /t REG_SZ /d "D:\Script\CMD\wallpaper.jpg" /f
start d:\Script\CMD\nircmd.exe shellrefresh
rem start rundll32.exe user32.dll,UpdatePerUserSystemParameters,1,True
rem taskkill /im explorer.exe /F
rem start explorer.exe
Larrikin, положите утилиту NirCmd в D:\Script\CMD\ и не морочьте себе голову :) Ну либо внятно объясните, что вам мешает это сделать. Понятно, что вы хотите без сторонних утилит. А почему не вы хотите использовать сторонние для решения проблемы?
ookamiro
20-12-2010, 16:09
Larrikin, попробуй вместо:
rundll32.exe user32.dll,UpdatePerUserSystemParameters ,1 ,True
использовать
wallpaper.exe
исходник этого экзешника взят отсюда (http://habrahabr.ru/blogs/sysadm/104460/), там же можно найти уже скомпилированный бинарник:
#include <windows.h>
#include <stdio.h>
#include <iostream>
int main(int argc, char **argv)
{
if(argc == 0) return 1;
SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, (PVOID)argv[1], SPIF_UPDATEINIFILE | SPIF_SENDCHANGE );
return 0;
}
Larrikin
21-12-2010, 16:36
Спасибо, вроде работает.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC