Utilice VB para controlar completamente los iconos de su escritorio. ¿Está cansado de la disposición de los iconos del escritorio en Windows y desea organizarlos según sus propias ideas? ¿Quiere cambiar el fondo del texto del ícono del escritorio sin que aparezcan feos bloques de colores debajo del texto del ícono? Aquí quiero presentarles cómo cambiar completamente los íconos del escritorio a través de VB.
De hecho, el escritorio y la barra de tareas en Windows son todos objetos de ventana. Podemos usar las funciones API de Windows FindWindow y FindWindowEx para obtener sus identificadores y luego llamar a otras funciones API correspondientes para controlarlos. La ventana donde se coloca el icono del escritorio es un objeto ListView. Utilice la función SendMessage para enviar el mensaje correspondiente a la ventana y el icono se puede modificar. La siguiente es la implementación del programa específico.
Primero, cree un nuevo proyecto en VB, agregue tres controles CommandButton a Form1 y luego agregue el siguiente código a la ventana de código de Form1:
Option Explicit
Tipo privado POINTAPI x Mientras, y Mientras tanto
Tipo de extremo
Función de declaración privada FindWindow Lib user32 Alias FindWindowA _ (ByVal lpClassName como cadena, ByVal lpWindowName como cadena) Mientras sea largo
Función de declaración privada FindWindowEx Lib user32 Alias FindWindowExA _ (ByVal hWnd1 mientras, ByVal hWnd2 mientras, ByVal lpsz1 como cadena, _ ByVal lpsz2 como cadena) Mientras
Función de declaración privada UpdateWindow Lib user32 (ByVal hwnd As Long) As Long
Función de declaración privada SendMessage Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) _ As Long
Función de declaración privada SendMessageP Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _ As Long
Función de declaración privada GetSysColor Lib user32 (ByVal nIndex As Long) As Long
Función de declaración privada SetSysColors Lib user32 (ByVal nChanges As Long, _ lpSysColor As Long, lpColorValues As Long) As Long
Constante LVM_FIRST = &H1000
Constante LVM_GETITEMCOUNT = LVM_FIRST + 4
Constante LVM_SETTEXTCOLOR = LVM_FIRST + 36
Constante LVM_REDRAWITEMS = LVM_FIRST + 21
Constante LVM_SETTEXTBKCOLOR = LVM_FIRST + 38
Constante LVM_SETITEMPOSITION = LVM_FIRST + 15
Const COLOR_DESKTOP = 1'La función RestoreColor restaura el color y el fondo del texto del icono predeterminado
SubRestaurarColor()
Atenuar el color durante tanto tiempo
lColor = GetSysColor(COLOR_DESKTOP)
SetSysColors 1, COLOR_DESKTOP, lColor
Subtítulo final
Sub SetIconText(clFore, clBack siempre, bTrans como booleano)
Atenuar la ventana mientras dure
Dim lItemCount As Long 'Encuentre la ventana donde se coloca el gráfico del escritorio en tres pasos
hWindow = FindWindow(Progman, Administrador de programas)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView,)
hWindow = FindWindowEx(hWindow, 0, SysListView32,)
Si bTrans Entonces 'Fondo transparente
Enviar mensaje hWindow, LVM_SETTEXTBKCOLOR, 0, &HFFFFFFFF
De lo contrario, 'Fondo no transparente'
Enviar mensaje hWindow, LVM_SETTEXTBKCOLOR, 0, clBack
Terminar si
'Establece el color del texto del icono
SendMessage hWindow, LVM_SETTEXTCOLOR, 0, clFore 'Redibujar todos los iconos
lItemCount = EnviarMensaje(hWindow, LVM_GETITEMCOUNT, 0, 0)
Enviar mensaje hWindow, LVM_REDRAWITEMS, 0, lItemCount - 1
'Ventana de actualización
UpdateWindow hWindowEnd SubSub ArrangeDesktopIcon(iWidth como entero, iHeight como entero)
Atenuar hWindow mientras atenue i1, i2, i, iCuenta como entero
Dim po Como POINTAPI
'Encuentre la ventana donde se coloca el gráfico del escritorio en tres pasos
hWindow = FindWindow(Progman, Administrador de programas)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView,)
hWindow = FindWindowEx(hWindow, 0, SysListView32,)
i1 = 20: i2 = 20
iCount = EnviarMensaje(hWindow, LVM_GETITEMCOUNT, 0, 0)
Para i = 0 Para iCount - 1
po.x = i1: po.y = i2
'Enviar mensaje LVM_SETITEMPOSITION para organizar iconos
Llamar a SendMessage(hWindow, LVM_SETITEMPOSITION, i, i2 * 65536 + i1)
i1 = i1 + iAncho
Si i1 > ((Ancho.Pantalla / 15) - 32) Entonces
i1 = 20
i2 = i2 + iAltura
Terminar si
siguiente yo
Enviar mensaje hWindow, LVM_REDRAWITEMS, 0, iCount - 1
'Ventana de actualización
Actualizar ventana h Ventana
Subtítulo final
Subcomando privado1_Click()
'Establece el color del texto del icono en azul, el color de fondo en negro y el fondo en transparente
SetIconText vbBlue, vbBlack, Verdadero
Fin
Subcomando subprivado2_Click()
RestaurarColor
Subtítulo final
Subcomando privado3_Click()
'Organizar iconos en unidades de 100x100 píxeles
OrganizarDesktopIcon 100, 100
Subtítulo final
Subformulario privado_Load()
Command1.Caption = Establecer fondo del texto
Command2.Caption = Restaurar fondo del texto
Command3.Caption = Organizar iconos del escritorio
Subtítulo final
Ejecute el programa y haga clic en Comando1. Puede ver que el fondo del texto del icono del escritorio se vuelve azul. Si configura una imagen del escritorio, también puede ver que el fondo del texto se vuelve transparente en lugar de un bloque de color feo debajo. para restaurar la configuración predeterminada de Windows. Haga clic en Comando3 para organizar los íconos del escritorio horizontalmente, pero solo si la propiedad de disposición automática de los íconos del escritorio está configurada en Falso. El programa anterior se ejecuta correctamente en VB6, Windows98 y Windows2000.