Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Изменение внешнего вида Windows » Оформление Windows 11/ 10 / 8 / 7 / Vista » Разное - [решено] Применение темы через BAT\CMD

Ответить
Настройки темы
Разное - [решено] Применение темы через BAT\CMD

Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Изменения
Автор: Smarty
Дата: 31-10-2010
Описание: Изменил название темы
Есть такой вот скрипт, подсказанный Smarty (источник), который должен применять тему:
Код: Выделить весь код
rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:%SystemRoot%\Resources\themes\Aero.theme
taskkill /im explorer.exe /F 
start explorer.exe
но он у меня не работает. Выскакивает сообщение "Невозможно применить эту тему к рабочему столу. Попробуйте выбрать другую тему". Что может быть не так???

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 21:28, 31-10-2010

 

Аватара для Smarty

In reserve...


Contributor


Сообщения: 6918
Благодарности: 2135

Профиль | Отправить PM | Цитировать


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

Дело в том, что команда
Код: Выделить весь код
taskkill /im explorer.exe /F
не дает времени для применения темы, значит надо "прикрутить" паузу
Код: Выделить весь код
ping -n 10 127.0.0.1 > NUL
где 10 - время паузы в секундах.
И ещё...
Путь к файлу темы лучше указать в кавычках (из-за возможных пробелов в пути).

Вот рабочий скрипт:
Код: Выделить весь код
rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:"%SystemRoot%\Resources\themes\Aero.theme"
ping -n 10 127.0.0.1 > NUL
taskkill /im explorer.exe /F
start explorer.exe
здесь должна быть пустая строка

Последний раз редактировалось Smarty, 31-10-2010 в 23:03.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:01, 31-10-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


Smarty, вот здесь есть более элегантное решение моего вопроса.

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 19:29, 02-11-2010 | #4


Аватара для Pozia

Ветеран


Сообщения: 2756
Благодарности: 211

Профиль | Отправить PM | Цитировать


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

-------
Жизни вглядись в глаза: Это то, что ты всегда искал? Это то, что ты всегда хотел? Да или нет?


Отправлено: 21:01, 03-11-2010 | #5


Аватара для Smarty

In reserve...


Contributor


Сообщения: 6918
Благодарности: 2135

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt Link.txt
(51 байт, 81 просмотров)

Pozia, отлично!

Теперь делаем так.
Выкладываю утилиту для компиляции скрипта *.au3 в файл *.exe.
В папке с утилитой лежит файл Theme Apply.au3 с содержанием из поста Bodya.N:
Код: Выделить весь код
#NoTrayIcon
$theme = "Aero"
$title = "Персонализация"

If FileExists(@WindowsDir & "\Resources\Themes\" & $theme & ".theme") Then
	ShellExecute(@WindowsDir & "\Resources\Themes\" & $theme & ".theme")
	WinWait($title, "", 10)
	If WinExists($title) Then ControlClick($title, "", 1)
	 Sleep(5000)
	WinClose($title)
Else
	MsgBox(16, 'Ошибка применения Темы', 'Тема "' & $theme & '" не обнаружена! ')
EndIf
Чтобы модифицировать для применения конкретной темы, откройте скрипт в Блокноте
и измените в первой строке Aero (выделено синим) на название нужной темы и сохраните.
Затем запустите утилиту, укажите этот скрипт и скомпилируйте исполняемый файл.

Последний раз редактировалось Smarty, 03-11-2010 в 22:26.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:22, 03-11-2010 | #6


Аватара для Bodya.N

Пользователь


Сообщения: 106
Благодарности: 40

Профиль | Отправить PM | Цитировать


Ребят на мой взгляд вот так было бы гораздо удобнее:
Код: Выделить весь код
#NoTrayIcon
$theme = $CMDLINE[1]
$title = "Персонализация"

If FileExists(@WindowsDir & "\Resources\Themes\" & $theme & ".theme") Then
	ShellExecute(@WindowsDir & "\Resources\Themes\" & $theme & ".theme")
	WinWait($title, "", 10)
	If WinExists($title) Then ControlClick($title, "", 1)
	 Sleep(5000)  
	WinClose($title)
Else
	MsgBox(16, 'Ошибка применения Темы', 'Тема "' & $theme & '" не обнаружена! ')
EndIf
Теперь скомпилированный екзешник запускаем из командной строки с параметром "Название темы".Например
Код: Выделить весь код
"Theme Apply.exe" "Aero"
По сути этот скрипт ничто иное как SetTheme.exe из "ResPatch",только теперь окно "Персонализации" закрывается.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:47, 03-11-2010 | #7


Аватара для Smarty

In reserve...


Contributor


Сообщения: 6918
Благодарности: 2135

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: 7z Theme Apply New.7z
(304.0 Kb, 236 просмотров)

Тогда этот вариант.

Во вложении скомпилированный Theme_Apply.exe и пример скрипта Theme_Apply.cmd:
Код: Выделить весь код
@echo off
"%~dp0Theme_Apply.exe" "Aero"
пустая строка
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:03, 03-11-2010 | #8


Аватара для Chekis9100a

Пользователь


Сообщения: 88
Благодарности: 7

Профиль | Отправить PM | Цитировать


Господа, перечитал и попробовал все варианты, но не желает тема применятся.
Окно тоже не закрывается. А этот вариант мне очень нужен.
Подскажите в чем проблема...

PS: Только у меня XP

Все разобрался...


$theme = "*****"
$title = "Свойства: Экран"

If FileExists (@WindowsDir & "\Resources\Themes\" & $theme & ".theme") Then
ShellExecute (@WindowsDir & "\Resources\Themes\" & $theme & ".theme")
WinWait ($title,"",10)
If WinExists ($title) Then ControlClick ($title,"",1)
Else
MsgBox (16,'Ошибка применения Темы','Тема "' & $theme & '" не обнаружена! ')
EndIf


Теперь заработало!!! Всем спасибо.

Последний раз редактировалось Smarty, 16-11-2010 в 07:11.


Отправлено: 03:27, 16-11-2010 | #9


Пользователь


Сообщения: 147
Благодарности: 3

Профиль | Сайт | Отправить PM | Цитировать


У меня ошибка при запуске скрипта:

«autoitscreen» на Яндекс.Фотках
Я думаю проблема в указании имени файла или пути. Подскажите, что я делаю не правильно?


Пример скрипта:

#NoTrayIcon
$theme = "Sexy girl.theme"
$title = "Персонализация"

If FileExists(@WindowsDir & "\Resources\Themes\" &theme & ".Sexy girl.theme") Then
ShellExecute(@WindowsDir & "\Resources\Themes\" &theme & ".Sexy girl.theme")
WinWait($title, "", 10)
If WinExists($title) Then ControlClick($title, "", 1)
Sleep(5000)
WinClose($title)
Else
MsgBox(16, 'Ошибка применения Темы', 'Тема "' & $theme & '" не обнаружена! ')
EndIf

Отправлено: 14:26, 21-04-2011 | #10



Компьютерный форум OSzone.net » Изменение внешнего вида Windows » Оформление Windows 11/ 10 / 8 / 7 / Vista » Разное - [решено] Применение темы через BAT\CMD

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] не работает(частично) в домене батник Reactor77 Скриптовые языки администрирования Windows 2 17-09-2010 12:29
CMD/BAT - Изменение расписания AT через батник laipisas02 Скриптовые языки администрирования Windows 4 10-06-2010 09:30
Разное - Почему я не могу создавать темы на форумах Dragon_1 Microsoft Windows Vista 3 17-09-2009 09:01
CMD/BAT - [решено] нельзя назвать батник делающий xcopy, xcopy.bat почему ? foxbat Скриптовые языки администрирования Windows 3 17-09-2009 05:33
Помогите. Не работает батник!!! MJR Microsoft Windows 2000/XP 6 01-02-2003 00:02




 
Переход