mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.8 KiB
74 lines
1.8 KiB
#ifndef FASSOC_H
|
|
#define FASSOC_H
|
|
|
|
STDAPI RevertLegacyVerb(LPCWSTR pszExt, LPCWSTR pszVerb);
|
|
STDAPI RevertLegacyClass(LPCWSTR pszExt);
|
|
STDAPI OpenHandlerKeyForExtension(LPCWSTR pszExt, LPCWSTR pszHandler, HKEY *phk);
|
|
STDAPI SHAssocEnumHandlers(LPCTSTR pszExtra, IEnumAssocHandlers **ppEnumHandler);
|
|
|
|
STDAPI CTaskEnumHKCR_Create(IRunnableTask **pptask);
|
|
STDAPI GetHandlerForBinary(LPCWSTR pszPath, LPWSTR pszHandler, DWORD cchHandler);
|
|
|
|
typedef enum
|
|
{
|
|
UASET_CLEAR = 0,
|
|
UASET_APPLICATION,
|
|
UASET_PROGID,
|
|
} UASET;
|
|
|
|
STDAPI UserAssocSet(UASET set, LPCWSTR pszExt, LPCWSTR pszSet);
|
|
|
|
// helper class for using IAssocHandler
|
|
// consumed by both fsassoc.cpp and openwith.cpp
|
|
class CAppInfo
|
|
{
|
|
public:
|
|
CAppInfo(IAssocHandler *pah)
|
|
: _pah(pah), _iIcon(-1)
|
|
{
|
|
_pah->AddRef();
|
|
}
|
|
|
|
~CAppInfo()
|
|
{
|
|
if (_pszName)
|
|
CoTaskMemFree(_pszName);
|
|
if (_pszUIName)
|
|
CoTaskMemFree(_pszUIName);
|
|
|
|
_pah->Release();
|
|
}
|
|
|
|
BOOL Init()
|
|
{
|
|
return SUCCEEDED(_pah->GetName(&_pszName))
|
|
&& SUCCEEDED(_pah->GetUIName(&_pszUIName))
|
|
&& -1 != IconIndex();
|
|
}
|
|
|
|
IAssocHandler *Handler() { return _pah; }
|
|
LPCWSTR Name() { return _pszName;}
|
|
LPCWSTR UIName() { return _pszUIName;}
|
|
int IconIndex()
|
|
{
|
|
CSmartCoTaskMem<WCHAR> pszIcon;
|
|
int iIndex;
|
|
if (_iIcon == -1 && SUCCEEDED(_pah->GetIconLocation(&pszIcon, &iIndex)))
|
|
{
|
|
_iIcon = Shell_GetCachedImageIndex(pszIcon, iIndex, 0);
|
|
if (-1 == _iIcon)
|
|
{
|
|
_iIcon = Shell_GetCachedImageIndex(c_szShell32Dll, II_APPLICATION, 0);
|
|
}
|
|
}
|
|
return _iIcon;
|
|
}
|
|
|
|
protected:
|
|
IAssocHandler *_pah;
|
|
LPWSTR _pszName;
|
|
LPWSTR _pszUIName;
|
|
int _iIcon;
|
|
};
|
|
|
|
#endif //FASSOC_H
|