如何在Windows 7中快速启用和禁用Aero?


8

我和同事分享了很多屏幕。在共享期间,建议关闭Aero,因为它会生成更多图形以通过网络发送并导致屏幕共享延迟。有些屏幕共享应用程序实际上是为您执行此操作,而有些则不是。

我正在寻找一种在Windows 7上打开/关闭Aero的快捷方便的方法。最终,如果我可以将它绑定到热键,那将是最好的,但任何小部件/托盘图标或桌面快捷方式都可以。


当您打开屏幕共享时,您使用哪种软件不能执行此操作? :/我想不出任何现在不支持它的主流。
Shinrai

Answers:


10

使用以下内容创建批处理文件:

@echo off
sc interrogate uxsms | find "1062"
if %errorlevel%==0 goto :sc_start
sc stop uxsms
exit

:sc_start
sc start uxsms
exit

执行它将交替打开和关闭Aero。您可以将它放在任何您喜欢的地方。 AFAIK它不需要以管理员身份执行。


1
这似乎需要在Windows 7上的管理模式。无论如何,这是非常好的。
Frank V

3

你可以试试:

c:\> sc stop uxsms

c:\> sc start uxsms

0

停,这项服务太多了。我强烈建议我们使用本机API Windows。

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"
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.