Bonjour à tous,
[Pour info j'utilise Windows 7 Pro et Windows 8.1 Fam] Je me suis basé sur le code de la fonction WinSetIcon proposée par Mikell dont voici le
[lien]. Vous trouverez ci-dessous le code source légèrement modifié que j'ai utilisé (utilisation du _WinAPI_LoadImage pour tenter de forcer la taille de l'icone) :
► Afficher le texteCode
Code : Tout sélectionner
#include <WinAPI.au3>
ShellExecute(StringRegExpReplace(@AutoItExe, '(.+)\\[^\\]+', "$1") & "\AutoIt.chm")
Do
Sleep(10)
Until WinExists("AutoIt Help")
$handle = WinGetHandle("AutoIt Help")
WinSetIcon($handle, @ScriptDir&"\Icone.ico")
Func WinSetIcon($hwnd, $file)
Local $icon = _WinAPI_LoadImage(0, $file, $IMAGE_ICON, 32, 32, BitOR($LR_LOADFROMFILE, $LR_CREATEDIBSECTION))
If Not $icon Then Return False
_SendMessage($handle, 0x0080, 1, $icon) ; $WM_SETICON = 0x0080
_WinAPI_DestroyIcon($icon)
EndFunc
Et ci dessous, la capture d'écran par rapport à mon souci:
► Afficher le texteCapture d'écran


- Capture d'écran
Comme vous le voyez, l'icone que j'utilise possède plusieurs tailles 48x48, 32x32 et 16x16. Toutes les icones de ma barre des tâches sont de tailles 32x32 lorsqu'on y touche pas, mais une fois affectée par le code AutoIt, elle est en mode dégradé. L'icone dans le coin haut/gauche de la fenêtre est nickel, mais c'est celle en bas qui est important dans mon cas. Sauriez-vous comment pallier le souci?
Merci d'avance pour votre aide, et à bientôt !
PS: En utilisant une icone ne contenant qu'une seule taille (que ce soit 48, 32 ou 16), le résultat est le même : dégradé.
PS2: L'icone de flèche sur fond vert dans l'exemple d'origine de Mikell apparait elle aussi en dégradé sur chacun de mes ordis.
PJ: Icone utilisée dans le cadre de ce code
- Icone.zip
- Icone zippée car ".ico" interdit
- (13.26 Kio) Téléchargé 145 fois
EDIT 27/01/2015 : Toujours pas trouvé de solution par moi même, personne ?
EDIT 02/04/2015 : Problème [R]ésoluCode : Tout sélectionner
Func WinSetIcon($hwnd, $file)
Local $icon = _WinAPI_LoadImage(0, $file, $IMAGE_ICON, 32, 32, BitOR($LR_LOADFROMFILE, $LR_CREATEDIBSECTION))
If Not $icon Then Return False
_SendMessage($handle, 0x0080, 1, $icon) ; $WM_SETICON = 0x0080
Sleep(200)
_WinAPI_DestroyIcon($icon)
EndFunc