Тему сменить так:
ShellExecute(Self.Handle, 'open', 'C:\Windows\Resources\Themes\MyTheme.theme', nil, nil, SW_SHOWNORMAL);
Убить explorer.exe так:
WinExec(PANsiChar('TASKKILL /F /IM explorer.exe'), SW_HIDE);
Запустить explorer так:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | procedure TForm1 . Button1Click(Sender: TObject);
var
FileName : String ;
SUInfo : TStartUpInfo;
ProcInfo : TProcessInformation;
begin
ZeroMemory(@SUInfo, SizeOf(TStartUpInfo));
with SUInfo do
begin
cb := SizeOf(TStartUpInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := SW_SHOWNORMAL;
end ;
FileName := 'Explorer.exe' ;
CreateProcess( PChar ( 'C:\\Windows\\' + FileName), nil , nil , nil , False , 0 , nil , nil , SUInfo, ProcInfo);
end ;
|
Если все написать друг за другом, то тема не успевает примениться, как происходит завершение процесса explorer и при этом не срабатывает и запуск. То есть необходимо все делать последовательно. Показателем того, что тема успешно применилась является окно персонализация. Её требуется обнаружить и если обнаружили, то завершить explorer, затем проверить, если explorer завершен, то запустить explorer, я где-то так понимаю , а как технически воплотить нет уже сил пытаться, помогите.