Что нового

Мгновенная настройка WinXP (оформление)

P

Pixy

Гость
Версия AutoIt:3.3

Описание:
Имееться установочный пакет который копирует Стиль, курсоры, обою, звуки Win по системным папкам
в реестре создаёт тему курсора и звуков

Далее нужно всё это мгновенно применить, т.е. изменить стиль виндовс, применить тему курсора, сменить изображение раб стола...

причём язык виндовс не должен играть роли.

Примечание:
$title = "Свойства: Экран"
ShellExecute (@WindowsDir & "\Resources\Themes\Aurora\Aurora.msstyles")
WinWait ($title,"",10)
If WinExists ($title) Then ControlClick ($title,"",1)

дали такой вариант на стиль, но тут язык играет роль (
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Pixy
Я бы сохранил тему с расширением *.theme, а потом применил ее в любое время...
Тема включает в себя очень много параметров интерфейса WINDOWS, в том числе стиль, обои, курсоры и звуки...
 
Автор
P

Pixy

Гость
у меня почему то не сохраняеться тема ((
а создать в ручную не получаеться, точнее получаеться, но что то не так всё (

Но её применение нужно в любом случает автоватом, что бы запустил установцик и всё применилось разом само...
 

vovsla

Осваивающий
Сообщения
607
Репутация
36
используй реестр для всех настроек, чтобы узнать что нужно сохранять используй TotalUninstall
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Pixy [?]
всё применилось разом само
Тема WINDOWS, по сути, сохраняет текущие параметры интерфейса, и для нее не важно, как ты устанавливал текущий стиль, чем ты выставлял фоновый рисунок рабочего стола...
А вот то, что тема не сохраняется, похоже на какой-то конфликт в системе...
 
Автор
P

Pixy

Гость
snoitaleR ну допустим я сделаю завтро тему, как мне сделать, что бы она применилась автоматически ?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Кликнуть по ней 2 раза :D Ну запустить ее всмысле :smile:
 

SyDr

Сидра
Сообщения
651
Репутация
158
Pixy, ты можешь отличать окна не только по заголовку, но и по классу.
AutoIt Help File \ Using AutoIt \ Window Titles and Text (Advanced)
 
Автор
P

Pixy

Гость
$title = "[ACTIVE]"

так ведь сойдёт ?
 

SyDr

Сидра
Сообщения
651
Репутация
158
Не совсем. Ты ведь не уверен на 100%, что именно это окно будет активным. Вдруг какой-то глюк и оно появится только через минут 5.
Запусти AutoIt Window Info. Посмотри инфу об окне. И скинь сюда инфу с вкладки Summary. Я бы сам сделал, но у меня уже не XP.
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Код:
; НАЧАЛО

 $WT="Свойства: Экран"

 $TH='"X:\SORT\11.THEME"'

 ShellExecute("rundll32.exe","shell32.dll,Control_RunDLL desk.cpl desk,@Themes /Action:OpenTheme /File:"&$TH)
 WinWait($WT)
 WinActivate($WT)
 if WinActive($WT) then Send("{ENTER}")

; КОНЕЦ


Работает только при условии, что окно "Свойства: Экран" не было открыто до запуска скрипта...
И еще... Большое внимание знакам препинания... Ух, помучился... :smile:


Добавлено:
Сообщение автоматически объединено:

Не получилось сделать языконезависимый скрипт, так как я не смог ничего уникального получить от окна "Свойства: Экран", кроме его заголовка...
 

SyDr

Сидра
Сообщения
651
Репутация
158
Вспомнил, что у меня на ноуте XP.
В качестве заголовка можешь использовать "[CLASS:#32770]"
WinWaitActive с этим работает корректно. Оданако, в системе несколько окон могут иметь такой класс, поэтому разумнее будет использовать просто Send

То бишь:
Код:
$sPath = "t.theme"
ShellExecute($sPath)
WinWaitActive("[CLASS:#32770]")
Send("{ENTER}")
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
SyDr [?]
разумнее будет использовать просто Send
Разумнее будет искать по тексту окна + класс:
Код:
WinWaitActive("[CLASS:#32770]", "Preview")


Однако есть ещё вариант - получать Handle дочернего элемента:

Код:
#include <WinAPI.au3>

$sTitle = "ThemePreview1"
$sText = "Preview"
$sTheme = '"X:\SORT\11.THEME"'

$hAncestor = 0

ShellExecute("rundll32.exe", "shell32.dll,Control_RunDLL desk.cpl desk,@Themes /Action:OpenTheme /File:" & $sTheme)

While Not WinExists($hAncestor, $sText)
	$hAncestor = _WinAPI_GetAncestor(ControlGetHandle("", $sText, $sTitle), 2)
	Sleep(10)
WEnd

WinActivate($hAncestor, $sText)
WinWaitActive($hAncestor, $sText, 3)
If WinActive($hAncestor, $sText) Then ControlClick($hAncestor, $sText, "Button3")
 
Автор
P

Pixy

Гость
Всем спасибо !
Всё сделал как хотел :smile:
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Не следует полагаться только на класс окна:
[CLASS:#32770]
так как не только окно "Свойства: Экран" имеет такой класс...
Такой же класс имеет окно "OUTPOST.FIREWALL.PRO"...

Ну, и еще один вариант скрипта:
Код:
; НАЧАЛО

; Автоматическое применение темы оформления

 $WT1="[CLASS:#32770]"
 $WT2="Preview"

 $TH='"X:\PROJECT\AUTOIT\THEME.THEME"'

 ShellExecute("rundll32.exe","shell32.dll,Control_RunDLL desk.cpl desk,@Themes /Action:OpenTheme /File:"&$TH)
 WinWait($WT1,$WT2)
 WinActivate($WT1,$WT2)
 WinWaitActive($WT1,$WT2)
 if WinActive($WT1,$WT2) then ControlClick($WT1,"ОК","[CLASS:Button;INSTANCE:3]")

; КОНЕЦ
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Верх