Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Программный способ смены обоев в Win 98/XP. / 6 сообщений из 6, страница 1 из 1
01.03.2007, 18:08
    #34364680
Pavel Kilevatyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программный способ смены обоев в Win 98/XP.
Доброго дня.

Тут пришла идейка, сделать небольшой сюрприз к 8-му марта прекрасной половине конторы. Естественно в дополнении к подарку.
Идея такая: 7 числа с утра поменять умолчательные обои на рабочих столах дам.

К сожалению в Win я не силен, как удаленно заменить - плохо себе представляю.
Основные требования - простота и надежность.

В голове крутится такая схема, на сервере в расшаренной папке создается флаговый файл, содержащий сведения о разрешении\запрете сменить обоину.
Флаг переключается в нужный режим по крону, например в 00:00 7 марта.

Теперь самое непонятное как сменить или принудительно установить обоину (если обои не установленны) на машине пользователя (Win98, WinXP). На каждой машине есть доступ к бюджету администратора, но нет пароля конечного пользователя. То есть сейчас стоит полторы проблемы:
1. Как программно сменить обоину пользователю.
1.5. Как запустить замену картинки от имени вошедшего пользователя.

Для решения 1, можно использовать утилиту display из пакета ImageMagic, боюсь есть более простые способы. Если не тяжело - поделитесь.
Для 2 в случае 98 можно прописаться в Пуск\Программы\Автозапуск конкретного пользователя для XP я не уверен в результате (используется FAT32 и NTFS).
Может подскажете менее громоздкую схему?
...
Рейтинг: 0 / 0
01.03.2007, 18:43
    #34364768
madvet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программный способ смены обоев в Win 98/XP.
Заходишь под админом, с помощью какой-нибудь программы подбираешь пароли пользователей (обычно дамы не используют 20-значные пароли со спецсимволами :)) Потом загружаешься, запускаешь свою программу, которая будет запускаться при старте окон, тихо сидеть и ждать своего часа, при наступлении которого менять обои. Программу такую несложно самому написать. Если я все правильно понял :)
...
Рейтинг: 0 / 0
01.03.2007, 19:01
    #34364809
madvet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программный способ смены обоев в Win 98/XP.
Ну про подбор паролей это я загнул!
...
Рейтинг: 0 / 0
02.03.2007, 10:56
    #34365923
Pavel Kilevatyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программный способ смены обоев в Win 98/XP.
Может кто подскажет скрипт для смены обоев, работающий в Win98 и WinXP?
Вот это:
Код: plaintext
ChangeWallpaper "c:\windows\Clouds.bmp", "True"
Не работает под Win98
...
Рейтинг: 0 / 0
02.03.2007, 18:25
    #34367992
Pavel Kilevatyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программный способ смены обоев в Win 98/XP.
Все, порешал.

Скрипт приведенный в листинге запускает утилиту wallche.exe (см в Гугле) с параметром 3 (растянуть на весь экран). Такой подход позволяет использовать картинки одного размера для любых разумных разрешений экрана.
Пара чисел 6 и 17 - граница срабатывания скрипта в днях, 3 - номер месяца срабатывания.

Скрипт предполагает, что картинки находятся в одной папке и имеют вид <Номер картинки>.jpg. Если не требуется выводить случайную картинку, скрипт можно упростить. В данном случае при удовлетворительной дате скрипт устанавливает одну из 49 картинок. Мне кажется это наиболее дешевый способ установить 15 тёткам разные картинки с приемлемой вероятностью.

Для установки скрипта в систему нужно импортировать файл реестра вида:
Код: plaintext
1.
2.
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"Wallpaper"="<путь к скрипту на сервере>wallpaper.vbs"
Тем самым прописав запуск для всех пользователей.
Листинг wallpaper.vbs:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Randomize
Dim oShell
if   6  < Mid(Date,  1 ,  2 ) and  17  > Mid(Date,  1 ,  2 ) and  3  =  Mid(Date,  4 ,  2 )Then 
   aFile =  "<Путь к картинкам>"+cstr(Int (( 49 *RND)+ 1 ))+".jpg"
   Set oShell = WScript.CreateObject ("WScript.shell")
   oShell.run "\\sv\Public\wallche.exe 3"+aFile,  1 , true
   Set oShell = Nothing	
end if
...
Рейтинг: 0 / 0
02.03.2007, 18:44
    #34368063
Паля
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программный способ смены обоев в Win 98/XP.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
HRESULT hr;
IActiveDesktop *pActiveDesktop;

//Create an instance of the Active Desktop
hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER,
                      IID_IActiveDesktop, (void**)&pActiveDesktop);

//Insert code to call the IActiveDesktop methods

pActiveDesktop->SetWallpaper( "c:\wp.bmp", NULL)

// Call the Release method
pActiveDesktop->Release();
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Программный способ смены обоев в Win 98/XP. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]