![如何在Windows 7中快速启用和禁用Aero?](https://linux22.com/image/1256234/%E5%A6%82%E4%BD%95%E5%9C%A8Windows%207%E4%B8%AD%E5%BF%AB%E9%80%9F%E5%90%AF%E7%94%A8%E5%92%8C%E7%A6%81%E7%94%A8Aero%EF%BC%9F.png)
我经常与同事共享屏幕。共享期间,建议关闭 Aero,因为它会生成更多图形以通过网络发送,并导致屏幕共享延迟。有些屏幕共享应用程序实际上会为您执行此操作,而有些则不会。
我正在寻找一种快速方便的方法来打开/关闭 Windows 7 上的 Aero。最终,如果我可以将其绑定到热键,那将是最好的,但任何小部件/托盘图标或桌面快捷方式都可以。
答案1
创建一个包含以下内容的批处理文件:
@echo off
sc interrogate uxsms | find "1062"
if %errorlevel%==0 goto :sc_start
sc stop uxsms
exit
:sc_start
sc start uxsms
exit
执行它将交替打开或关闭 Aero。您可以将其放置在任何您喜欢的位置。据我所知,它不需要以管理员身份执行。
答案2
你可以试试:
c:\> sc stop uxsms
c:\> sc start uxsms
答案3
停下来,这个服务太多了。我强烈建议我们使用 Windows 原生 API。
PowerShell 中的代码示例:
# Definition des fonctions natives Windows permettant le test d'activation d'Aero et l'activation ou non d'Aero
$def = @"
[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern bool DwmIsCompositionEnabled();
[DllImport("dwmapi.dll", PreserveSig=false)]
public static extern int DwmEnableComposition(bool fEnable);
"@
# Chargement de la fonction native dans un namespace personnel
Add-Type -Namespace MaifCode -Name Aero -MemberDefinition $def
# Fonction qui check si Aero est desactive ou non
function Check-Is-Aero{
[CmdletBinding()]
param()
Write-Verbose "[$([DateTime]::Now)] ==> Test de la presence du mode Aero pour la session utilisateur $env:USERNAME"
if([MaifCode.Aero]::DwmIsCompositionEnabled()){
Write-Verbose "[$([DateTime]::Now)] ==> Aero actif pour la session utilisateur $env:USERNAME"
return $true
}
else{
Write-Verbose "[$([DateTime]::Now)] ==> Aero inactif pour la session utilisateur $env:USERNAME"
return $false
}
}
# Fonction qui test si Aero est actif et le desactive dans ce cas
function Disable-Aero{
[CmdletBinding()]
param()
# Test si aero actif
If(Check-Is-Aero) {
Write-Verbose "[$([DateTime]::Now)] ==> Tentative de desactivation du mode Aero pour la session utilisateur $env:USERNAME"
# Desactivation du mode aero
try{
$resultat = [MaifCode.Aero]::DwmEnableComposition($false)
}
catch [exception]
{
# Si erreur alors on sort et on affiche le message d'erreur
Write-Error "Erreur dans l'execution de la desactivation du mode Aero : $error"
exit -1
}
Write-Verbose "[$([DateTime]::Now)] ==> Desactivation du mode Aero pour la session utilisateur $env:USERNAME terminee"
}
else{
Write-Verbose "[$([DateTime]::Now)] ==> sortie du script sans action"
}
}