Используйте VB для полного управления значками на рабочем столе. Вы устали от расположения значков на рабочем столе в Windows и хотите расположить значки по своему усмотрению? Хотите изменить фон текста значка на рабочем столе, не вызывая появления уродливых цветных блоков под текстом значка? Здесь я хочу рассказать, как полностью изменить значки на рабочем столе через VB.
Фактически, рабочий стол и панель задач в Windows — это оконные объекты. Мы можем использовать функции Windows API FindWindow и FindWindowEx для получения их дескрипторов, а затем вызывать другие соответствующие функции API для управления ими. Окно, в котором размещается значок на рабочем столе, является объектом ListView. Используйте функцию SendMessage, чтобы отправить соответствующее сообщение в окно, и значок можно изменить. Ниже приводится конкретная реализация программы.
Сначала создайте новый проект в VB, добавьте три элемента управления CommandButton в форму Form1, а затем добавьте следующий код в окно кода формы Form1:
Option Explicit
Частный тип POINTAPI x As Long, y As Long
Тип окончания
Частная функция объявления FindWindow Lib user32 Псевдоним FindWindowA _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Частная функция объявления FindWindowEx Lib user32 Псевдоним FindWindowExA _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long
Частная функция объявления UpdateWindow Lib user32 (ByVal hwnd As Long) As Long
Частная функция объявления SendMessage Lib user32 Псевдоним SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) _ As Long
Частная функция объявления SendMessageP Lib user32 Псевдоним SendMessageA (ByVal_hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _ As Long
Частная функция объявления GetSysColor Lib user32 (ByVal nIndex As Long) As Long
Частная функция объявления SetSysColors Lib user32 (ByVal nChanges As Long, _ lpSysColor As Long, lpColorValues As Long) As Long
Конст LVM_FIRST = &H1000
Конст LVM_GETITEMCOUNT = LVM_FIRST + 4
Конст LVM_SETTEXTCOLOR = LVM_FIRST + 36
Const LVM_REDRAWITEMS = LVM_FIRST + 21
Конст LVM_SETTEXTBKCOLOR = LVM_FIRST + 38
Конст LVM_SETITEMPOSITION = LVM_FIRST + 15
Const COLOR_DESKTOP = 1'Функция RestoreColor восстанавливает цвет текста и фона значка по умолчанию.
Субресторецвет()
Тусклый цвет до тех пор, пока
lColor = GetSysColor(COLOR_DESKTOP)
SetSysColors 1, COLOR_DESKTOP, lColor
Конец субтитра
Sub SetIconText(clFore, clBack As Long, bTrans As Boolean)
Затемнить hWindow как можно дольше
Dim lItemCount As Long 'Найдите окно, в котором расположена диаграмма рабочего стола, за три шага
hWindow = FindWindow(Progman, Менеджер программ)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
Если bTrans Тогда 'Прозрачный фон
SendMessage hWindow, LVM_SETTEXTBKCOLOR, 0, &HFFFFFFFF
Еще 'Непрозрачный фон
SendMessage hWindow, LVM_SETTEXTBKCOLOR, 0, clBack
Конец, если
'Установим цвет текста значка
SendMessage hWindow, LVM_SETTEXTCOLOR, 0, clFore 'Перерисовать все значки
lItemCount = SendMessage (hWindow, LVM_GETITEMCOUNT, 0, 0)
SendMessage hWindow, LVM_REDRAWITEMS, 0, lItemCount - 1
'Окно обновления
UpdateWindow hWindowEnd SubSub ArrangeDesktopIcon (iWidth As Integer, iHeight As Integer)
Dim hWindow As Long Dim i1, i2, i, iCount As Integer
Дим по как ПУИНТАПИ
'Найти окно, в котором расположена диаграмма рабочего стола, в три шага
hWindow = FindWindow(Progman, Менеджер программ)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
я1 = 20: я2 = 20
iCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
Для i = 0 Для iCount - 1
po.x = i1: po.y = i2
'Отправляем сообщение LVM_SETITEMPOSITION для упорядочения значков
Вызов SendMessage(hWindow, LVM_SETITEMPOSITION, i, i2 * 65536 + i1)
i1 = i1 + iширина
Если i1 > ((Ширина экрана / 15) - 32) Тогда
я1 = 20
i2 = i2 + iВысота
Конец, если
Дальше я
SendMessage hWindow, LVM_REDRAWITEMS, 0, iCount - 1
'Окно обновления
Обновить окно
Конец субтитра
Частная подкоманда 1_Click()
'Установим синий цвет текста значка, черный цвет фона и прозрачный фон
SetIconText vbBlue, vbBlack, True
Конец
Подкоманда SubPrivate2_Click()
Восстановить цвет
Конец субтитра
Частная подкоманда 3_Click()
'Упорядочить значки по 100х100 пикселей.
ArrangeDesktopIcon 100, 100
Конец субтитра
Частная подформа_Load()
Command1.Caption = Установить фон текста
Command2.Caption = Восстановить фон текста
Command3.Caption = Упорядочить значки на рабочем столе
Конец субтитра
Запустите программу и нажмите «Command1». Вы увидите, что текстовый фон значка на рабочем столе становится синим. Если вы установите изображение на рабочем столе, вы также увидите, что фон текста становится прозрачным, а не уродливым цветным блоком ниже. для восстановления настроек Windows по умолчанию. Нажмите Command3, чтобы расположить значки на рабочем столе по горизонтали, но только если для свойства автоматического расположения значков на рабочем столе установлено значение False. Вышеуказанная программа успешно работает под VB6, Windows98 и Windows2000.