Здравствуйте, idiMAN, Вы писали:
MAN>2) Как сделать чтобы при открытии моей виртуальной папки, отображающей компьютер, происходило перенаправление на браузинг этого компьютера, т.е. открывалось окно \\Computer
#include <ShlObj.h>
//////////////////////////////////////////////////////////////////////////
int main(int _c, char *argv[])
{
__Verify(SUCCEEDED(OleInitialize(NULL)));
{
CComPtr<IShellFolder> PtrIShellFolder;
HRESULT hr = SHGetDesktopFolder(&PtrIShellFolder);
if (SUCCEEDED(hr))
{
ULONG nEaten = 0;
ULONG nAttributes = 0;
CComPtr<IMalloc> PtrIMalloc;
__Verify(SUCCEEDED(SHGetMalloc(&PtrIMalloc)));
LPITEMIDLIST pidl;
hr = PtrIShellFolder->ParseDisplayName(NULL,
NULL,
L"\\\\computer_of_your_domain",
&nEaten,
&pidl,
&nAttributes);
if (SUCCEEDED(hr))
{
// На клик можно отдавать указатель на этот интерфейс или пидл полученый выше
CComPtr<IShellFolder> PtrINetFolder;
hr = PtrIShellFolder->BindToObject(pidl,
NULL,
IID_IShellFolder,
(PVOID*)&PtrINetFolder);
if (SUCCEEDED(hr))
{
CComPtr<IEnumIDList> PtrIEnumIDLIST;
hr = PtrINetFolder->EnumObjects(NULL,
SHCONTF_FOLDERS|SHCONTF_NONFOLDERS,
&PtrIEnumIDLIST);
if (SUCCEEDED(hr))
{
ULONG nFetch;
LPITEMIDLIST pidl2;
while(PtrIEnumIDLIST->Next(1, &pidl2, &nFetch) == S_OK)
{
STRRET str;
if (SUCCEEDED(PtrINetFolder->GetDisplayNameOf(pidl2,
SHGDN_NORMAL,
&str)))
{
if (str.uType == STRRET_CSTR)
{
_tprintf(__T("%s\n"), str.cStr);
}
else if (str.uType == STRRET_WSTR)
{
_tprintf(__T("%ls\n"), str.pOleStr);
PtrIMalloc->Free(str.pOleStr);
}
}
PtrIMalloc->Free(pidl2);
}
}
}
PtrIMalloc->Free(pidl);
}
}
}
CoUninitialize();
}
Надеюсь поможет