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
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
@ 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
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