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

Gu.*_*u. 4 delphi winapi windows-explorer windows-7 delphi-xe2

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

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

TLa*_*ama 11

这是不可能的,因为Windows资源管理器的列表视图使用要做到这一点在Windows 7 DirectUIHWND不会SysListView32因为它是在Windows XP中.本DirectUIHWND类控制不听列表视图的信息,所以你不能使用ListView_SetTextBkColor宏来更改文本背景色为你可以在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;
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述