Verwenden Sie VB, um Ihre Desktop-Symbole vollständig zu steuern. Sind Sie die Anordnung der Desktop-Symbole in Windows leid und möchten die Symbole nach Ihren eigenen Vorstellungen anordnen? Möchten Sie den Hintergrund des Desktop-Symboltexts ändern, ohne dass hässliche Farbblöcke unter dem Symboltext erscheinen? Hier möchte ich vorstellen, wie man die Desktopsymbole über VB vollständig ändert.
Tatsächlich sind der Desktop und die Taskleiste unter Windows alle Fensterobjekte. Wir können die Windows-API-Funktionen FindWindow und FindWindowEx verwenden, um ihre Handles abzurufen, und dann andere entsprechende API-Funktionen aufrufen, um sie zu steuern. Das Fenster, in dem das Desktopsymbol platziert wird, ist ein ListView-Objekt. Verwenden Sie die SendMessage-Funktion, um die entsprechende Nachricht an das Fenster zu senden, und das Symbol kann geändert werden. Das Folgende ist die spezifische Programmimplementierung.
Erstellen Sie zunächst ein neues Projekt in VB, fügen Sie drei CommandButton-Steuerelemente zu Form1 hinzu und fügen Sie dann den folgenden Code zum Codefenster von Form1 hinzu:
Option Explicit
Privater Typ POINTAPI x As Long, y As Long
Endtyp
Private Deklarationsfunktion FindWindow Lib user32 Alias FindWindowA _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Deklarationsfunktion FindWindowEx Lib user32 Alias FindWindowExA _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long
Private Deklarationsfunktion UpdateWindow Lib user32 (ByVal hwnd As Long) As Long
Private Deklarationsfunktion SendMessage Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) _ As Long
Private Deklarationsfunktion SendMessageP Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _ As Long
Private Deklarationsfunktion GetSysColor Lib user32 (ByVal nIndex As Long) As Long
Private Deklarationsfunktion SetSysColors Lib user32 (ByVal nChanges As Long, _ lpSysColor As Long, lpColorValues As Long) As Long
Const LVM_FIRST = &H1000
Const LVM_GETITEMCOUNT = LVM_FIRST + 4
Const LVM_SETTEXTCOLOR = LVM_FIRST + 36
Const LVM_REDRAWITEMS = LVM_FIRST + 21
Const LVM_SETTEXTBKCOLOR = LVM_FIRST + 38
Const LVM_SETITEMPOSITION = LVM_FIRST + 15
Const COLOR_DESKTOP = 1'RestoreColor-Funktion stellt die Standardfarbe und den Hintergrund des Symboltexts wieder her
SubRestoreColor()
Dimmen Sie lFarbe solange
lColor = GetSysColor(COLOR_DESKTOP)
SetSysColors 1, COLOR_DESKTOP, lColor
Sub beenden
Sub SetIconText(clFore, clBack As Long, bTrans As Boolean)
Fenster solange dimmen
Dim lItemCount As Long 'Finden Sie in drei Schritten das Fenster, in dem das Desktop-Diagramm platziert wird
hWindow = FindWindow(Progman, Programmmanager)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
Wenn bTrans, dann 'Transparenter Hintergrund
SendMessage hWindow, LVM_SETTEXTBKCOLOR, 0, &HFFFFFFFF
Sonst 'Nicht transparenter Hintergrund
SendMessage hWindow, LVM_SETTEXTBKCOLOR, 0, clBack
Ende wenn
'Legen Sie die Farbe des Symboltextes fest
SendMessage hWindow, LVM_SETTEXTCOLOR, 0, clFore 'Alle Symbole neu zeichnen
lItemCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
SendMessage hWindow, LVM_REDRAWITEMS, 0, lItemCount - 1
'Update-Fenster
UpdateWindow hWindowEnd SubSub ArrangeDesktopIcon(iWidth As Integer, iHeight As Integer)
Dim hWindow As Long Dim i1, i2, i, iCount As Integer
Dim po As POINTAPI
'Finden Sie in drei Schritten das Fenster, in dem das Desktop-Diagramm platziert wird
hWindow = FindWindow(Progman, Programmmanager)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
i1 = 20: i2 = 20
iCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
Für i = 0 bis iCount - 1
po.x = i1: po.y = i2
'LVM_SETITEMPOSITION-Nachricht senden, um Symbole anzuordnen
Call SendMessage(hWindow, LVM_SETITEMPOSITION, i, i2 * 65536 + i1)
i1 = i1 + iWidth
Wenn i1 > ((Screen.Width / 15) - 32) Dann
i1 = 20
i2 = i2 + iHeight
Ende wenn
Als nächstes i
SendMessage hWindow, LVM_REDRAWITEMS, 0, iCount – 1
'Update-Fenster
UpdateWindow hWindow
Sub beenden
Privater Unterbefehl1_Click()
„Stellen Sie die Textfarbe des Symbols auf Blau, die Hintergrundfarbe auf Schwarz und den Hintergrund auf Transparent ein.“
SetIconText vbBlue, vbBlack, True
Ende
SubPrivate Sub Command2_Click()
Farbe wiederherstellen
Sub beenden
Privater Unterbefehl3_Click()
'Ordnen Sie die Symbole in Einheiten von 100 x 100 Pixeln an
ArrangeDesktopIcon 100, 100
Sub beenden
Private Sub Form_Load()
Command1.Caption = Texthintergrund festlegen
Command2.Caption = Texthintergrund wiederherstellen
Command3.Caption = Desktopsymbole anordnen
Sub beenden
Führen Sie das Programm aus und klicken Sie auf Befehl1. Wenn Sie ein Desktop-Bild festlegen, wird der Texthintergrund transparent und nicht auf Befehl2 Um die Standardeinstellungen von Windows wiederherzustellen, klicken Sie auf Befehl3, um Ihre Desktopsymbole horizontal anzuordnen, jedoch nur, wenn die automatische Anordnungseigenschaft der Desktopsymbole auf „Falsch“ eingestellt ist. Das obige Programm läuft erfolgreich unter VB6, Windows98 und Windows2000.