Пример #1
0
__inline HRESULT
SHLoadLibraryFromKnownFolder(REFKNOWNFOLDERID aFolderId, DWORD aMode,
                             REFIID riid, void **ppv)
{
    *ppv = NULL;
    IShellLibrary *plib;
    HRESULT hr = CoCreateInstance(CLSID_ShellLibrary, NULL,
                                  CLSCTX_INPROC_SERVER,
                                  IID_PPV_ARGS(&plib));
    if (SUCCEEDED(hr)) {
        hr = plib->LoadLibraryFromKnownFolder(aFolderId, aMode);
        if (SUCCEEDED(hr)) {
            hr = plib->QueryInterface(riid, ppv);
        }
        plib->Release();
    }
    return hr;
}
// @pymethod |PyIShellLibrary|LoadLibraryFromKnownFolder|Initializes library from a known folder
PyObject *PyIShellLibrary::LoadLibraryFromKnownFolder(PyObject *self, PyObject *args)
{
	IShellLibrary *pISL = GetI(self);
	if ( pISL == NULL )
		return NULL;
	IID Library;
	DWORD Mode;
	// @pyparm <o PyIID>|Library||Known folder id, shell.FOLDERID_*
	// @pyparm int|Mode||Access mode, combination of storagecon.STGM_* flags
	if ( !PyArg_ParseTuple(args, "O&k:LoadLibraryFromKnownFolder",
		PyWinObject_AsIID, &Library, &Mode))
		return NULL;
	HRESULT hr;
	PY_INTERFACE_PRECALL;
	hr = pISL->LoadLibraryFromKnownFolder(Library, Mode);
	PY_INTERFACE_POSTCALL;

	if ( FAILED(hr) )
		return PyCom_BuildPyException(hr, pISL, IID_IShellLibrary );
	Py_INCREF(Py_None);
	return Py_None;
}