Use VB para controlar totalmente os ícones da área de trabalho Você está cansado da organização dos ícones da área de trabalho no Windows e deseja organizá-los de acordo com suas próprias ideias? Deseja alterar o plano de fundo do texto do ícone da área de trabalho sem causar o aparecimento de blocos coloridos feios sob o texto do ícone? Aqui irei apresentar como alterar completamente os ícones da área de trabalho através do VB.
Na verdade, a área de trabalho e a barra de tarefas do Windows são todos objetos de janela. Podemos usar as funções da API do Windows FindWindow e FindWindowEx para obter seus identificadores e, em seguida, chamar outras funções de API correspondentes para controlá-los. A janela onde o ícone da área de trabalho é colocado é um objeto ListView. Use a função SendMessage para enviar a mensagem correspondente para a janela, e o ícone pode ser modificado. A seguir está a implementação específica do programa.
Primeiro, crie um novo projeto em VB, adicione três controles CommandButton ao Form1 e, em seguida, adicione o seguinte código à janela de código do Form1:
Option Explicit
Tipo privado POINTAPI x As Long, y As Long
Tipo final
Função de declaração privada FindWindow Lib user32 Alias FindWindowA _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Função de declaração privada FindWindowEx Lib user32 Alias FindWindowExA _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long
Função de declaração privada UpdateWindow Lib user32 (ByVal hwnd As Long) As Long
Função de declaração privada SendMessage Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) _ As Long
Função de declaração privada SendMessageP Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _ As Long
Função de declaração privada GetSysColor Lib user32 (ByVal nIndex As Long) As Long
Função de declaração privada 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'A função RestoreColor restaura a cor e o plano de fundo do texto do ícone padrão
SubRestoreColor()
Dim lColor enquanto
lCor = GetSysColor(COLOR_DESKTOP)
SetSysColors 1, COLOR_DESKTOP, lColor
Finalizar sub
Sub SetIconText(clFore, clBack As Long, bTrans As Boolean)
Dim hWindow enquanto
Dim lItemCount As Long 'Encontre a janela onde o gráfico da área de trabalho é colocado em três etapas
hWindow = FindWindow(Progman, Gerente de Programa)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
Se bTrans Então 'Fundo transparente
EnviarMensagem hWindow, LVM_SETTEXTBKCOLOR, 0, &HFFFFFFFF
Else 'Fundo não transparente
EnviarMensagem hWindow, LVM_SETTEXTBKCOLOR, 0, clBack
Terminar se
'Define a cor do texto do ícone
SendMessage hWindow, LVM_SETTEXTCOLOR, 0, clFore 'Redesenhar todos os ícones
lItemCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
SendMessage hWindow, LVM_REDRAWITEMS, 0, lItemCount - 1
'Janela de atualização
UpdateWindow hWindowEnd SubSub ArrangeDesktopIcon (iWidth como inteiro, iHeight como inteiro)
Dim hWindow As Long Dim i1, i2, i, iCount As Integer
Dim po como POINTAPI
'Encontre a janela onde o gráfico da área de trabalho é colocado em três etapas
hWindow = FindWindow(Progman, Gerente de Programa)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
i1 = 20: i2 = 20
iCount = EnviarMensagem(hWindow, LVM_GETITEMCOUNT, 0, 0)
Para i = 0 Para iCount - 1
po.x = i1: po.y = i2
'Envia mensagem LVM_SETITEMPOSITION para organizar ícones
Chame SendMessage(hWindow, LVM_SETITEMPOSITION, i, i2 * 65536 + i1)
i1 = i1 + iLargura
Se i1 > ((Screen.Width / 15) - 32) Então
i1 = 20
i2 = i2 + iAltura
Terminar se
Em seguida eu
EnviarMensagem hWindow, LVM_REDRAWITEMS, 0, iCount - 1
'Janela de atualização
AtualizarJanela hWindow
Finalizar sub
Subcomando Privado1_Click()
'Defina a cor do texto do ícone para azul, a cor de fundo para preto e o fundo para transparente
SetIconText vbBlue, vbBlack, True
Fim
SubPrivado Sub Comando2_Click()
RestaurarCor
Finalizar sub
Subcomando Privado3_Click()
'Organizar ícones em unidades de 100x100 pixels
OrganizarDesktopIcon 100, 100
Finalizar sub
Subformulário privado_Load()
Command1.Caption = Definir plano de fundo do texto
Command2.Caption = Restaurar fundo do texto
Command3.Caption = Organizar ícones da área de trabalho
Finalizar sub
Execute o programa e clique em Command1. Você pode ver que o fundo do texto do ícone da área de trabalho fica azul. Se você definir uma imagem da área de trabalho, também poderá ver que o fundo do texto fica transparente em vez de um bloco colorido feio abaixo. para restaurar as configurações padrão do Windows. Clique em Command3 para organizar os ícones da área de trabalho horizontalmente, mas somente se a propriedade de organização automática dos ícones da área de trabalho estiver definida como False. O programa acima é executado com sucesso em VB6, Windows98 e Windows2000.