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

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

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

可以更改 Windows 资源管理器中项目的背景颜色,例如 Xentient Labels应用程序有什么作用?是否可以在 Windows 7 中的 Delphi XE2 中执行此操作?

最佳答案

在 Windows 7 中不可能执行此操作,因为 Windows 资源管理器的 ListView 使用 DirectUIHWND 而不是 Windows XP 中的 SysListView32DirectUIHWND 类控件不会监听 ListView 消息,因此您不能使用 ListView_SetTextBkColor宏可以像在 Windows XP 上一样更改文本背景颜色。

通过下面的简单测试就可以验证一下。让我们在表单上添加一个编辑框和按钮。在该编辑框中输入 Windows 资源管理器的 ListView 控件的句柄(例如通过 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++ 屏幕截图显示了资源管理器 ListView 的类名(在 Windows XP 中,它是由标准 ListView 消息控制的 SysListView32,而 DirectUIHWND 则不能)不要对它们使用react)。

enter image description here

关于delphi - 有没有办法更改 Windows 7 中 Windows 资源管理器中项目的文本背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680899/

相关文章:

c++ - 使用 boost::posix_time::microsec_clock 的测量误差超过十微秒?

c++ - Windows sleep 不一致?

windows-7 - 在 Windows 7 中更改 exe 文件的图标

c++ - DialogBoxIndirect 创建的对话框比要求的大

google-chrome - 对于运行 Windows 7 的计算机,Chrome 上的 SSL 问题 NET::ERR_CERT_DATE_INVALID

windows - Watir::IE.attach(:title,/x/) 在 Win 7 IE8 上无法正常工作

Delphi如何避免嗅探器

delphi - 如何让 Delphi 2009 默认在第二个显示器中打开我的应用程序?

android - Delphi 10 Seattle - Android 项目构建失败

delphi - 如何关闭特定的 Delphi 警告和提示?