|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как сменить тему Windows, дождаться её применения и перезапустить explorer?
Тему сменить так: 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 так: Код:
procedure TForm1.Button1Click(Sender: TObject); var FileName : String; SUInfo : TStartUpInfo; ProcInfo : TProcessInformation; begin //ShellExecute(Handle, 'open', 'explorer.exe', 'C:\Windows\system32', '', SW_SHOW); //WinExec(PANsiChar('TASKKILL /F /IM explorer.exe'), SW_HIDE); //sleep(5000); //ShellExecute(Handle,'open','C:\WINDOWS\Explorer.EXE',nil,nil,SW_ShowNormal); 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, я где-то так понимаю , а как технически воплотить нет уже сил пытаться, помогите. Последний раз редактировалось lmikle, 22.04.2012 в 06:05. |