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

4

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

是否可以像Xentient Labels应用程序一样更改Windows资源管理器中项目的背景颜色?在Windows 7中,从Delphi XE2是否可以实现?


1
如果我是国王,所有的文件列表都应该是黑白色、等宽字体。但这只是我的个人喜好而已 ;) - paulsm4
正如Hans Passant所说,在这里,它在Windows 7中不起作用。您可以找到Windows Explorer列表视图的句柄,并使用最简单的方式ListView_SetTextBkColor宏。 - TLama
4
如果您能在其中添加一些闪烁的文本,那将非常棒。 - David Heffernan
2
@David,是的,闪烁的文本和跳动的项目 :-) 我会尝试一下... - TLama
1
Windows 7中的ListView具有DirectUIHWND类名,不会侦听列表视图消息,因此在Windows 7中不可能。 - TLama
显示剩余2条评论
2个回答

11

由于Windows 7中Windows Explorer的列表视图使用DirectUIHWND而不是Windows XP中的SysListView32,因此无法实现此功能。 DirectUIHWND类控件不会监听列表视图消息,因此您不能像在Windows XP上那样使用ListView_SetTextBkColor宏更改文本背景颜色。

通过以下简单测试,您可以验证它。让我们在表单上放置一个编辑框和按钮。在该编辑框中输入Windows Explorer的列表视图控件的句柄(例如通过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中,它是由标准列表视图消息控制的,而则无法对其做出反应)。

enter image description here


现在看问题的图片,ListView_SetTextBkColor 宏不是正确的选择。它会改变列表视图中所有项目的背景颜色。但是,在Windows 7 Explorer中,列表视图仍然不会监听列表视图消息,因此在这种情况下没有必要寻找正确的解决方法。 - TLama

2

2
链接:访问被禁止,请重新加载到其他图像主机。 - Gu.
1
如果链接被禁止,只需在地址栏上点击回车,即可加载出现禁止错误的网站。禁止链接通常会检查您发送请求的位置,再次在地址栏上按下回车键,可以欺骗该网站认为您是直接从该网站访问链接的 :) - user1175743

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接