Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Обновить картинку рабочего стола через командную строку (http://forum.oszone.net/showthread.php?t=192823)

Larrikin 02-12-2010 09:55 1556434

Обновить картинку рабочего стола через командную строку
 
Пытаюсь сделать скрипт обновления картинки рабочего стола, нашел документацию похоже по 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 1556437

Larrikin, explorer убивать пробовали? См. также Как применить тему оформления Windows из командной строки

Petya V4sechkin 02-12-2010 10:27 1556449

[решено] Команда для обновления рабочего стола

Larrikin 02-12-2010 11:08 1556481

Цитата:

Цитата Petya V4sechkin
[решено] Команда для обновления рабочего стола »

в первом варианте не команда, а программа - мне не годится
во втором варианте предлагают 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 1557280

с этим скриптом после перезагрузки картинка меняется, так что похоже прописывается в реестр правильно

осталось добиться, чтобы она применялась без перезагрузки - что нужно сделать?

Такой скрипт вызывает мигание иконок рабочего стола, но картинка всё так же меняется только после двух-трех перезагрузок:
Код:

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 1557300

Larrikin, положите утилиту NirCmd в D:\Script\CMD\ и не морочьте себе голову :) Ну либо внятно объясните, что вам мешает это сделать. Понятно, что вы хотите без сторонних утилит. А почему не вы хотите использовать сторонние для решения проблемы?

ookamiro 20-12-2010 16:09 1570512

Larrikin, попробуй вместо:

rundll32.exe user32.dll,UpdatePerUserSystemParameters ,1 ,True

использовать

wallpaper.exe

исходник этого экзешника взят отсюда, там же можно найти уже скомпилированный бинарник:
Код:

#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 1571354

Спасибо, вроде работает.


Время: 16:52.

Время: 16:52.
© OSzone.net 2001-