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

Delphi 有没有办法在Windows7中更改Windows资源管理器中项目的文本背景颜色?,delphi,winapi,windows-7,delphi-xe2,windows-explorer,Delphi,Winapi,Windows 7,Delphi Xe2,Windows Explorer,是否可以像应用程序那样更改Windows资源管理器中项目的背景颜色?在Windows 7中,可以从Delphi XE2中执行此操作吗?您不能为文本着色,但可以添加像OttoiseSVN/CVS/Git/Groove/Dropbox/等那样的覆盖 (from)在Windows 7中不可能做到这一点,因为Windows资源管理器的列表视图使用的是DirectUIHWND而不是SysListView32。DirectUIHWND类控件不侦听列表视图消息,因此不能像在Windows XP上那样使用宏更


是否可以像应用程序那样更改Windows资源管理器中项目的背景颜色?在Windows 7中,可以从Delphi XE2中执行此操作吗?

您不能为文本着色,但可以添加像OttoiseSVN/CVS/Git/Groove/Dropbox/等那样的覆盖

(from)

在Windows 7中不可能做到这一点,因为Windows资源管理器的列表视图使用的是
DirectUIHWND
而不是
SysListView32
DirectUIHWND
类控件不侦听列表视图消息,因此不能像在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;
此来自Windows 7的Spy++屏幕截图显示了资源管理器列表视图的类名(在Windows XP中,它是标准列表视图消息控制的
SysListView32
,而
DirectUIHWND
不会对其作出反应)


如果我是国王,所有的文件列表都将始终是黑白的、等距文本。但我想那只是我;)正如汉斯·帕桑(Hans Passant)所说,它在Windows7中不起作用。您可以找到Windows资源管理器列表视图的句柄,并将其用作宏的最简单方式。如果您可以在其中添加一些闪烁文本,那就太好了too@David,是的,闪烁文本和跳转项目:-)我会试试…Windows 7中的ListView具有
DirectUIHWND
类名,并且不侦听列表视图消息,因此,在Windows 7中是不可能的。链接:访问被禁止,将plz重新加载到其他任何映像主机如果链接被禁止,只需在地址栏上单击“输入”即可加载带有被禁止错误的站点。禁止链接通常会检查您发送的位置,再次按地址栏上的enter键会诱使站点认为您是直接从站点访问链接:)现在查看问题中的图片,宏将不是正确的。它会更改列表视图中所有项目的颜色背景。但是,它仍然不能改变Windows7资源管理器中的列表视图不侦听列表视图消息的事实,因此在这种情况下不需要搜索正确的列表视图。