Const BM_SETIMAGE = &HF7
Пошлите сообщение BM_SETIMAGE для изменения изображения (иконка или картинка) для графической кнопки
Сообщение BM_SETIMAGE возвращает дескриптор предыдущего растра, связанного с кнопкой. В случае ошибки возвращается 0
' Меняем вид кнопки Пуск. Добавьте на форму две кнопки ' и PictureBox ' Добавим в General Declaration глобальные переменные Private m_hbmCustom As Long ' дескриптор нового изображения Private m_hbmOriginal As Long ' дескриптор старого изображения Private Sub Command1_Click() ' Меняем изображение на свое m_hbmCustom = LoadImage(0&, App.Path & "\start.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE Or LR_DEFAULTCOLOR Or LR_LOADFROMFILE) Dim hWndTaskBar As Long Dim hWndStart As Long Dim hBmp As Long Dim retval As Long Picture1.Picture = LoadPicture(App.Path & "\start.bmp") hWndTaskBar = FindWindowEx(0, 0, "Shell_TrayWnd", 0&) If hWndTaskBar Then ' Находим дескриптор кнопки Пуск hWndStart = FindWindowEx(hWndTaskBar, 0, "BUTTON", 0&) If hWndStart Then If m_hbmCustom Then retval = SendMessage(hWndStart, BM_SETIMAGE, IMAGE_BITMAP, ByVal m_hbmCustom) If m_hbmOriginal = 0 Then m_hbmOriginal = retval Command2.Enabled = True Command1.Enabled = False End If End If End If End If End Sub Private Sub Command2_Click() ' Восстанавливаем старое изображение кнопки Пуск Dim hWndTaskBar As Long Dim hWndStart As Long Dim hBmp As Long Dim retval As Long If m_hbmOriginal = 0 Then Exit Sub hWndTaskBar = FindWindowEx(0, 0, "Shell_TrayWnd", 0&) If hWndTaskBar Then hWndStart = FindWindowEx(hWndTaskBar, 0, "BUTTON", 0&) If hWndStart Then If m_hbmOriginal Then retval = SendMessage(hWndStart, BM_SETIMAGE, IMAGE_BITMAP, ByVal m_hbmOriginal) m_hbmOriginal = 0 Command2.Enabled = False Command1.Enabled = True End If End If End If End Sub ' Восстанавливаем прежние значения при выходе из программы Private Sub Form_Unload(Cancel As Integer) If m_hbmOriginal Then Call Command2_Click Call DeleteObject(m_hbmCustom) Set Form1 = Nothing End Sub