2008-12-10 9 views
2

Est-il possible de changer l'icône de la barre des tâches d'un navigateur dans Windows?Y at-il un moyen de changer l'icône de la barre des tâches d'un navigateur dans Windows?

J'ouvre beaucoup de fenêtres de navigateur, et j'aime grouper des sites Web semblables (dans des onglets) par la fenêtre. Donc je me demandais s'il y avait un moyen de leur assigner une icône de la barre des tâches afin que vous puissiez les différencier plus facilement.

+0

Toute personne possédant plus d'une demi-douzaine de sites Web ouverts en même temps a de graves problèmes de troubles de l'attention, choisissez votre favori. – TravisO

+0

(Ou peut-être juste beaucoup à faire ...) :-) – leeand00

Répondre

5

Voici quelque chose que j'ai mis ensemble en moins de 5 minutes pour changer l'icône sur une fenêtre spécifique. Vous pouvez facilement utiliser ce code pour créer un winform qui énumérerait les fenêtres actuellement ouvertes et vous permettre de leur assigner des icônes arbitraires. (Code C# ci-dessous)

[DllImport("user32.dll", CharSet=CharSet.Auto)] 
public static extern IntPtr FindWindow(string strClassName, string strWindowName); 

[DllImport("user32.dll",CharSet=CharSet.Auto)] 
private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam); 

[DllImport("user32.dll")] 
public static extern int DrawMenuBar(int currentWindow); 


const int WM_GETICON = 0x7F; 
const int WM_SETICON = 0x80; 
const int ICON_SMALL = 0; //16 
const int ICON_BIG = 1; //32 

public static void SetIcon() 
{ 
    //Load an icon. This has to be a *.ico. 
    System.Drawing.Icon i = new Icon("path\to\icon"); 
    //Find the target window. The caption must be entered exactly 
    //as it appears in the title bar 
    IntPtr hwnd = FindWindow(null, "Caption of Target Window"); 
    //Set the icon 
    SendMessage(hwnd, WM_SETICON, (IntPtr)ICON_SMALL, (IntPtr)i.Handle); 
    //Update the title bar with the new icon. Note: the taskbar will 
    //update without this, you only need this if you want the title 
    //bar to also display the new icon 
    DrawMenuBar((int)hwnd); 
} 
+0

Wow! Je vais devoir essayer ça plus tard! – leeand00

+0

C'est très bien, merci de poster ceci. Mais je voudrais juste souligner que ce code fournit une icône (vraisemblablement) 32x32 pour une utilisation 16x16, ce qui signifie que Windows va l'échantillonner. Si possible, il est préférable de fournir une véritable icône 16x16, ainsi qu'une icône 32x32 que Windows utilisera pour le menu Alt-Tab et (pour Windows 7) la barre des tâches. Pour fournir les deux tailles d'icônes, vous devez utiliser SendMessage deux fois. Voir ici par exemple: http://blog.barthe.ph/2009/07/17/wmseticon/ – RenniePet

1

Je crois que la barre des tâches utilise la ressource d'icône intégrée dans l'exécutable. J'ai essayé de créer plusieurs raccourcis vers Internet Explorer, chacun avec une icône de raccourci unique, mais ils avaient tous la même icône lorsqu'ils étaient ouverts dans la barre des tâches.

Je pense que vous devrez exécuter plusieurs instances de l'exécutable du navigateur, et chacune devrait avoir une ressource d'icône intégrée différente.