Utilisez VB pour contrôler entièrement les icônes de votre bureau. Vous en avez assez de la disposition des icônes du bureau dans Windows et souhaitez organiser les icônes selon vos propres idées ? Voulez-vous modifier l'arrière-plan du texte de l'icône du bureau sans provoquer l'apparition de blocs de couleur laids sous le texte de l'icône ? Ici, je vais vous présenter comment changer complètement les icônes du bureau via VB.
En fait, le bureau et la barre des tâches sous Windows sont tous des objets fenêtre. Nous pouvons utiliser les fonctions API Windows FindWindow et FindWindowEx pour obtenir leurs handles, puis appeler d'autres fonctions API correspondantes pour les contrôler. La fenêtre dans laquelle l'icône du bureau est placée est un objet ListView. Utilisez la fonction SendMessage pour envoyer le message correspondant à la fenêtre, et l'icône peut être modifiée. Ce qui suit est la mise en œuvre spécifique du programme.
Commencez par créer un nouveau projet dans VB, ajoutez trois contrôles CommandButton à Form1, puis ajoutez le code suivant à la fenêtre de code de Form1 :
Option Explicit
Type privé POINTAPI x Aussi longtemps, y Aussi longtemps
Type de fin
Fonction de déclaration privée FindWindow Lib user32 Alias FindWindowA _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Fonction de déclaration privée FindWindowEx Lib user32 Alias FindWindowExA _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long
Fonction de déclaration privée UpdateWindow Lib user32 (ByVal hwnd As Long) As Long
Fonction de déclaration privée SendMessage Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) _ As Long
Fonction de déclaration privée SendMessageP Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _ As Long
Fonction de déclaration privée GetSysColor Lib user32 (ByVal nIndex As Long) As Long
Fonction de déclaration privée 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'La fonction RestoreColor restaure la couleur et l'arrière-plan par défaut du texte de l'icône
Sous-RestoreColor()
Atténuer la couleur aussi longtemps
lCouleur = GetSysColor(COLOR_DESKTOP)
SetSysColors 1, COLOR_DESKTOP, lColor
Fin du sous-marin
Sub SetIconText (clFore, clBack As Long, bTrans As Boolean)
Dim hWindow aussi longtemps
Dim lItemCount As Long 'Trouver la fenêtre où le graphique de bureau est placé en trois étapes
hWindow = FindWindow (Progman, gestionnaire de programme)
hFenêtre = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hFenêtre = FindWindowEx(hFenêtre, 0, SysListView32, )
Si bTrans Alors 'Fond transparent
EnvoyerMessage hWindow, LVM_SETTEXTBKCOLOR, 0, &HFFFFFFFF
Sinon 'Arrière-plan non transparent
SendMessage hWindow, LVM_SETTEXTBKCOLOR, 0, clRetour
Fin si
'Définir la couleur du texte de l'icône
SendMessage hWindow, LVM_SETTEXTCOLOR, 0, clFore 'Redessiner toutes les icônes
lItemCount = SendMessage (hWindow, LVM_GETITEMCOUNT, 0, 0)
SendMessage hWindow, LVM_REDRAWITEMS, 0, lItemCount - 1
'Fenêtre de mise à jour
UpdateWindow hWindowEnd SubSub ArrangeDesktopIcon (iWidth As Integer, iHeight As Integer)
Dim hWindow As Long Dim i1, i2, i, iCount As Integer
Dim po Comme POINTAPI
'Trouver la fenêtre où est placé le graphique du bureau en trois étapes
hWindow = FindWindow (Progman, gestionnaire de programme)
hFenêtre = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hFenêtre = FindWindowEx(hFenêtre, 0, SysListView32, )
i1 = 20 : i2 = 20
iCount = SendMessage (hWindow, LVM_GETITEMCOUNT, 0, 0)
Pour i = 0 Pour iCount - 1
po.x = i1 : po.y = i2
'Envoyer un message LVM_SETITEMPOSITION pour organiser les icônes
Appelez SendMessage(hWindow, LVM_SETITEMPOSITION, i, i2 * 65536 + i1)
i1 = i1 + iLargeur
Si i1 > ((Screen.Width / 15) - 32) Alors
je1 = 20
i2 = i2 + iHauteur
Fin si
Ensuite, je
SendMessage hWindow, LVM_REDRAWITEMS, 0, iCount-1
'Fenêtre de mise à jour
Mettre à jour la fenêtre hFenêtre
Fin du sous-marin
Sous-commande privé1_Click()
'Définissez la couleur du texte de l'icône sur bleu, la couleur d'arrière-plan sur noir et l'arrière-plan sur transparent.
SetIconText vbBlue, vbBlack, Vrai
Fin
SubPrivate Sous Command2_Click()
Restaurer la couleur
Fin du sous-marin
Sous-commande privé3_Click()
'Organiser les icônes par unités de 100 x 100 pixels
OrganiserDesktopIcon 100, 100
Fin du sous-marin
Sous-formulaire privé_Load()
Command1.Caption = Définir l'arrière-plan du texte
Command2.Caption = Restaurer l'arrière-plan du texte
Command3.Caption = Organiser les icônes du bureau
Fin du sous-marin
Exécutez le programme et cliquez sur Commande1. Vous pouvez voir que l'arrière-plan du texte de l'icône du bureau devient bleu. Si vous définissez une image du bureau, vous pouvez également voir que l'arrière-plan du texte devient transparent au lieu d'un bloc de couleur laid ci-dessous. pour restaurer les paramètres par défaut de Windows. Cliquez sur Command3 pour organiser les icônes de votre bureau horizontalement, mais uniquement si la propriété de disposition automatique des icônes du bureau est définie sur False. Le programme ci-dessus s'exécute avec succès sous VB6, Windows98 et Windows2000.