113 lines
3.8 KiB
C++
113 lines
3.8 KiB
C++
// --------------------------------------------------------------------------------
|
|
// tstdrv.cpp
|
|
// --------------------------------------------------------------------------------
|
|
#include <objbase.h>
|
|
#include <stdio.h>
|
|
#include <shlobj.h>
|
|
|
|
#include "shellstg.clsid.h"
|
|
#include "ishellstg.h"
|
|
|
|
#include "davinet.clsid.h"
|
|
#include "idavinet.h"
|
|
|
|
#include "davstore.clsid.h"
|
|
#include "idavstore.h"
|
|
|
|
#include "strutil.h"
|
|
|
|
// --------------------------------------------------------------------------------
|
|
// main
|
|
// --------------------------------------------------------------------------------
|
|
void __cdecl main(INT argc, CHAR * argv[])
|
|
{
|
|
// locals
|
|
HRESULT hr;
|
|
IDavTransport* pDavTransport = NULL;
|
|
IShellStorage* pShellStg = NULL;
|
|
IDavStorage* pStorage = NULL;
|
|
IShellFolder* pshfDesk = NULL;
|
|
LPITEMIDLIST pidl = NULL;
|
|
LPWSTR pwsz = NULL;
|
|
|
|
|
|
CoInitialize(NULL);
|
|
hr = ::CoCreateInstance(CLSID_CShellStorage,
|
|
NULL,
|
|
CLSCTX_INPROC_SERVER,
|
|
IID_IShellStorage,
|
|
(LPVOID*)&pShellStg);
|
|
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = pShellStg->Init(NULL, L"http://aidanl:8088/dav/aidanl/", TRUE);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = SHGetDesktopFolder(&pshfDesk);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
for (INT i = 1; i < argc; i++)
|
|
{
|
|
pwsz = ConvertToUnicode(CP_ACP, argv[i]);
|
|
if (!pwsz)
|
|
{
|
|
hr = E_OUTOFMEMORY;
|
|
}
|
|
else
|
|
{
|
|
hr = pshfDesk->ParseDisplayName(NULL, NULL, pwsz, NULL, &pidl, NULL);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = pShellStg->AddIDListReference((LPVOID*)&pidl, 1, TRUE);
|
|
}
|
|
|
|
free(pwsz);
|
|
|
|
if (FAILED(hr))
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = ::CoCreateInstance(CLSID_CDavStorage,
|
|
NULL,
|
|
CLSCTX_INPROC_SERVER,
|
|
IID_IDavStorage,
|
|
(LPVOID*)&pStorage);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = ::CoCreateInstance(CLSID_DAVInet,
|
|
NULL,
|
|
CLSCTX_INPROC_SERVER,
|
|
IID_IDavTransport,
|
|
(LPVOID*)&pDavTransport);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = pDavTransport->SetAuthentication(L"aidan", L"grendel");
|
|
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = pStorage->Init(L"http://aidanl:8088/dav/aidanl/", pDavTransport);
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = pShellStg->CopyTo(0, NULL, 0, pStorage);
|
|
}
|
|
}
|
|
}
|
|
|
|
pDavTransport->Release();
|
|
}
|
|
pStorage->Release();
|
|
}
|
|
}
|
|
}
|
|
|
|
pShellStg->Release();
|
|
}
|
|
|
|
CoUninitialize();
|
|
}
|