PDA

Показать полную графическую версию : [решено] Обновить картинку рабочего стола через командную строку


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]

Vadikan
02-12-2010, 09:58
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

Vadikan
03-12-2010, 10:08
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