Ferramentas de Usuário

Ferramentas de Site


dev_net:vb.net:alterar_wallpaper_sistema_operativo

Alterar o Wallpaper do Sistema Operativo

A alteração do wallpaper (ambiente de trabalho) do sistema operativo é sempre uma acção muito utilizada e que muitos aproveitam para criar pequenos aplicativos para o fazer (embora já existam várias ferramentas disponíveis).

A alteração do wallpaper pode-se fazer muito simplesmente através da API SystemParametersInfo. Um dos problemas que normalmente se vê em alguns códigos para alterar o wallpaper do computador, é a utilização de ficheiros *.jpg, *.png, etc, sem a conversão para um formato bmp (que o sistema aceita).

Fica um exemplo de como fazer esta alteração:

Exemplo

    ' Declaração da API que irá alterar o wallpaper
    Private Declare Function SystemParametersInfo Lib "user32" _
               Alias "SystemParametersInfoA" (ByVal uAction As Integer, ByVal uParam As Integer, _
               ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
 
    ' Definição das constantes
    Private Const SPI_SETDESKWALLPAPER = 20
    Private Const SPIF_UPDATEINIFILE = &H1
 
    ''' <summary>
    ''' Muda o wallpaper do computador
    ''' </summary>
    ''' <param name="imagePath">Endereço completo da imagem</param>
    ''' <remarks></remarks>
    Private Sub SetWallpaper(ByVal imagePath As String)
 
        ' Verifica se o ficheiro existe
        If Not IO.File.Exists(imagePath) Then
            Throw New Exception("O ficheiro indicado não existe!")
        End If
 
        Try
 
            Dim imgName As String
 
            ' Caso o ficheiro indicado não seja um *.bmp é necessário
            ' converter para tal, de modo a que este funcione
            If IO.Path.GetExtension(imagePath) <> ".bmp" Then
 
                ' Cria o ficheiro *.bmp
                imgName = IO.Path.ChangeExtension(imagePath, "bmp")
 
                ' Cria uma nova image e grava como *.bmp
                Using bm As Bitmap = Image.FromFile(imagePath)
                    bm.Save(imgName, Imaging.ImageFormat.Bmp)
                End Using 
 
            Else
                imgName = imagePath
            End If
 
 
            ' Define o novo wallpaper
            SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, imgName, SPIF_UPDATEINIFILE)
 
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
 
    End Sub

Para alterar o wallpaper é apenas necessário fazer:

     SetWallpaper("c:imagem.jpg")

Autoria

Este artigo foi inicialmente escrito por Jorge Paulino para o seu blog VBTuga - Visual Basic em Português.

dev_net/vb.net/alterar_wallpaper_sistema_operativo.txt · Última modificação em: 2018/05/14 21:37 (edição externa)