gpt4 book ai didi

C++ 在所有空文件夹上显示一个图标

转载 作者:可可西里 更新时间:2023-11-01 10:01:26 25 4
gpt4 key购买 nike

我正在寻找 C++ 解决方案以在文件夹上显示图标覆盖。但我注意到,在 .NET\Java +Shell 中编写覆盖代码真的是个坏主意,因为在您使用资源管理器时一直调用解释器。

所以我有示例如何在包含一些文本的文件上添加图标:http://www.codeproject.com/KB/shell/overlayicon.aspx

我需要用我的图标标记所有空文件夹。我该怎么做?

将不胜感激。

最佳答案

您需要像该代码项目文章那样创建一个实现 IShellIconOverlayIdentifier 的 COM 对象。

您的 IsMemberOf 方法看起来像这样:

STDMETHODIMP YourClassThatImplementsIShellIconOverlayIdentifier::IsMemberOf(PCWSTR pwszPath,DWORD Attr)
{
if (!(Attr&FILE_ATTRIBUTE_DIRECTORY)) return S_FALSE; // Not a folder

UINT count = 0;
WIN32_FIND_DATAW wfd;
LPWSTR bufSpec = (LPWSTR) LocalAlloc(LPTR,(lstrlenW(pwszPath)+2+1)*sizeof(WCHAR));
if (bufSpec)
{
lstrcpyW(bufSpec,pwszPath);
PathAddBackslashW(bufSpec);
lstrcatW(bufSpec,L"*");
HANDLE hFind = FindFirstFileW(bufSpec,&wfd);
if (INVALID_HANDLE_VALUE!=hFind) do
{
++count;
} while( count<= 2 && FindNextFileW(hFind,&wfd) );
FindClose(hFind);
LocalFree(bufSpec);
}

return count==2 ? S_OK : S_FALSE;
}

(空文件夹包含两个特殊条目,“.”和“..”)

关于C++ 在所有空文件夹上显示一个图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com