Войти

Показать полную графическую версию : [решено] Применение темы через BAT\CMD


Pozia
31-10-2010, 21:28
Есть такой вот скрипт, подсказанный Smarty (источник (http://winreview.ru/forum/viewtopic.php?f=38&t=87)), который должен применять тему:
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
но он у меня не работает. Выскакивает сообщение "Невозможно применить эту тему к рабочему столу. Попробуйте выбрать другую тему". Что может быть не так???

Smarty
31-10-2010, 22:01
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
здесь должна быть пустая строка

hb860
02-11-2010, 16:17
Источник тоже поправлен

Pozia
02-11-2010, 19:29
Smarty, вот здесь (http://forum.oszone.net/post-1533145.html#post1533145) есть более элегантное решение моего вопроса.

Pozia
03-11-2010, 21:01
Smarty, по указанной мною ссылке предложили автоит скрипт применения темы без перезагрузки эксплорера. Очень удобно

Smarty
03-11-2010, 21:22
Pozia, отлично!

Теперь делаем так.
Выкладываю утилиту для компиляции скрипта *.au3 в файл *.exe.
В папке с утилитой лежит файл Theme Apply.au3 с содержанием из поста Bodya.N (http://forum.oszone.net/post-1534103-13.html):
#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 (выделено синим) на название нужной темы и сохраните.
Затем запустите утилиту, укажите этот скрипт и скомпилируйте исполняемый файл.

Bodya.N
03-11-2010, 22:47
Ребят на мой взгляд вот так было бы гораздо удобнее:
#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",только теперь окно "Персонализации" закрывается.

Smarty
03-11-2010, 23:03
Тогда этот вариант.

Во вложении скомпилированный Theme_Apply.exe и пример скрипта Theme_Apply.cmd:
@echo off
"%~dp0Theme_Apply.exe" "Aero"
пустая строка

Chekis9100a
16-11-2010, 03:27
Господа, перечитал и попробовал все варианты, но не желает тема применятся.
Окно тоже не закрывается. А этот вариант мне очень нужен.
Подскажите в чем проблема...

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


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

Angelofdeath
21-04-2011, 14:26
У меня ошибка при запуске скрипта:
http://img-fotki.yandex.ru/get/5705/lirik-m.0/0_6b3f3_74685f6a_M.jpg (http://fotki.yandex.ru/users/lirik-m/view/439283/)
«autoitscreen (http://fotki.yandex.ru/users/lirik-m/view/439283/)» на Яндекс.Фотках (http://fotki.yandex.ru/)
Я думаю проблема в указании имени файла или пути. Подскажите, что я делаю не правильно?


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

#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

Smarty
21-04-2011, 14:34
Angelofdeath, наверно ошибка в точке перед именем темы (хотя в АвтоИт не силен).
Ошибка в этих строках:
If FileExists(@WindowsDir & "\Resources\Themes\" &theme & ".Sexy girl.theme") Then
ShellExecute(@WindowsDir & "\Resources\Themes\" &theme & ".Sexy girl.theme")
У вас прописана переменная
$theme = "Sexy girl.theme"
зачем вы ещё имя темы и в эти строчки прописали, да ещё с точкой перед именем?

Angelofdeath
21-04-2011, 15:17
По скольку я не совсем понимаю где и что нужно менять пробую разные варианты. Куда нужно подставить название темы?

Smarty
21-04-2011, 15:21
Angelofdeath, здесь (http://forum.oszone.net/post-1663154-6.html) я вам всё уже выложил!
Откройте в Блокноте файл Theme_Apply.cmd и посмотрите где и как прописано название вашей темы.

Angelofdeath
21-04-2011, 15:43
Ошибка:
http://img-fotki.yandex.ru/get/5303/lirik-m.0/0_6b3f6_26ec994f_M.jpg (http://fotki.yandex.ru/users/lirik-m/view/439286/)
«screenautoit (http://fotki.yandex.ru/users/lirik-m/view/439286/)» на Яндекс.Фотках (http://fotki.yandex.ru/)

Smarty
21-04-2011, 15:51
Angelofdeath, это вопрос к Bodya.N, автору скомпилированного скрипта.
Напишите ему в ПМ, так как вряд ли он сюда уже заглядывает...

Bodya.N
21-04-2011, 21:55
Angelofdeath , запускать нужно "Theme_Apply.cmd" (из вложения Smarty).Именно этот файл запускает "Theme_Apply.exe" с параметрами "название Вашей темы" и редактируется (если нужно применить другую тему) в "Блокноте" (Notepad.exe).

Smarty
21-04-2011, 22:03
Bodya.N, видно, тяжелый случай...
Написал же
Скачайте из вложения архив, распакуйте и запустите файл Theme_Apply.cmd. »




© OSzone.net 2001-2012