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);
}
}
それはトリックをするようです!Ty Guys!