C++ MFC에서 문자열을 찾기 위해 전체 Windows 제어판을 검색해야합니다 (예 : 시작 메뉴 또는 제어판 탐색기에서 Windows 검색). 아무도 도와 줄 수 없습니까?Windows 제어판을 프로그래밍 방식으로 쿼리하는 방법?
나는 ...
편집을 이미 제어판 가상 폴더 내에서 검색을 시도했지만 작동하지 않습니다 : 그것은 지금 작품! 하지만
이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);
}
}
트릭을 할 것 같다 (SO 64에 86 나던 작업) 적절한 plataform (86 또는 64)에 compliled 경우! 타이 얘들 아!
내가 애플릿의 이름이나 설명을 serach 얼마나? 모든 .cpl을 하나씩로드하여 이름이나 설명이 일치하는지 확인하십시오. –
그건 한 가지 방법입니다. 당신의 목표에 따라, 아마 당신은'system ("grep pattern % SYSTEM %/*. cpl");'? – wallyk
모든 .cpl 파일이 % system %에있는 것은 아니므로, 사람들은 요즘 레지스트리에 등록해야합니다 ... – Anders