Cannot change excel icon in taskbar with vba

Viewed 227

I am using the following code to change word icon in windows taskbar from the usual word icon to an icon I have made.

But it doesn't work...only changes the small icon on the top-left corner of the application or userform.(not the taskbar)

I tried solution on the web including this link( how to change the Excel Icon in Taskbar while loading, Cannot change excel icon (in taskbar) with vba) and searched on stackoverflow.com but it couldn't help.

I am using Windows 10 & word 2010(I also tried this code on excel but it was same.)

I hope someone can help....

#If VBA7 And Win64 Then

    Private Declare PtrSafe Function ExtractIconA Lib "shell32.dll" _
                                    (ByVal hInst As LongPtr, _
                                    ByVal lpszExeFileName As String, _
                                    ByVal nIconIndex As Long) As LongPtr
 
    Private Declare PtrSafe Function SendMessageA Lib "user32" _
                                    (ByVal hwnd As LongPtr, _
                                    ByVal wMsg As Long, _
                                    ByVal wParam As LongPtr, _
                                    ByVal lParam As LongPtr) As LongPtr
 
    Declare PtrSafe Function GetActiveWindow32 Lib "user32" Alias "GetActiveWindow" () As Long
    
    
    Private Const ICON_SMALL    As LongPtr = 0&
    Private Const ICON_BIG      As LongPtr = 1&
    Dim hwndIcon                As LongPtr
 
#Else
 
    Declare Function GetActiveWindow32 Lib "user32" Alias "GetActiveWindow" () As Integer
    Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Declare Function ExtractIcon32 Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
 
    Private Const ICON_SMALL    As Long = 0&
    Private Const ICON_BIG      As Long = 1&
    Dim hwndIcon                As Long
 
#End If

Private Const WM_SETICON    As Long = &H80




Public Sub ChangeApplicationIcon()
    
    bigIcon_Path = ThisDocument.path & "\DataDontTouch\Icon\32X32B32.ico"
    smallIcon_Path = ThisDocument.path & "\DataDontTouch\Icon\16X16B32.ico"

    bigIcon = ExtractIconA(0, bigIcon_Path, 0)
    smallIcon = ExtractIconA(0, smallIcon_Path, 0)
 
    SendMessageA GetActiveWindow32(), &H80, 0&, smallIcon 
    SendMessageA GetActiveWindow32(), &H80, 1&, bigIcon 


    ActiveWindow.Caption = "Fast.exe"

End Sub
0 Answers
Related