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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Оформление Windows 11/ 10 / 8 / 7 / Vista (http://forum.oszone.net/forumdisplay.php?f=113)
-   -   [решено] Применение темы через BAT\CMD (http://forum.oszone.net/showthread.php?t=189931)

Pozia 31-10-2010 21:28 1531898

Применение темы через BAT\CMD
 
Есть такой вот скрипт, подсказанный 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

но он у меня не работает. Выскакивает сообщение "Невозможно применить эту тему к рабочему столу. Попробуйте выбрать другую тему". Что может быть не так???

Smarty 31-10-2010 22:01 1531915

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 1533192

Источник тоже поправлен

Pozia 02-11-2010 19:29 1533311

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

Pozia 03-11-2010 21:01 1534156

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

Smarty 03-11-2010 21:22 1534172

Вложений: 1
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 (выделено синим) на название нужной темы и сохраните.
Затем запустите утилиту, укажите этот скрипт и скомпилируйте исполняемый файл.

Bodya.N 03-11-2010 22:47 1534250

Ребят на мой взгляд вот так было бы гораздо удобнее:
Код:

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

Вложений: 1
Тогда этот вариант.

Во вложении скомпилированный Theme_Apply.exe и пример скрипта Theme_Apply.cmd:
Код:

@echo off
"%~dp0Theme_Apply.exe" "Aero"
пустая строка


Chekis9100a 16-11-2010 03:27 1543634

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

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 1663121

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

«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

Smarty 21-04-2011 14:34 1663131

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 1663156

По скольку я не совсем понимаю где и что нужно менять пробую разные варианты. Куда нужно подставить название темы?

Smarty 21-04-2011 15:21 1663159

Angelofdeath, здесь я вам всё уже выложил!
Откройте в Блокноте файл Theme_Apply.cmd и посмотрите где и как прописано название вашей темы.

Angelofdeath 21-04-2011 15:43 1663177

Ошибка:

«screenautoit» на Яндекс.Фотках

Smarty 21-04-2011 15:51 1663183

Angelofdeath, это вопрос к Bodya.N, автору скомпилированного скрипта.
Напишите ему в ПМ, так как вряд ли он сюда уже заглядывает...

Bodya.N 21-04-2011 21:55 1663460

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

Smarty 21-04-2011 22:03 1663472

Bodya.N, видно, тяжелый случай...
Написал же
Цитата:

Цитата Smarty
Скачайте из вложения архив, распакуйте и запустите файл Theme_Apply.cmd. »



Время: 05:52.

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