有没有办法在Windows 7中的Windows资源管理器中更改项目的文本背景颜色?

时间:2012-05-21 07:14:18

标签: delphi winapi windows-7 delphi-xe2 windows-explorer

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

是否可以像Xentient Labels应用程序一样更改Windows资源管理器中项目的背景颜色?是否可以在Windows 7中使用Delphi XE2进行此操作?

2 个答案:

答案 0 :(得分:11)

不可能在Windows 7中执行此操作,因为Windows资源管理器的列表视图使用的DirectUIHWND不是SysListView32,就像在Windows XP中一样。 DirectUIHWND类控件不会监听列表视图消息,因此您无法像在Windows XP上那样使用ListView_SetTextBkColor宏来更改文本颜色。

通过以下简单测试,您可以对其进行验证。我们在表单上有一个编辑框和按钮。在该编辑框中输入Windows资源管理器列表视图控件的句柄(例如通过Spy ++获取),然后在按钮的按下运行以下代码:

uses
  Winapi.CommCtrl;

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

来自Windows 7的此Spy ++屏幕截图显示了资源管理器列表视图的类名(在Windows XP中,SysListView32可由标准列表视图消息控制,DirectUIHWND不会对它们做出反应)。

enter image description here

答案 1 :(得分:2)

您无法为文字添加颜色,但您可以添加TortoiseSVN / CVS / Git / Groove / Dropbox等叠加层。确实

Screenshot of Explorer with overlay icons

(来自https://tortoisesvn.net/screenshots.html