2008-10-09 6 views

Répondre

35

Juste créé l'extension VS pour cela en moins d'une heure, recherche gestionnaire d'extension pour "SExColor". Profitez;)

+1

Salut beau travail! Comment avez-vous fait? – zadam

+0

trivial, trouver la fenêtre de l'explorateur de solution qui est un contrôle treeview , et en envoyant le message de Windows pour changer des couleurs :) –

+0

@aloneguid puis-je obtenir une version VS2008 quelque part? (Ou obtenir le code source pour cela?) – ver

4

Non par aucun moyen de configuration à partir de Visual Studio lui-même.

Vous pouvez cependant probablement "pirater" l'objet window de l'API Win32 (recherchez "énumération de la fenêtre"). Une fois que vous avez la poignée de la fenêtre, vous pouvez définir toutes les caractéristiques que vous voulez.

Cordialement

/Robert

+0

Je voudrais pouvoir le faire. Sinon, il n'y a pas besoin d'un thème twilight :-( – Stephan

+0

N'importe quelle façon de le faire avec VS 2010? –

+0

Probablement pas au moyen d'une gestion de fenêtre "normale", puisque VS2010 est fait avec WPF Il pourrait y avoir d'autres façons d'accomplir la tâche à cause de cela même, peut-être même des méthodes "légales" – sharkin

4

Même changer la couleur de fond standard de Windows ne fonctionne pas pour la solution Explorer. Ce Visual Studio bug report mentionne le problème. Microsoft a marqué cela comme "Fermé - ne corrigera pas".

Ce qui est très irritant! Utiliser un thème sombre et avoir un Explorateur de solution blanc brillant accroché sur le côté de l'écran est extrêmement ennuyeux.

Une solution possible est de ne pas utiliser l'Explorateur de solutions. Le Productivity Power Tools fournit un remplacement Solution Explorer appelé "Solution Navigator". Il est actuellement codé en dur au blanc. Mais je pense qu'il y a probablement une meilleure chance de faire en sorte que les développeurs de cet outil ajoutent du support pour modifier les couleurs plutôt que de faire en sorte que Microsoft le fasse dans Visual Studio. (même si Microsoft a créé les PPT.)

10

@aloneguid ... aurait dû voir cela il y a longtemps .. merci monsieur! @ver (concernant la solution de solution de 2008 par rapport à;) - une approche de type B52, un bombardement de tapis sur tout ce qui est SysTreeView32 dans un devenv.exe. Possible supplémentaire pour param couleur désirée, sinon RVB (220220220) - qui fonctionne le mieux pour moi

#include <windows.h> 
#include "psapi.h" 
#include "shlwapi.h" 
#include "commctrl.h" 


COLORREF clr = RGB(220,220,220); 

BOOL CALLBACK wenum(HWND hwnd, LPARAM lParam) 
{ 
    const UINT cb = 261; 
    static wchar_t name[] = L"SysTreeView32", 
        tmp[cb] = {0}; 
    if(::GetClassNameW(hwnd, tmp, 260) && 0 == _wcsicmp(name, tmp)) 
    { 
     ::SendMessageW(hwnd, TVM_SETBKCOLOR, 0, (LPARAM)clr); 
    } 

    return TRUE; 
} 

BOOL CALLBACK EnumTops(HWND hwnd, LPARAM lParam) 
{ 
    DWORD    dwThreadId = 0, 
        dwProcessId = 0; 
    HINSTANCE   hInstance; 
    static wchar_t derVS[]  = L"devenv.exe"; 
    wchar_t name[_MAX_PATH] = {0}, 
      *exe    = 0; 

    HANDLE hProcess; 
    if (!hwnd) return TRUE;  // Not a window 
    if (!::IsWindowVisible(hwnd)) return TRUE;  // Not visible 

    if (!SendMessage(hwnd, WM_GETTEXT, sizeof(name), (LPARAM)name)) 
     return TRUE;  // No window title 
    dwThreadId = GetWindowThreadProcessId(hwnd, &dwProcessId); 
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId); 
    if(!GetModuleFileNameEx(hProcess, 0, name, sizeof(name))) goto exit; 

    exe = ::PathFindFileNameW(name); 
    if((void*)exe == (void*)name) goto exit; // mhm? maybe not exit? 

    if(_wcsicmp(derVS, exe)) goto exit; 

    EnumChildWindows(hwnd, wenum, (LPARAM)hProcess); 

exit: 
    CloseHandle(hProcess); 
    int res = GetLastError(); 
    return res; 
} 

int wmain(int argc, wchar_t * argv[]) 
{ 
    if(argc >= 2) 
    { 
     wchar_t *end = 0; 
     long l = wcstol(argv[1], &end, 16); 
     clr = (DWORD)l; 
    } 
    ::EnumWindows(EnumTops, NULL); 
    return 0; 
} 
+0

Excellent! A travaillé un régal - Beau travail! – user1229458

+1

Quelqu'un peut-il faire une version C# de ce code? – Tom

+5

+1 pour l'appeler tapis bombardement. – TheBlastOne

3

Vous pouvez utiliser d'autres extenssion, vous avez des possibilités assez grand pour faire votre Visual Studio plus beau;) (mais je suis pas sûr s'il vous pouviez changer Solution fond Explorateur)

http://visualstudiogallery.msdn.microsoft.com/20cd93a2-c435-4d00-a797-499f16402378

+0

Je n'ai trouvé aucun paramètre pour l'arrière-plan de l'Explorateur de solutions ou la couleur d'arrière-plan de plusieurs autres vues. –

+4

Après avoir téléchargé l'extension VS Theme Editor, modifiez un thème. Cliquez sur le bouton "Afficher tous les éléments". La propriété que vous souhaitez modifier s'appelle "Treeview -> Background". – csigrist

+0

@csigrist Je ... aime ... vous ... SOMUCH! manqué qu'il y avait une telle option. Je recommande de mettre votre mention en place; c'est la vraie solution pour VS2013 (et 12?) et ferait probablement gagner beaucoup de temps aux gens s'ils frappent ceci et ne voient pas votre commentaire. laissez un commentaire en disant que vous l'avez fait, je reviendrai et vous voterai. :) ♥ wow, enfin sera en mesure de rendre cet IDE ressemble à ce que je veux. – shelleybutterfly

Questions connexes