Что нового

Отключение\включение Windows Aero

Danzo

Новичок
Сообщения
18
Репутация
0
Версия AutoIt: 3.3.14.2

Описание: Отключение\включение Windows Aero

Примечания: Без отключения службы "Диспетчер сеансов диспетчера окон рабочего стола". По большей степени мне нужен пример как это можно реализовать скриптом.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
в семерке работал вариант
https://autoit-script.ru/index.php/topic,10509.msg69558.html#msg69558
либо
Код:
#include <WinAPIGdi.au3>
_WinAPI_DwmEnableComposition ( False )

в восьмерке и десятке этой службы нет. насколько я знаю
 
Автор
Danzo

Danzo

Новичок
Сообщения
18
Репутация
0
joiner сказал(а):
Код:
#include <WinAPIGdi.au3>
_WinAPI_DwmEnableComposition ( False )
Спасибо. Вот только отключается пока работает скрипт. Можно чтобы после завершения работы скрипта композиция не включалась обратно?
 
A

Alofa

Гость
Danzo сказал(а):
Можно чтобы после завершения работы скрипта композиция не включалась обратно?
Вы пройдите по ссылке которую дал вам joiner и обретете внутренний покой.
 
Автор
Danzo

Danzo

Новичок
Сообщения
18
Репутация
0
Alofa сказал(а):
Вы пройдите по ссылке которую дал вам joiner и обретете внутренний покой :smile:
Там отключение службы. Мне нужно без отключения службы. Это я в первом посте темы указал еще.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Danzo
без отключения службы - никак
или скрипт в процессе. чем не нравится?
хотя, в том или ином случае нужен будет запущенный скрипт. чтобы отключить, а потом, когда нужно, включить
 
Автор
Danzo

Danzo

Новичок
Сообщения
18
Репутация
0
joiner
Средствами windows отключается же. Должен быть какой то способ думаю.
А не нравится тем что не совсем тру выходит как-то.
Кстати все оказалось куда проще. Отключение композиции не работает для 64битных приложений, поэтому пришлось придумывать велосипед.
Выход такой:
Запускаем скрипт скомпилированный в 32битной редакции, в котором во вкладке совместимость проставлена галочка отключения композиции. Скрипт в свою очередь запускает 64битное приложение и ждет закрытия процесса. После завершает свою работу. Композиция включается обратно.
Код:
#NoTrayIcon
$config = @ScriptDir & "\au-config.ini"
$processrun = IniRead($config, "Config", "processrun", "null.exe")
$processwait = IniRead($config, "Config", "processwait", "null.exe")
Run($processrun)
ProcessWait($processwait)
ProcessWaitClose($processwait)

Нужно это было для запуска требовательных игр. Т.к. у игр частенько бывают лаунчеры(отдельный exe файл) прописал 2 переменные для процессов.
 
A

Alofa

Гость
Danzo сказал(а):
... Отключение композиции не работает для 64битных приложений
Да ну ;)
Дак мы все-таки здесь обсуждаем отключение композиции для конкретного окна или "Отключение\включение Windows Aero"?

Так подойдет?
Код:
#RequireAdmin
#include <WinAPITheme.au3>

Run('"C:\Program Files\Windows Media Player\wmplayer.exe"')
$hWnd = WinWait('[CLASS:WMPlayerApp]')

MsgBox(262144, Default, _WinAPI_SetWindowTheme($hWnd, '', ''))



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

Danzo сказал(а):
В принципе вы сделали то, что и предлогал вам joiner.
joiner сказал(а):
... или скрипт в процессе. чем не нравится?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Danzo [?]
Средствами windows отключается же.
Ну а кто сказал, что отключая через систему мы не отключаем службу?
Во всяком случае - ставим ее на паузу. в этом критичного ничего нет, служба отвечает за визуализацию.
в остальном работа системы не нарушается.
скрипту все равно придется висеть в процессах и ждать завершения работы игры(или другой проги). потом запустит службу. нагрузки на память никакой.
было что то похожее. игра от мелкомягких не хотела запускаться. лицензия, все как положено, а вот системная дата ей не нравилась. мол , кончилась лицензия. скрипт из нескольких строк. устанавливает нужную дату, запускает игру, ждет завершения ее работы, устанавливает дату обратно.
была какая то утилита, от известной компании. для геймеров. запускаешь ее, она выгружает все не критичные процессы. можно играть. потом даешь ей отбой, она запускает эти процессы заново.
и это официальная программа. я пользовался ей на ХР когда хотел поиграть.
так что не смущайся :smile:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Danzo [?]
И судя по диспетчеру служб служба не останавливается а продолжает работать.

joiner [?]
отключая через систему мы не отключаем службу?Во всяком случае - ставим ее на паузу

так или иначе - она перестает работать в обычном режиме
тут момент в другом - потом тебе ее опять нужно запустить(службу, аэро)
значит все равно нужен код, который будет висеть в фоне
не хочешь отключать, используй функцию _WinAPI_DwmEnableComposition
а вообще мне не понятно - почему нельзя отключать службу? есть ли серьезная причина ?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Danzo
Нужно это было для запуска требовательных игр
А вы не пробовали в свойствах exe-файла (игры или лаунчера) на вкладке "Совместимость" включить опцию "Отключить композицию рабочего стола"?
 
Автор
Danzo

Danzo

Новичок
Сообщения
18
Репутация
0
InnI
Для 64битных приложений не работает
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Danzo
Для 64битных приложений не работает
Да, действительно, опции заблокированы :( Хотя функция _WinAPI_DwmEnableComposition() работает и в скриптах, скомпилированных под x64 :scratch:

чтобы после завершения работы скрипта композиция не включалась обратно
Можно запускать программу непосредственно из скрипта и ждать её завершения. При завершении программы завершится и скрипт и композиция включится
Код:
#include <WinAPIGdi.au3>
_WinAPI_DwmEnableComposition(False)
RunWait("notepad.exe")
 
Верх