Imaginsystems


Tecniche di Programmazione - Codici Sorgenti - News Informatiche
Archivio Posts
Anno 2014

Anno 2013

Anno 2012
Statistiche
  • Views Home Page: 71.582
  • Views Posts: 542.256
  • Views Gallerie: 0
  • n° Posts: 210
  • n° Commenti: 224

VB.NET - PROGRAMMA CHE MODIFICA L'IMMAGINE DESKTOP OGNI ORA DA CODICE

VB.NET - PROGRAMMA CHE MODIFICA L'IMMAGINE DESKTOP DA CODICE 

Oggi voglio mettere a disposizione il sorgente di un piccolo programmino che passata una cartella contenente delle immagini fa cambiare lo sfondo del desktop ogni ora grazie ad un timer. Sfruttiamo la funzione messa a disposizione da Sandro Bizioli ecco il link del suo Blogs

Vi ricordo che alla fine del Post / Codice troverete il link dove poter scaricare i Codici Sorgenti del programma funzionante.


CODICE VISUAL STUDIO 2010 - VISUAL BASIC .NET - VB.NET:

Public Class Form1
    '
    ' Utilizzata per modificare il wallpaper di Windows
    '
    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
    Const SPI_SETDESKWALLPAPER = 20
    Const SPIF_UPDATEINIFILE = &H1

    Public ArrayFilter() As String = {".gif", ".jpg", ".png", ".bmp"}
    Dim ElencoImgFile As New ArrayList
    Dim NotifyIcon As New System.Windows.Forms.NotifyIcon

    '
    ' Enumeratore delle impostazioni
    '
    Private Enum DesktopStile As Integer
        Replace = 0 'Adatta alla grandezza dello schermo
        Tiled = 1 'Replica/Affianca
        Centred = 2 'Centrale
        Streched = 4 'Estesa
        None = 5
    End Enum
  
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Percorso del file completo
        'Dim FileImgPatch As String = "C:\Documents and Settings\All Users\Documenti\Immagini\Immagini campione\Tramonto.jpg"

        'Inserisco il percorso della cartella Immagini
        Dim DirImgPatch As String = "C:\Documents and Settings\All Users\Documenti\Immagini\Immagini campione\"

        'Carico elenco di file in base al filtro di Immagini impostato precedentemente
        ElencoImgFile = CaricaArrayFile(DirImgPatch)

        'Carico l'oggetto ContexMenuStrip
        Dim Timer As New System.Windows.Forms.Timer
        AddHandler Timer.Tick, AddressOf Tmr_Tick

        'Gestione del cambio immagine ogni Ora
        'Timer.Interval = 60000 'Ogni 60 secondi cambia immagine il Desktop
        Timer.Interval = 216000000 'Inizia contare, ogni ora cambia. (60 secondi = 60000) ( 60 minuti = 3600000) 
        Timer.Enabled = True 'Attivo il contatore

        Me.Opacity = 0 'Per renderlo invisibile
        Me.ShowInTaskbar = False 'Per non far vederlo nella barra

        'Carico l'oggetto ContexMenuStrip
        Dim MenuTendina As New System.Windows.Forms.ContextMenuStrip
        AddHandler MenuTendina.ItemClicked, AddressOf cms_ItemClicked

        'Carico in Runtime elenco del Menu a Tendina
        MenuTendina.Items.Add("&Info").Name = "mnuInfo"
        MenuTendina.Items.Add("-").Name = "mnuSpazio"
        MenuTendina.Items.Add("&Chiudi").Name = "mnuEsci"

        'Carico le icone al menu Converto una icona in un immagine .ToBitmap
        MenuTendina.Items(0).Image = New Icon(Application.StartupPath & "\122.ico").ToBitmap 'Punta all'icona Info ?
        MenuTendina.Items(2).Image = New Icon(Application.StartupPath & "\104.ico").ToBitmap 'Punta all'icona Chiudi X

        NotifyIcon.BalloonTipIcon = ToolTipIcon.Info
        NotifyIcon.BalloonTipTitle = "Avviato il programma :"
        NotifyIcon.Text = "Random Image Desktop"
        NotifyIcon.Icon = New Icon(System.Windows.Forms.Application.StartupPath & "\117.ico")
        NotifyIcon.Visible = True
        NotifyIcon.ContextMenuStrip = MenuTendina


    End Sub


    Private Sub cms_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs)
        'MessageBox.Show(e.ClickedItem.Text)
        'MessageBox.Show(e.ClickedItem.Name)

        Select Case e.ClickedItem.Name

            Case "mnuInfo"
            
  MsgBox("Autore : ImaginSystems " & vbNewLine & vbNewLine _
                      & "Funzione: Il programma cambia in maniera Random lo sfondo del Desktop" & vbNewLine & vbNewLine _
                      & "Web: http://blogs.dotnethell.it/imaginsystems/", vbInformation, "AIUTO by ImaginSystems")
        
            Case "mnuEsci"
                NotifyIcon.Visible = False
                End
        End Select
    End Sub


    Private Sub CambiaImg(ByVal FileImgPatch As String)

        Dim img As Image = System.Drawing.Image.FromFile(FileImgPatch)
        WallpaperChange(img, , DesktopStile.Streched)

    End Sub

    Private Function CaricaArrayFile(ByVal Dir As String) As ArrayList
        Dim ArrayFile As New ArrayList
        ' Processa la lista dei files trovati nella directory passata
        Dim fileEntries As String() = System.IO.Directory.GetFiles(Dir)
        For Each fileName As String In fileEntries
            For i As Integer = 0 To ArrayFilter.Length - 1
                If fileName.Contains(ArrayFilter(i).ToString) Then
                    ArrayFile.Add(fileName)
                End If
            Next
        Next
        Return ArrayFile
    End Function

    Private Sub WallpaperChange(Optional ByRef myImage As Image = Nothing, Optional ByVal fileName As String = "", Optional ByVal Stile As DesktopStile = DesktopStile.Replace)
        '***********************************************************************************
        'Func.: WallpaperChange (Mod SB-04/02/2008; Mod.: )
        'Desc.: Modifica lo sfondo del desktop di Windows
        '
        'Par. : [myImage] Oggetto System.Drawing.Image rappresentante la nuova immagine da impostare come sfondo
        ' [FileName] Stringa indicante il nome del file completo di percorso dell'immagine da impostare come sfondo '
        ' [Stile] Integer indicante il tipo di operazione da compiere. I valori sono associati all'enum DesktopStile
        'NB. : Se FileName è lasciato a blank o indica un percorso reale di un file , lo sfondo del desktop verrà rimosso.
        '***********************************************************************************
        Dim key As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
        Dim WallpaperStyle As Object = Nothing
        Dim TileWallpaper As Object = Nothing

        '
        '
        ' Se ho passato solo l'immagine prima la salvo e poi punto al nuovo file
        '
        If fileName = "" And myImage IsNot Nothing Then

            '
            ' Salvo l'immagine nella directory di windows
            '
            fileName = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData, "Desktop.bmp")
            myImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp)

        End If

        '
        ' Se ho scelto l'opzione di sostituzione dello stile corrente, prima lo leggo e poi lo applico
        '
        If Stile = DesktopStile.Replace Then
            WallpaperStyle = key.GetValue("WallpaperStyle")
            TileWallpaper = key.GetValue("TileWallpaper")
        End If

        '
        ' Se ho scelto uno stile specifico lo applico
        '
        Select Case Stile
            Case DesktopStile.Centred ' Al centro
                WallpaperStyle = "1"
                TileWallpaper = "0"
            Case DesktopStile.Streched ' Estesa
                WallpaperStyle = "2"
                TileWallpaper = "0"
            Case DesktopStile.Tiled 'Affiancata
                WallpaperStyle = "1"
                TileWallpaper = "1"
            Case DesktopStile.None 'Nessuno Vuoto
                fileName = ""
        End Select
        '
        ' Cambio lo sfondo del desktop
        '
        key.SetValue("WallpaperStyle", WallpaperStyle)
        key.SetValue("TileWallpaper", TileWallpaper)
        key.Close()

        SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, fileName, SPIF_UPDATEINIFILE) ' Imposta lo sfondo del desktop

    End Sub

    Private Sub Tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim NumeroRandom As New Random
        CambiaImg(ElencoImgFile(NumeroRandom.Next(0, ElencoImgFile.Count - 1)).ToString)
    End Sub


End Class

Potete scaricare il file d'esempio :

Password :  "ImaginSystem" 
Link File Download : Download RandomImgDesktopTimer
Categoria: VB.NET
mercoledì, 27 giu 2012 Ore. 12.57

Messaggi collegati


Ora e Data
Mappa
Blogs Amici
    Copyright © 2002-2007 - Blogs 2.0
    dotNetHell.it | Home Page Blogs
    ASP.NET 2.0 Windows 2003