Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0449: Desktop-Style verändern

 von 

Beschreibung 

Der Desktop mit den Icons ist eigentlich auch nur eine ListView, dessen Ansichtsmodus(Symbole, Liste, Detailansicht) per Api problemlos verändern werden kann. Über den praktischen Nutzen kann man hier natürlich nur rätseln ;-)

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

FindWindowA (FindWindow), GetWindow, GetWindowLongA (GetWindowLong), SendMessageA (SendMessage)

Download:

Download des Beispielprojektes [2,31 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Modul "Module1" alias Module1.bas ---------
Option Explicit

Private Declare Function GetWindowLong Lib "user32" _
                         Alias "GetWindowLongA" ( _
                         ByVal hWnd As Long, _
                         ByVal nIndex As Long) As Long
                         
Private Declare Function SendMessage Lib "user32" _
                         Alias "SendMessageA" ( _
                         ByVal hWnd As Long, _
                         ByVal wMsg As Long, _
                         ByVal wParam As Long, _
                         lParam As Any) As Long
                         
Private Declare Function FindWindow Lib "user32" _
                         Alias "FindWindowA" ( _
                         ByVal lpClassName As String, _
                         ByVal lpWindowName As String) As Long
                         
Private Declare Function GetWindow Lib "user32" ( _
                         ByVal hWnd As Long, _
                         ByVal wCmd As Long) As Long

Public Const VM_ICON = &H0
Public Const VM_REPORT = &H1
Public Const VM_SMALLICON = &H2
Public Const VM_LIST = &H3

Private Const GW_CHILD = 5
Private Const GWL_STYLE = (-16)
Private Const LVS_TYPEMASK = &H3
Private Const WM_STYLECHANGED = &H7D

Private Type StyleBits
    dwOld As Long
    dwNew As Long
End Type

Public Sub SetDesktopStyle(ByVal Flag As Long)
    
    Dim hWnd As Long
    Dim sb As StyleBits
    
    hWnd = FindWindow("Progman", "Program Manager")
    hWnd = GetWindow(hWnd, GW_CHILD)
    hWnd = GetWindow(hWnd, GW_CHILD)
    
    With sb
        .dwOld = GetWindowLong(hWnd, GWL_STYLE)
        .dwNew = .dwOld
        .dwNew = .dwNew And Not LVS_TYPEMASK
        .dwNew = .dwNew Or Flag
    End With
    
    SendMessage hWnd, WM_STYLECHANGED, GWL_STYLE, sb
    
End Sub

'---------- Ende Modul "Module1" alias Module1.bas ----------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1" (Index von 0 bis 3)
Option Explicit

Private Sub Command1_Click(Index As Integer)
    
    Dim lngFlag As Long
    
    Select Case Index
        Case 0
            lngFlag = VM_ICON
        Case 1
            lngFlag = VM_SMALLICON
        Case 2
            lngFlag = VM_LIST
        Case 3
            lngFlag = VM_REPORT
    End Select
    
    SetDesktopStyle lngFlag
    
End Sub

'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von UnknownLifeform am 11.11.2007 um 14:36

Tja bei mit funktionieren nur die Ansichen 'Große Symbole' und 'Kleine symbole' Bei den anderen Ansichten verschwinden die Symbole.

Kommentar von Oliver am 25.05.2005 um 14:17

Ja hallo, wollt ma fragen:
sobald man den Desktop Aktualisiert ist alles wie vorher, also so wie mans kennt.
Kann man das nicht ändern???

Kommentar von Nase am 04.06.2002 um 10:57

Hi,
klappt wunderbar!
Aber kann man auch die Spaltenbreite der Detailansicht anpassen????
Mfg
Nase