O seguinte código foi testado em ambiente corporativo com um rígido controle de ações no terminal pelo usuário, e o procedimento funcionou perfeitamente. Adaptei parte do código com uma API, facilitando localizar a imagem antes de prosseguir, não sendo necessário inserir o caminho do arquivo diretamente no código:
O código para alteração do plano de fundo
Public Declare PtrSafe Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" ( _
ByVal uAction As Long, _
ByVal uParam As Long, _
ByVal lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Public Const SPI_SETDESKWALLPAPER = 20
Sub AlterarPlanoFundo()
Dim nRetorno As Long
Dim nImagem As String
nImagem = OpenFileDialog 'FAZ A CHAMADA A FUNÇÃO PARA LOCALIZAR O ARQUIVO DE IMAGEM
If nImagem = "" Then Exit Sub 'CASO NÃO SEJA SELECIONADA NENHUMA IMAGEM, INTERROMPE A EXECUÇÃO
nRetorno = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nImagem, 0)
'VERIFICA SE FOI ALTERADO OU NÃO O PLANO DE FUNDO
If nRetorno = 1 Then
MsgBox "A imagem do plano de fundo foi alterado corretamente!!!", vbInformation, "Selmo Rodrigues"
Else
MsgBox "Algo inesperado aconteceu, verifique o arquivo e tente novamente!!!", vbCritical, "Selmo Rodrigues"
End If
End Sub
A seguinte API eu copie do site do Tomas Vasquez
Public Function OpenFileDialog() As String
Dim Filter As String, Title As String
Dim FilterIndex As Integer
Dim Filename As Variant
' Define o filtro de procura dos arquivos
Filter = "Arquivos de imagens (*.jpg),*.jpg,"
' O filtro padrão é *.*
FilterIndex = 3
' Define o Título (Caption) da Tela
Title = "Selecione um arquivo"
' Define o disco de procura
ChDrive ("C")
ChDir ("C:")
With Application
' Abre a caixa de diálogo para seleção do arquivo com os parâmetros
Filename = .GetOpenFilename(Filter, FilterIndex, Title)
' Reseta o Path
ChDrive (Left(.DefaultFilePath, 1))
ChDir (.DefaultFilePath)
End With
' Abandona ao Cancelar
If Filename = False Then
MsgBox "Nenhum arquivo foi selecionado."
Exit Function
End If
' Retorna o caminho do arquivo
OpenFileDialog = Filename
End Function
"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein
Postado : 27/12/2016 4:38 am