【问题标题】:Is there a way to change text background color of the items in Windows Explorer in Windows 7?有没有办法在 Windows 7 中更改 Windows 资源管理器中项目的文本背景颜色?
【发布时间】:2012-05-27 16:43:13
【问题描述】:

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

【问题讨论】:

  • 如果我是国王,所有文件列表将始终为黑白等宽文本。但这只是我,我猜;)
  • 正如 Hans Passant 所说的here,它在 Windows 7 中不起作用。您会找到 Windows 资源管理器列表视图的句柄,并使用 ListView_SetTextBkColor 宏作为最简单的方法。
  • 如果你也能在里面添加一些闪烁的文字就好了
  • @David,是的,闪烁的文本和跳跃的项目 :-) 我会试试...
  • Windows 7 中的ListView 具有DirectUIHWND 类名并且不监听列表视图消息,因此在Windows 7 中不可能

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


【解决方案1】:

您不能为文本着色,但可以添加叠加层,例如 TortoiseSVN/CVS/Git/Groove/Dropbox/等。可以。

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

【讨论】:

  • 链接:禁止访问,请重新加载 plz 到其他任何图片主机
  • 如果链接被禁止,只需在出现禁止错误的站点的地址栏上单击输入即可加载。禁止链接通常会检查您发送的位置,通过再次按地址栏上的回车键,您会欺骗网站认为您是直接从该网站访问链接:)
【解决方案2】:

不可能在 Windows 7 中执行此操作,因为 Windows 资源管理器的列表视图使用 DirectUIHWND 而不是 Windows XP 中的 SysListView32DirectUIHWND 类控件不监听列表视图消息,因此您不能像在 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 中,它是由标准列表视图消息控制的 SysListView32DirectUIHWND 不会对它们做出反应)。

【讨论】:

  • 现在查看问题中的图片,ListView_SetTextBkColor 宏不是正确的。它更改列表视图中所有项目的颜色背景。但是它仍然没有改变 Windows 7 资源管理器中的列表视图不侦听列表视图消息的事实,因此在这种情况下无需搜索正确的消息。
猜你喜欢
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 2020-12-02
相关资源
最近更新 更多