A continuación os explicamos paso a paso cómo crear una aplicación de consola MS-DOS (un comando, un ejecutable) al que se le pasa como parámetro una ruta y nombre de fichero de imagen y la establece como fondo de escritorio en nuestro equipo Windows. Usaremos para ello Microsoft Visual Studio .Net y como lenguaje C Sharp (C#). Esta aplicación también obtiene el fondo de pantalla actual (la ruta y nombre de fichero).
Requisitos para desarrollar la aplicación de consola
Necesitaremos un equipo con sistema operativo Windows, con Microsoft Framework .Net 4.0 o superior instalado. Necesitaremos también el IDE de desarrollo Microsoft Visual Studio .Net, en el siguiente artículo explicamos cómo descargarlo e instalarlo:
Desarrollar la aplicación con Visual Studio .Net y C# o C Sharp de cambio de fondo de escritorio
Abriremos el IDE de desarrollo Visual Studio .Net, elegiremos «File» – «New» – «Project»:
Elegiremos como lenguale «Visual C#» y en tipo de aplicación elegiremos «Console Application». Indicaremos un nombre para el proyecto en «Name», por ejemplo «CambiarFondoPantallaWindows» y pulsaremos «OK»:
El código fuente en C# de la aplicación completa será el siguiente, que podremos copiar y pegar en Visual Studio .Net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Win32; using System.Diagnostics; using System.Drawing; using System.IO; using System.Runtime.InteropServices; using System.Threading; namespace CambiarFondoPantallaWindows { class Program { [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni); private static readonly int MAX_PATH = 260; private static readonly int SPI_GETDESKWALLPAPER = 0x73; private static readonly int SPI_SETDESKWALLPAPER = 0x14; private static readonly int SPIF_UPDATEINIFILE = 0x01; private static readonly int SPIF_SENDWININICHANGE = 0x02; static string obtenerFondoPantallaActual() { string wallpaper = new string('\0', MAX_PATH); SystemParametersInfo(SPI_GETDESKWALLPAPER, (int)wallpaper.Length, wallpaper, 0); return wallpaper.Substring(0, wallpaper.IndexOf('\0')); } static void cambiarFondoPantalla(string filename) { SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filename, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); } static void Main(string[] args) { System.Console.WriteLine("El fondo de escritorio actual: " + obtenerFondoPantallaActual()); try { cambiarFondoPantalla(args[0]); } catch (IndexOutOfRangeException ex) { System.Console.WriteLine("Debe indicar la ruta y nombre de la imagen de fondo de escritorio."); } } } } |
Compilando la aplicación, pulsando en «Build» – «Build Solution»:
Nos dará como resultado un fichero .exe, que podremos ejecutar desde la línea de comandos, por ejemplo:
CambiarFondoPantalla.exe
Si no le pasamos el parámetro de ruta y nombre de fichero la aplicación nos devolverá algo así:
El fondo de escritorio actual: C:\Windows\web\wallpaper\Windows\img0.jpg
Debe indicar la ruta y nombre de la imagen de fondo de escritorio.
Indicando la ubicación del fondo de pantalla actual y advirtiendo de que para cambiarlo hay que pasarle como parámetro la imagen a cambiar.
Para cambiar la imagen de fondo habría que ejecutar algo así:
CambiarFondoPantalla.exe C:\fondos\fondo.jpg
Devolviendo:
El fondo de escritorio actual: C:\fondos\fondo.jpg