2011-04-15 21 views
9

Hola Necesito habilitar/deshabilitar Cleartype (o "Ajustar la apariencia y el rendimiento de Windows> Suavizar bordes de fuentes de pantalla") mediante cmd (o cualquier script como VBS/JS) o desde el registro sin cerrar sesión o reiniciar Windows.Habilitar/deshabilitar ClearType en Windows7

Puede ser que es posible habilitar ClearType sólo para una aplicación

Gracias

Respuesta

2

de ficheros hacen con extensión. reg este es el registro de los archivos

Disable_Smooth_edges_of_screen_fonts

[HKEY_CURRENT_USER\Control Panel\Desktop] 
"FontSmoothing"="0" 

Enable_Smooth_edges_of_screen_fonts

[HKEY_CURRENT_USER\Control Panel\Desktop] 
"FontSmoothing"="2" 

también se puede hacer esto en relación cmd aquí es la sintaxis para el comando

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f] 

usted debe cerrar la sesión de tener efecto que ha cambiado

2

Los siguientes obras para mí: Panel de control> Sistema> configuración avanzada del sistema> Adv ANZAD> (Performance) Configuración> Efectos visuales> Seleccione 'Custom' y desactive 'Suavizar los bordes de las fuentes de pantalla'

1

mirada en la materia se describe en el siguiente enlace:

http://www.vbforums.com/showthread.php?t=491091

Llamar a la API podría desencadenar la actualización de todo el sistema para que no tenga que cerrar sesión/iniciar sesión para ver el cambio.

Por supuesto, esto no se limita a vb.net.

10

La forma moderna de scripting bajo Windows es usar PowerShell. La siguiente secuencia de comandos requiere la versión 2.0, que está disponible en Windows XP SP3:

#requires -version 2.0 
param([bool]$enable) 

$signature = @' 
[DllImport("user32.dll")] 
public static extern bool SystemParametersInfo(
    uint uiAction, 
    uint uiParam, 
    uint pvParam, 
    uint fWinIni); 
'@ 

$SPI_SETFONTSMOOTHING  = 0x004B 
$SPI_SETFONTSMOOTHINGTYPE = 0x200B 
$SPIF_UPDATEINIFILE  = 0x1 
$SPIF_SENDCHANGE   = 0x2 
$FE_FONTSMOOTHINGCLEARTYPE = 0x2 

$winapi = Add-Type -MemberDefinition $signature -Name WinAPI -PassThru 

if ($enable) 
{ 
    [void]$winapi::SystemParametersInfo($SPI_SETFONTSMOOTHING, 1, 0, $SPIF_UPDATEINIFILE -bor $SPIF_SENDCHANGE) 
    [void]$winapi::SystemParametersInfo($SPI_SETFONTSMOOTHINGTYPE, 0, $FE_FONTSMOOTHINGCLEARTYPE, $SPIF_UPDATEINIFILE -bor $SPIF_SENDCHANGE) 
} 
else 
{ 
    [void]$winapi::SystemParametersInfo($SPI_SETFONTSMOOTHING, 0, 0, $SPIF_UPDATEINIFILE -bor $SPIF_SENDCHANGE) 
} 

Si, por alguna razón, no se puede utilizar PowerShell, necesitará DynamicWrapperX con el fin de ejecutar las funciones WinAPI en WSH. Primero tendrá que registrarlo en la máquina objetivo, entonces se podría utilizar este VBScript:

Set WinAPI = CreateObject("DynamicWrapperX") 
WinAPI.Register "user32.dll", "SystemParametersInfo", "i=uuuu" 

Const SPI_SETFONTSMOOTHING  = &H004B 
Const SPI_SETFONTSMOOTHINGTYPE = &H200B 
Const SPIF_UPDATEINIFILE  = &H1 
Const SPIF_SENDCHANGE   = &H2 
Const FE_FONTSMOOTHINGCLEARTYPE = &H2 

If WScript.Arguments(0) Then 
    WinAPI.SystemParametersInfo SPI_SETFONTSMOOTHING, 1, 0, SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE 
    WinAPI.SystemParametersInfo SPI_SETFONTSMOOTHINGTYPE, 0, FE_FONTSMOOTHINGCLEARTYPE, SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE 
Else 
    WinAPI.SystemParametersInfo SPI_SETFONTSMOOTHING, 0, 0, SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE 
End If 

Ambos guiones aceptan un parámetro, 0 significa ClearType desactivar, 1 medios permiten. No se necesita reiniciar.

versión
+0

copio esto y basta con insertar y pulse enter o tengo que guardarlo en algún archivo de texto PowerShell script ejecutable y haga doble clic? – user1306322

+0

@ user1306322, copia la secuencia de comandos y la guarda como archivo '.ps1'. Luego puede ejecutarlo como 'powershell 'y' C: \ myscript.ps1 '1" 'desde la línea de comandos. Sin embargo, es posible ajustar el registro del sistema para que pueda hacer doble clic en el archivo. – Joulukuusi

+0

Bien, ahora obtengo 'File C: \ asd.ps1 no se puede cargar porque la ejecución de scripts está deshabilitada en este sistema. Error, que parece ser común. Supongo que tendré que ir con uno de los primeros resultados de google para arreglar esto. – user1306322

3

Python:

# make sure you install pywin32 
# from http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/ 
import win32con 
import win32gui 

win32gui.SystemParametersInfo(win32con.SPI_SETFONTSMOOTHING, True, 0) # enable only 
win32gui.SystemParametersInfo(win32con.SPI_SETFONTSMOOTHINGTYPE, 
     win32con.FE_FONTSMOOTHINGCLEARTYPE, 
     win32con.SPIF_UPDATEINIFILE | win32con.SPIF_SENDCHANGE) 
+0

Esta solución funciona. Está bien también :-) – smartsl

3

sólo para añadir más opciones, tengo la versión C#, añadiendo GetFontSmoothing a ella.

[DllImport("user32.dll", SetLastError = true)] 
static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref int pvParam, uint fWinIni); 

const uint SPI_GETFONTSMOOTHING = 74; 
const uint SPI_SETFONTSMOOTHING = 75; 
const uint SPI_UPDATEINI = 0x1; 
const UInt32 SPIF_UPDATEINIFILE = 0x1; 

private Boolean GetFontSmoothing() 
{ 
    bool iResult; 
    int pv = 0; 
    /* Call to systemparametersinfo to get the font smoothing value. */ 
    iResult = SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, ref pv, 0); 
    if (pv > 0) 
    { 
     //pv > 0 means font smoothing is on. 
     return true; 
    } 
    else 
    { 
     //pv == 0 means font smoothing is off. 
     return false; 
    } 
} 

private void DisableFontSmoothing() 
{ 
    bool iResult; 
    int pv = 0; 
    /* Call to systemparametersinfo to set the font smoothing value. */ 
    iResult = SystemParametersInfo(SPI_SETFONTSMOOTHING, 0, ref pv, SPIF_UPDATEINIFILE); 
    Console.WriteLine("Disabled: {0}", iResult); 
} 

private void EnableFontSmoothing() 
{ 
    bool iResult; 
    int pv = 0; 
    /* Call to systemparametersinfo to set the font smoothing value. */ 
    iResult = SystemParametersInfo(SPI_SETFONTSMOOTHING, 1, ref pv, SPIF_UPDATEINIFILE); 
    Console.WriteLine("Enabled: {0}", iResult); 
} 
Cuestiones relacionadas