gpt4 book ai didi

c++ - 如何以编程方式查询 Windows 控制面板?

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:16 26 4
gpt4 key购买 nike

我需要在 C++ MFC 中搜索整个 Windows 控制面板中的字符串(就像 Windows 从开始菜单或控制面板资源管理器中搜索一样),有人可以帮助我吗?

我已经尝试在控制面板虚拟文件夹中进行搜索,但没有成功...

编辑:现在可以使用了!但前提是编译到正确的平台(x86 或 x64)(x86 在 x64 SO 上不起作用)

void CSearchView::BuildControlPanelCache()
{
CComPtr<IShellFolder> pDesktop;
SHGetDesktopFolder(&pDesktop);
PIDLIST_ABSOLUTE path;
SHGetKnownFolderIDList(FOLDERID_ControlPanelFolder,0,NULL,&path);
CComPtr<IShellFolder> pFolder;
pDesktop->BindToObject(path,NULL,IID_IShellFolder,(void**)&pFolder);

ILFree(path);

CComPtr<IEnumIDList> pEnum;
if (pFolder->EnumObjects(NULL,SHCONTF_NONFOLDERS|SHCONTF_FOLDERS,&pEnum)!=S_OK) pEnum=NULL;
if (!pEnum) return;

PITEMID_CHILD pidl;
while (pEnum->Next(1,&pidl,NULL)==S_OK)
{
STRRET strDispName;

if( pFolder->GetDisplayNameOf(pidl, SHGDN_NORMAL, &strDispName) == S_OK )
{
CComPtr<IQueryInfo> pLink;
if (SUCCEEDED(pFolder->GetUIObjectOf(NULL,1,(PCITEMID_CHILD*) &pidl,IID_IQueryInfo,NULL,(void**)&pLink)))
{
TCHAR *pwszTip;
pLink->GetInfoTip( 0, &pwszTip );
if ( pwszTip )
{
SHFree( pwszTip );
}
//pLink->Release();
}
}

ILFree(pidl);
}
}

这似乎是个窍门!伙计们!

最佳答案

尝试搜索 %SYSTEM%\*.cpl。在某些系统上,%CSIDL_CONTROLS%\*.cpl

关于c++ - 如何以编程方式查询 Windows 控制面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233812/

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