Есть ли способ изменить цвет фона текста элементов в проводнике Windows в Windows 7?

http://screenshots.en.sftcdn.net/en/scrn/39000/39972/xentient-labels-1.  jpg

Можно ли изменить цвет фона элементов в проводнике Windows, как это делает приложение Xentient Labels? Возможно ли это сделать из Delphi XE2 в Windows 7?


person Gu.    schedule 21.05.2012    source источник
comment
Если бы я был Королем, все списки файлов всегда были бы черно-белыми, с моноширинным текстом. Но это только я, наверное ;)   -  person paulsm4    schedule 21.05.2012
comment
Было бы здорово, если бы вы добавили туда мигающий текст.   -  person David Heffernan    schedule 21.05.2012
comment
@David, да, мигающий текст и прыгающие предметы :-) Попробую...   -  person TLama    schedule 21.05.2012
comment
Я проверил, и эти Xentient Labels не работают в Windows 7 и не зарегистрированы как расширение оболочки.   -  person Pol    schedule 21.05.2012
comment
ListView в Windows 7 имеет имя класса DirectUIHWND и не прослушивает сообщения представления списка, поэтому это невозможно в Windows 7.   -  person TLama    schedule 21.05.2012
comment
Или значки, которые икают, как на Mac ;-)   -  person Jan Doggen    schedule 21.05.2012


Ответы (2)


невозможно сделать это в Windows 7, так как в представлении списка проводника Windows используется DirectUIHWND, а не SysListView32, как это было в Windows XP. Элемент управления класса DirectUIHWND не прослушивает сообщения представления списка, поэтому вы не можете использовать ListView_SetTextBkColor для изменения цвета фона текста, как в Windows XP.

С помощью следующего простого теста вы можете убедиться в этом. Давайте создадим поле редактирования и кнопку на форме. В этом поле ввода введите дескриптор элемента управления представлением списка проводника Windows (полученного, например, с помощью Spy++), и при нажатии кнопки запустите следующий код:

uses
  Winapi.CommCtrl;

procedure TForm1.Button1Click(Sender: TObject);
var
  ListViewHandle: HWND;
begin
  ListViewHandle := StrToInt(Edit1.Text);
  ListView_SetTextBkColor(ListViewHandle, $0000CCFF);
end;

На этом снимке экрана Spy++ из Windows 7 показано имя класса представления списка Проводника (в Windows XP оно SysListView32 управлялось стандартными сообщениями представления списка, DirectUIHWND не реагирует на них).

введите здесь описание изображения

person TLama    schedule 21.05.2012
comment
Теперь, глядя на картинку из вопроса, ListView_SetTextBkColor не подходит. Он изменяет цвет фона для всех элементов в представлении списка. Однако это по-прежнему не меняет того факта, что представление списка в проводнике Windows 7 не прослушивает сообщения представления списка, поэтому в этом случае нет необходимости искать нужное. - person TLama; 21.05.2012

Вы не можете раскрасить текст, но вы можете добавить наложения, такие как TortoiseSVN/CVS/Git/Groove/Dropbox/и т.д. делает.

Снимок экрана Проводника с наложенными значками

(из https://tortoisesvn.net/screenshots.html)

person DiGi    schedule 21.05.2012
comment
ссылка: Доступ запрещен, перезагрузите плз на другой любой хост изображений - person Gu.; 21.05.2012
comment
Если ссылка запрещена, просто нажмите Enter в адресной строке сайта с запрещенной ошибкой, и теперь он загрузится. Запрещенные ссылки обычно проверяют место, откуда вы были отправлены, повторным нажатием ввода в адресной строке вы обманываете сайт, заставляя его думать, что вы переходите по ссылке прямо с сайта :) - person ; 21.05.2012