STDMETHODIMP PyGShellBrowser::GetControlWindow( /* [in] */ UINT id, /* [out] */ HWND * phwnd) { static const char *method_name = "GetControlWindow"; PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy(method_name, &result, "I", id); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (!PyWinObject_AsHANDLE(result, (HANDLE *)phwnd)) hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE(method_name); Py_DECREF(result); return hr; }
STDMETHODIMP PyGOleInPlaceSiteWindowless::OnDefWindowMessage( /* [in] */ UINT msg, /* [in] */ WPARAM wParam, /* [in] */ LPARAM lParam, /* [out] */ LRESULT __RPC_FAR * plResult) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("OnDefWindowMessage", &result, "iil", msg, wParam, lParam); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (!PyArg_Parse(result, "l" , plResult)) return PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); Py_DECREF(result); return hr; }
STDMETHODIMP PyGMachineDebugManager::AddApplication( /* [in] */ IRemoteDebugApplication __RPC_FAR * pda, /* [out] */ DWORD __RPC_FAR * pdwAppCookie) { PY_GATEWAY_METHOD; PyObject *obpda = PyCom_PyObjectFromIUnknown(pda, IID_IRemoteDebugApplication, TRUE); PyObject *result; HRESULT hr=InvokeViaPolicy("AddApplication", &result, "O", obpda); Py_XDECREF(obpda); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (!PyArg_Parse(result, "i" , pdwAppCookie)) return PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); Py_DECREF(result); return hr; }
// @pymethod |PyIEmptyVolumeCache|Purge| STDMETHODIMP PyGEmptyVolumeCache::Purge( /* [in] */ DWORDLONG dwlSpaceToFree, /* [in] */ IEmptyVolumeCacheCallBack * picb) { PY_GATEWAY_METHOD; PyObject *obdwlSpaceToFree = PyLong_FromUnsignedLongLong(dwlSpaceToFree); if (obdwlSpaceToFree==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE("Purge"); PyObject *obpicb; obpicb = PyCom_PyObjectFromIUnknown(picb, IID_IEmptyVolumeCacheCallBack, TRUE); if (!obpicb) { Py_DECREF(obdwlSpaceToFree); return MAKE_PYCOM_GATEWAY_FAILURE_CODE("Purge"); } return InvokeViaPolicy("Purge", NULL, "NN", obdwlSpaceToFree, obpicb); }
STDMETHODIMP PyGConnectionPointContainer::FindConnectionPoint(REFIID riid, IConnectionPoint **ppCP) { PY_GATEWAY_METHOD; if (ppCP==NULL) return E_POINTER; *ppCP = NULL; PyObject *obIID = PyWinObject_FromIID(riid); PyObject *result; HRESULT hr = InvokeViaPolicy("FindConnectionPoint", &result, "O", obIID); Py_XDECREF(obIID); if (FAILED(hr)) return hr; if (result != Py_None && !PyCom_InterfaceFromPyObject(result, IID_IConnectionPoint, (void **)ppCP)) hr = PyCom_SetCOMErrorFromPyException(GetIID()); Py_XDECREF(result); return (hr==S_OK && *ppCP==NULL) ? CONNECT_E_NOCONNECTION : hr; }
STDMETHODIMP PyGShellItemArray::GetAttributes( /* [in] */ SIATTRIBFLAGS dwAttribFlags, /* [in] */ SFGAOF sfgaoMask, /* [out] */ SFGAOF * psfgaoAttribs) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("GetAttributes", &result, "kk", dwAttribFlags, sfgaoMask); if (FAILED(hr)) return hr; *psfgaoAttribs = PyLong_AsUnsignedLongMask(result); hr = PyCom_SetAndLogCOMErrorFromPyException("GetAttributes", IID_IShellItemArray); Py_DECREF(result); return hr; }
STDMETHODIMP PyGActiveScriptError::GetExceptionInfo(EXCEPINFO FAR *pexcepinfo) { if (pexcepinfo==NULL) return E_POINTER; PY_GATEWAY_METHOD; PyObject *result; HRESULT hr = InvokeViaPolicy("GetExceptionInfo", &result, NULL); if (FAILED(hr)) return hr; if (!PyCom_ExcepInfoFromPyObject(result, pexcepinfo)) hr = E_FAIL; Py_DECREF(result); return hr; }
STDMETHODIMP PyGShellBrowser::SendControlMsg( /* [in] */ UINT id, /* [in] */ UINT uMsg, /* [in] */ WPARAM wParam, /* [in] */ LPARAM lParam, /* [in] */ LRESULT * pret) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("SendControlMsg", &result, "iiNN", id, uMsg, PyWinObject_FromPARAM(wParam), PyWinObject_FromPARAM(lParam)); if (PyInt_Check(result) || PyLong_Check(result)) PyWinLong_AsULONG_PTR(result, (ULONG_PTR *)pret); Py_DECREF(result); return hr; }
STDMETHODIMP PyGPersistFolder2::GetCurFolder( /* [out] */ PIDLIST_ABSOLUTE * ppidl) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("GetCurFolder", &result); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (!PyObject_AsPIDL(result, ppidl, TRUE)) hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("GetCurFolder"); else hr = *ppidl ? S_OK : S_FALSE; // this is what the docs say! Py_DECREF(result); return hr; }
STDMETHODIMP PyGPropertyStorage::WritePropertyNames( /* [in] */ ULONG cpropid, /* [size_is][in] */ const PROPID rgpropid[], /* [size_is][in] */ const LPOLESTR rglpwstrName[]) { PY_GATEWAY_METHOD; { // Scope so Tmp objects are DECREF'ed before lock released TmpPyObject obpropids = PyWinObject_FromPROPIDs(rgpropid, cpropid); if (obpropids==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE("WritePropertyNames"); TmpPyObject obnames = PyWinObject_FromWCHARArray(rglpwstrName, cpropid); if (obnames==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE("WritePropertyNames"); return InvokeViaPolicy("WritePropertyNames", NULL, "OO", obpropids, obnames); } }
STDMETHODIMP PyGDocHostUIHandler::GetHostInfo( /* [out][in] */ DOCHOSTUIINFO * pInfo) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("GetHostInfo", &result, ""); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params PyObject *obhostcss, *obhostns; if (!PyArg_ParseTuple(result, "iiOO", &pInfo->dwFlags, &pInfo->dwDoubleClick, &obhostcss, &obhostns) || !PyWinObject_AsTaskAllocatedWCHAR(obhostcss, &pInfo->pchHostCss, TRUE, NULL) || !PyWinObject_AsTaskAllocatedWCHAR(obhostns, &pInfo->pchHostNS, TRUE, NULL)) hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("GetHostInfo"); Py_DECREF(result); return hr; }
STDMETHODIMP PyGPersistFile::GetCurFile( /* [out] */ LPOLESTR __RPC_FAR * ppszFileName) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("GetCurFile", &result); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params PyObject *obppszFileName; if (!PyArg_Parse(result, "O" , &obppszFileName)) hr = PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); else if (!PyWinObject_AsTaskAllocatedWCHAR(obppszFileName, ppszFileName)) hr = PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); Py_DECREF(result); return hr; }
STDMETHODIMP PyGCategoryProvider::GetCategoryForSCID( /* [in] */ __RPC__in const SHCOLUMNID * pscid, /* [out] */ __RPC__out GUID * pguid) { PY_GATEWAY_METHOD; PyObject *obpscid = PyObject_FromSHCOLUMNID(pscid); if (obpscid==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE("GetCategoryForSCID"); PyObject *result; HRESULT hr=InvokeViaPolicy("GetCategoryForSCID", &result, "(O)", obpscid); Py_DECREF(obpscid); if (FAILED(hr)) return hr; if (!PyWinObject_AsIID(result, pguid)) hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("GetCategoryForSCID"); Py_DECREF(result); return hr; }
STDMETHODIMP PyGTransferSource::RemoveItem( /* [in] */ IShellItem * psiSource, /* [in] */ TRANSFER_SOURCE_FLAGS flags) { PY_GATEWAY_METHOD; PyObject *obpsiSource, *result; obpsiSource = PyCom_PyObjectFromIUnknown(psiSource, IID_IShellItem, TRUE); HRESULT hr=InvokeViaPolicy("RemoveItem", &result, "Oi", obpsiSource, flags); Py_XDECREF(obpsiSource); if (FAILED(hr)) return hr; hr = PyLong_AsLong(result); if (hr == -1 && PyErr_Occurred()) hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("RemoveItem"); return hr; }
STDMETHODIMP PyGActiveScriptSite::GetLCID( /* [out] */ LCID FAR *plcid) { PY_GATEWAY_METHOD; if ( plcid == NULL ) return E_POINTER; PyObject *result; HRESULT hr = InvokeViaPolicy("GetLCID", &result, NULL); if (FAILED(hr)) return hr; *plcid = PyInt_AsLong(result); Py_DECREF(result); return PyCom_HandlePythonFailureToCOM(); }
STDMETHODIMP PyGDebugDocumentTextExternalAuthor::GetFileName( /* [out] */ BSTR __RPC_FAR * pbstrShortName) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("GetFileName", &result); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params PyObject *obpbstrShortName; if (!PyArg_Parse(result, "O" , &obpbstrShortName)) return PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); BOOL bPythonIsHappy = TRUE; if (!PyCom_BstrFromPyObject(obpbstrShortName, pbstrShortName)) bPythonIsHappy = FALSE; if (!bPythonIsHappy) hr = PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); Py_DECREF(result); return hr; }
STDMETHODIMP PyGDebugDocumentInfo::GetDocumentClassId( /* [out] */ GUID __RPC_FAR * pclsidDocument) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("GetDocumentClassId", &result); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params PyObject *obpclsidDocument; if (!PyArg_Parse(result, "O" , &obpclsidDocument)) return PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); BOOL bPythonIsHappy = TRUE; if (!PyWinObject_AsIID(obpclsidDocument, pclsidDocument)) bPythonIsHappy = FALSE; if (!bPythonIsHappy) hr = PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); Py_DECREF(result); return hr; }
STDMETHODIMP PyGShellView::AddPropertySheetPages( /* [in] */ DWORD dwReserved, /* [in] */ LPFNSVADDPROPSHEETPAGE pfn, /* [in] */ LPARAM lparam) { PY_GATEWAY_METHOD; // *** The input argument pfn of type "LPFNSVADDPROPSHEETPAGE" was not processed *** // - Please ensure this conversion function exists, and is appropriate // - The type 'LPFNSVADDPROPSHEETPAGE' (pfn) is unknown. PyObject *obpfn = Py_None; Py_INCREF(Py_None); if (obpfn==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE("AddPropertySheetPages"); HRESULT hr=InvokeViaPolicy("AddPropertySheetPages", NULL, "lON", dwReserved, obpfn, PyWinObject_FromPARAM(lparam)); Py_DECREF(obpfn); return hr; }
STDMETHODIMP PyGShellBrowser::InsertMenusSB( /* [in] */ HMENU hmenuShared, /* [out][in] */ LPOLEMENUGROUPWIDTHS lpMenuWidths) { static const char *method_name = "InsertMenusSB"; PY_GATEWAY_METHOD; PyObject *oblpMenuWidths = PyObject_FromOLEMENUGROUPWIDTHS(lpMenuWidths); if (oblpMenuWidths==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE(method_name); PyObject *result; HRESULT hr=InvokeViaPolicy(method_name, &result, "NO", PyWinLong_FromHANDLE(hmenuShared), oblpMenuWidths); Py_DECREF(oblpMenuWidths); if (FAILED(hr)) return hr; PyObject_AsOLEMENUGROUPWIDTHS(result, lpMenuWidths); Py_DECREF(result); return PyCom_SetCOMErrorFromPyException(GetIID()); }
STDMETHODIMP PyGShellView::TranslateAccelerator( /* [in] */ MSG * pmsg) { PY_GATEWAY_METHOD; PyObject *obpmsg = PyObject_FromMSG(pmsg); if (obpmsg==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE("TranslateAccelerator"); PyObject *result; HRESULT hr=InvokeViaPolicy("TranslateAccelerator", &result, "(O)", obpmsg); Py_DECREF(obpmsg); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (PyInt_Check(result) || PyLong_Check(result)) hr = PyInt_AsLong(result); Py_DECREF(result); return hr; }
STDMETHODIMP PyGEnumConnectionPoints::Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ IConnectionPoint **rgVar, /* [out] */ ULONG __RPC_FAR *pCeltFetched) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr = InvokeViaPolicy("Next", &result, "i", celt); if ( FAILED(hr) ) return hr; if ( !PySequence_Check(result) ) goto error; int len; len = PyObject_Length(result); if ( len == -1 ) goto error; if ( len > (int)celt) len = celt; if ( pCeltFetched ) *pCeltFetched = len; int i; for ( i = 0; i < len; ++i ) { PyObject *ob = PySequence_GetItem(result, i); if ( ob == NULL ) goto error; if ( !PyCom_InterfaceFromPyObject(ob, IID_IConnectionPoint, reinterpret_cast<void **>(&rgVar[i]), FALSE) ) { Py_DECREF(result); return PyCom_SetCOMErrorFromPyException(IID_IEnumConnectionPoints); } } Py_DECREF(result); return len < (int)celt ? S_FALSE : S_OK; error: PyErr_Clear(); // just in case Py_DECREF(result); return PyCom_SetCOMErrorFromSimple(E_FAIL, IID_IEnumConnectionPoints); }
STDMETHODIMP PyGShellItem::Compare( /* [in] */ IShellItem * psi, /* [in] */ SICHINTF hint, /* [out] */ int * piOrder) { PY_GATEWAY_METHOD; PyObject *obpsi; obpsi = PyCom_PyObjectFromIUnknown(psi, IID_IShellItem, TRUE); PyObject *result; HRESULT hr=InvokeViaPolicy("Compare", &result, "Ok", obpsi, hint); Py_XDECREF(obpsi); if (FAILED(hr)) return hr; *piOrder = PyInt_AsLong(result); hr = PyCom_SetAndLogCOMErrorFromPyException("Compare", IID_IShellItem); Py_DECREF(result); return hr; }
STDMETHODIMP PyGDebugDocumentText::GetPositionOfContext( /* [in] */ IDebugDocumentContext __RPC_FAR * psc, /* [out] */ ULONG __RPC_FAR * pcCharacterPosition, /* [out] */ ULONG __RPC_FAR * cNumChars) { PY_GATEWAY_METHOD; PyObject *obpsc; obpsc = PyCom_PyObjectFromIUnknown(psc, IID_IDebugDocumentContext, TRUE); PyObject *result; HRESULT hr=InvokeViaPolicy("GetPositionOfContext", &result, "O", obpsc); Py_XDECREF(obpsc); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (!PyArg_ParseTuple(result, "ii" , pcCharacterPosition, cNumChars)) return PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); Py_DECREF(result); return hr; }
STDMETHODIMP PyGDebugDocumentText::GetLineOfPosition( /* [in] */ ULONG cCharacterPosition, /* [out] */ ULONG __RPC_FAR * pcLineNumber, /* [out] */ ULONG __RPC_FAR * pcCharacterOffsetInLine) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("GetLineOfPosition", &result, "i", cCharacterPosition); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params ULONG cLineNumber, cCharacterOffsetInLine; if (!PyArg_ParseTuple(result, "ii" , &cLineNumber, &cCharacterOffsetInLine)) return PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); if (pcLineNumber) *pcLineNumber = cLineNumber; if (pcCharacterOffsetInLine) *pcCharacterOffsetInLine = cCharacterOffsetInLine; Py_DECREF(result); return hr; }
// Std delegation STDMETHODIMP PyGEnumResources::Next( /* [in] */ ULONG celt, /* [out] */ SHELL_ITEM_RESOURCE *rgVar, /* [out] */ ULONG *pCeltFetched) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr = InvokeViaPolicy("Next", &result, "i", celt); if ( FAILED(hr) ) return hr; if ( !PySequence_Check(result) ) goto error; int len; len = PyObject_Length(result); if ( len == -1 ) goto error; if ( len > (int)celt) len = celt; if ( pCeltFetched ) *pCeltFetched = len; int i; for ( i = 0; i < len; ++i ) { PyObject *ob = PySequence_GetItem(result, i); if ( ob == NULL ) goto error; if ( !PyWinObject_AsSHELL_ITEM_RESOURCE(ob, &rgVar[i])) { Py_DECREF(result); return PyCom_SetCOMErrorFromPyException(IID_IEnumResources); } } Py_DECREF(result); return len < (int)celt ? S_FALSE : S_OK; error: PyErr_Clear(); // just in case Py_DECREF(result); return PyCom_SetCOMErrorFromSimple(E_FAIL, IID_IEnumResources, "Next() did not return a sequence of objects"); }
STDMETHODIMP PyGEnumIDList::Next( /* [in] */ ULONG celt, /* [length_is][size_is][out] */ LPITEMIDLIST *pi, /* [out] */ ULONG __RPC_FAR *pCeltFetched) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr = InvokeViaPolicy("Next", &result, "i", celt); if ( FAILED(hr) ) return hr; if ( !PySequence_Check(result) ) goto error; int len; len = PyObject_Length(result); if ( len == -1 ) goto error; if ( len > (int)celt) len = celt; if ( pCeltFetched ) *pCeltFetched = len; int i; for ( i = 0; i < len; ++i ) { PyObject *ob = PySequence_GetItem(result, i); if ( ob == NULL ) goto error; if ( !PyObject_AsPIDL(ob, &pi[i] )) { Py_DECREF(result); return PyCom_SetCOMErrorFromPyException(IID_IEnumIDList); } } Py_DECREF(result); return len < (int)celt ? S_FALSE : S_OK; error: PyErr_Clear(); // just in case Py_DECREF(result); return PyCom_SetCOMErrorFromSimple(E_FAIL, IID_IEnumIDList, "Next() did not return a sequence of objects"); }
STDMETHODIMP PyGDataObject::GetCanonicalFormatEtc( /* [unique][in] */ FORMATETC * pformatectIn, /* [out] */ FORMATETC * pformatetcOut) { static const char *method_name = "GetCanonicalFormatEtc"; PY_GATEWAY_METHOD; PyObject *obpformatectIn = PyObject_FromFORMATETC(pformatectIn); if (obpformatectIn==NULL) return MAKE_PYCOM_GATEWAY_FAILURE_CODE(method_name); PyObject *result; HRESULT hr=InvokeViaPolicy(method_name, &result, "(O)", obpformatectIn); Py_DECREF(obpformatectIn); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params PyObject_AsFORMATETC(result, pformatetcOut); Py_DECREF(result); return hr; }
STDMETHODIMP PyGLockBytes::Stat( /* [out] */ STATSTG __RPC_FAR * pstatstg, /* [in] */ DWORD grfStatFlag) { PY_GATEWAY_METHOD; PyObject *result; HRESULT hr=InvokeViaPolicy("Stat", &result, "i", grfStatFlag); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params PyObject *obpstatstg; if (!PyArg_Parse(result, "O" , &obpstatstg)) return PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); BOOL bPythonIsHappy = TRUE; if (!PyCom_PyObjectAsSTATSTG(obpstatstg, pstatstg, 0/*flags*/)) bPythonIsHappy = FALSE; if (!bPythonIsHappy) hr = PyCom_HandlePythonFailureToCOM(/*pexcepinfo*/); Py_DECREF(result); return hr; }
STDMETHODIMP PyGDocHostUIHandler::FilterDataObject( /* [in] */ IDataObject * pDO, /* [out] */ IDataObject ** ppDORet) { PY_GATEWAY_METHOD; if (ppDORet==NULL) return E_POINTER; PyObject *obpDO; obpDO = PyCom_PyObjectFromIUnknown(pDO, IID_IDataObject, TRUE); PyObject *result; HRESULT hr=InvokeViaPolicy("FilterDataObject", &result, "O", obpDO); Py_XDECREF(obpDO); if (FAILED(hr)) return hr; if (!PyCom_InterfaceFromPyInstanceOrObject(result, IID_IDataObject, (void **)ppDORet, TRUE /* bNoneOK */)) hr = MAKE_PYCOM_GATEWAY_FAILURE_CODE("FilterDataObject"); Py_DECREF(result); return hr; }
STDMETHODIMP PyGExplorerCommand::GetToolTip( /* [unique][in] */ IShellItemArray * psiItemArray, /* [string][out] */ LPWSTR * ppszInfotip) { PY_GATEWAY_METHOD; PyObject *obpsiItemArray; obpsiItemArray = PyCom_PyObjectFromIUnknown(psiItemArray, IID_IShellItemArray, TRUE); PyObject *result; HRESULT hr=InvokeViaPolicy("GetToolTip", &result, "O", obpsiItemArray); Py_XDECREF(obpsiItemArray); if (FAILED(hr)) return hr; // Process the Python results, and convert back to the real params if (!PyWinObject_AsPfnAllocatedWCHAR(result, PyShell_AllocMem, ppszInfotip)) hr = PyCom_SetAndLogCOMErrorFromPyException("GetToolTip", IID_IExplorerCommand); Py_DECREF(result); return hr; }