visual studio - Trying to convert Delphi interface definition to C++ for VS 2008 -
i need convert interface defined in delpi c++. made small demo project contains of stuff shown below.
first delphi function person claims working on this thread:
function canfilebedeletedtorecyclebin(const afilename: unicodestring): boolean; var recyclebinmanager: irecyclebinmanager; begin olecheck(cocreateinstance(clsid_recyclebinmanager, nil, clsctx_inproc_server or clsctx_local_server, irecyclebinmanager, recyclebinmanager)); try result := recyclebinmanager.willrecycle(pwidechar(afilename)) = s_ok; recyclebinmanager := nil; end; end;
the rest of delphi interface definitions are here.
so came following c++ code unfortunately crashes. (again, let me repeat person wrote delphi version claims works fine him.)
hresult hr; coinitializeex(null, coinit_disable_ole1dde | coinit_apartmentthreaded); // {4a04656d-52aa-49de-8a09-cb178760e748} const clsid clsid_recyclebinmanager = {0x4a04656d, 0x52aa, 0x49de, {0x8a, 0x09, 0xcb, 0x17, 0x87, 0x60, 0xe7, 0x48}}; // {5869092d-8af9-4a6c-ae84-1f03be2246cc} const iid iid_irecyclebinmanager = {0x5869092d, 0x8af9, 0x4a6c, {0xae, 0x84, 0x1f, 0x03, 0xbe, 0x22, 0x46, 0xcc}}; irecyclebinmanager* pirbm = null; hr = cocreateinstance(clsid_recyclebinmanager, null, clsctx_inproc_server | clsctx_local_server, iid_irecyclebinmanager, (void**) &pirbm); // hr = shcocreateinstance(null, &clsid_recyclebinmanager, null, iid_irecyclebinmanager, (void **)&pirbm); if (succeeded(hr)) { //i crash on next line: //unhandled exception @ 0x76175ed2: 0xc0000005: access violation writing location 0xa84d252b. hr = pirbm->willrecycle(l"c:\\test del"); pirbm->release(); }
i tried best convert interface delphi (here) c++. here's got (after @remylebeau's suggestions, unfortunately still didn't work me.)
#pragma pack(push,1) struct deleteditem { dword dwfilesizelow; dword dwfilesizehigh; #pragma pack(push,8) filetime ftdeletiontime; #pragma pack(pop) wchar szoriginalpath[max_path]; wchar szdisplacedpath[max_path]; }; #pragma pack(pop) enum recyclebin_type : unsigned char { rbtype_volume, rbtype_knownfolder }; #if defined(__cplusplus) && !defined(cinterface) midl_interface("6e325f88-d12f-49e5-895b-8ec98630c021") ienumrecycleitems : public iunknown { public: //virtual hresult __stdcall next(unsigned celt, /* out */ tagdeleteditem &rgelt, unsigned &pceltfetched) = 0 ; virtual hresult stdmethodcalltype next( __rpc__in ulong celt, __rpc__deref_out deleteditem* rgelt, __rpc__deref_out ulong* pceltfetched ) = 0; //virtual hresult __stdcall skip(unsigned celt) = 0 ; virtual hresult stdmethodcalltype skip( __rpc__in ulong celt ) = 0; //virtual hresult __stdcall reset(void) = 0 ; virtual hresult stdmethodcalltype reset( void ) = 0; //virtual hresult __stdcall clone(/* out */ _di_ienumrecycleitems &ppenum) = 0 ; virtual hresult stdmethodcalltype clone( __rpc__deref_out ienumrecycleitems** ppenum ) = 0; }; midl_interface("0125e62f-8349-443a-854b-a55fb84cfa35") irecycle : public iunknown { public: //virtual hresult __stdcall compact(void) = 0 ; virtual hresult stdmethodcalltype compact(void) = 0; //virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ; virtual hresult stdmethodcalltype getfiledata( __rpc__in const wchar* pszpath, __rpc__deref_out deleteditem* lpdata ) = 0; //virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ; virtual hresult stdmethodcalltype getitemcount( __rpc__deref_out __int64* lpcount ) = 0; //virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ; virtual hresult stdmethodcalltype getusedspace( __rpc__deref_out __int64* lpusedspace ) = 0; //virtual hresult __stdcall isempty(void) = 0 ; virtual hresult stdmethodcalltype isempty( void ) = 0; //virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype purgeall( __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype purgeitems( __rpc__in const wchar* lpstritems, __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ; virtual hresult stdmethodcalltype suspendupdating( __rpc__in bool fsuspend ) = 0; //virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ; virtual hresult stdmethodcalltype recycleitem( __rpc__in const wchar* lpstritem, __rpc__in const dword dwattrs, __rpc__in const __int64 ifilesize, __rpc__deref_out ishellitem** psi ) = 0; //virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype restoreitems( __rpc__in const wchar* lpstritems, __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ; virtual hresult stdmethodcalltype isrecycled( __rpc__in const wchar* pszpath, __rpc__out pbool lprecycled ) = 0; //virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ; virtual hresult stdmethodcalltype enumitems( __rpc__in dword dwflags, __rpc__deref_out ienumrecycleitems** enm ) = 0; //virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ; virtual hresult stdmethodcalltype willrecycle( __rpc__in const wchar* pszpath ) = 0; }; midl_interface("f964ad97-96f4-48ab-b444-e8588bc7c7b3") irecyclebin : public iunknown { public: //virtual hresult __stdcall compact(void) = 0 ; virtual hresult stdmethodcalltype compact(void) = 0; //virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ; virtual hresult stdmethodcalltype getfiledata( __rpc__in const wchar* pszpath, __rpc__deref_out deleteditem* lpdata ) = 0; //virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ; virtual hresult stdmethodcalltype getitemcount( __rpc__deref_out __int64* lpcount ) = 0; //virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ; virtual hresult stdmethodcalltype getusedspace( __rpc__deref_out __int64* lpusedspace ) = 0; //virtual hresult __stdcall isempty(void) = 0 ; virtual hresult stdmethodcalltype isempty( void ) = 0; //virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype purgeall( __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype purgeitems( __rpc__in const wchar* lpstritems, __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ; virtual hresult stdmethodcalltype suspendupdating( __rpc__in bool fsuspend ) = 0; //virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ; virtual hresult stdmethodcalltype recycleitem( __rpc__in const wchar* lpstritem, __rpc__in const dword dwattrs, __rpc__in const __int64 ifilesize, __rpc__deref_out ishellitem** psi ) = 0; //virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype restoreitems( __rpc__in const wchar* lpstritems, __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ; virtual hresult stdmethodcalltype isrecycled( __rpc__in const wchar* pszpath, __rpc__out pbool lprecycled ) = 0; //virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ; virtual hresult stdmethodcalltype enumitems( __rpc__in dword dwflags, __rpc__deref_out ienumrecycleitems** enm ) = 0; //virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ; virtual hresult stdmethodcalltype willrecycle( __rpc__in const wchar* pszpath ) = 0; //virtual hresult __stdcall initialize(const tagrecyclebin_type rbtype, const system::widechar * pszid) = 0 ; virtual hresult stdmethodcalltype initialize( __rpc__in const recyclebin_type rbtype, __rpc__in const wchar* pszid ) = 0; //virtual hresult __stdcall gettypeid(/* out */ tagrecyclebin_type &rbtype, system::widechar * &pszid) = 0 ; virtual hresult stdmethodcalltype gettypeid( __rpc__deref_out recyclebin_type* rbtype, __rpc__in const wchar* pszid ) = 0; //virtual hresult __stdcall getidlist(/* out */ winapi::shlobj::pitemidlist &ppidl) = 0 ; virtual hresult stdmethodcalltype getidlist( __rpc__deref_out lpitemidlist *ppidl ) = 0; //virtual hresult __stdcall getlocation(system::widechar * pszpathbuffer, unsigned cchmax) = 0 ; virtual hresult stdmethodcalltype getlocation( __rpc__in wchar* pszpathbuffer, __rpc__in uint cchmax ) = 0; //virtual hresult __stdcall getmaxcapacityrange(/* out */ __int64 &lpmin, /* out */ __int64 &lpmax) = 0 ; virtual hresult stdmethodcalltype getmaxcapacityrange( __rpc__deref_out __int64* lpmin, __rpc__deref_out __int64* lpmax ) = 0; //virtual hresult __stdcall getmaxcapacity(/* out */ __int64 &lpcapacity) = 0 ; virtual hresult stdmethodcalltype getmaxcapacity( __rpc__deref_out __int64* lpcapacity ) = 0; //virtual hresult __stdcall setmaxcapacity(const __int64 lpcapacity) = 0 ; virtual hresult stdmethodcalltype setmaxcapacity( __rpc__in const __int64 lpcapacity ) = 0; //virtual hresult __stdcall getpurgeondelete(/* out */ bool &fnukeondelete) = 0 ; virtual hresult stdmethodcalltype getpurgeondelete( __rpc__deref_out bool* fnukeondelete ) = 0; //virtual hresult __stdcall setpurgeondelete(const bool fnukeondelete) = 0 ; virtual hresult stdmethodcalltype setpurgeondelete( __rpc__in const bool fnukeondelete ) = 0; }; midl_interface("5869092d-8af9-4a6c-ae84-1f03be2246cc") irecyclebinmanager : public iunknown { public: //virtual hresult __stdcall compact(void) = 0 ; virtual hresult stdmethodcalltype compact(void) = 0; //virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ; virtual hresult stdmethodcalltype getfiledata( __rpc__in const wchar* pszpath, __rpc__deref_out deleteditem* pdeleteditem ) = 0; //virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ; virtual hresult stdmethodcalltype getitemcount( __rpc__deref_out __int64* lpcount ) = 0; //virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ; virtual hresult stdmethodcalltype getusedspace( __rpc__deref_out __int64* lpusedspace ) = 0; //virtual hresult __stdcall isempty(void) = 0 ; virtual hresult stdmethodcalltype isempty( void ) = 0; //virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype purgeall( __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype purgeitems( __rpc__in const wchar* lpstritems, __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ; virtual hresult stdmethodcalltype suspendupdating( __rpc__in bool fsuspend ) = 0; //virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ; virtual hresult stdmethodcalltype recycleitem( __rpc__in const wchar* lpstritem, __rpc__in const dword dwattrs, __rpc__in const __int64 ifilesize, __rpc__deref_out ishellitem** psi ) = 0; //virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult stdmethodcalltype restoreitems( __rpc__in const wchar* lpstritems, __rpc__in ifileoperation* pfo ) = 0; //virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ; virtual hresult stdmethodcalltype isrecycled( __rpc__in const wchar* pszpath, __rpc__out pbool lprecycled ) = 0; //virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ; virtual hresult stdmethodcalltype enumitems( __rpc__in dword dwflags, __rpc__deref_out ienumrecycleitems** enm ) = 0; //virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ; virtual hresult stdmethodcalltype willrecycle( __rpc__in const wchar* pszpath ) = 0; //virtual hresult __stdcall delaycompaction(const bool fdelay) = 0 ; virtual hresult stdmethodcalltype delaycompaction( __rpc__in const bool fdelay ) = 0; //virtual hresult __stdcall getrecyclebincount(/* out */ int &icount) = 0 ; virtual hresult stdmethodcalltype getrecyclebincount( __rpc__deref_out int* icount ) = 0; //virtual hresult __stdcall getrecyclebinat(const int index, const guid &iid, /* out */ void *ppv) = 0 ; virtual hresult stdmethodcalltype getrecyclebinat( __rpc__in const int index, const guid *iid, __rpc__deref_out void **ppv ) = 0; //virtual hresult __stdcall getrecyclebin(const system::widechar * pszpath, const guid &iid, /* out */ void *ppv) = 0 ; virtual hresult stdmethodcalltype getrecyclebin( __rpc__in const wchar* pszrootpath, const guid *iid, __rpc__deref_out void **ppv ) = 0; //virtual hresult __stdcall refresh(void) = 0 ; virtual hresult stdmethodcalltype refresh( void ) = 0; }; #endif
can take look. missing there?
rather translating interface code delphi c++, can take original code russian site, put in .pas file as-is, , add file c++ project. when build project (or compile .pas file itself), c++ .hpp file generated you, can #include
c++ code.
doing way, following code works fine me in c++builder xe2 on windows 7:
#include "urecyclebinstuff.hpp" #include <comobj.hpp> bool __fastcall canfilebedeletedtorecyclebin(const unicodestring &afilename) { delphiinterface<irecyclebinmanager> recyclebinmanager; olecheck(cocreateinstance(clsid_recyclebinmanager, null, clsctx_inproc_server | clsctx_local_server, iid_irecyclebinmanager, (void**)&recyclebinmanager)); return (recyclebinmanager->willrecycle(afilename.c_str()) == s_ok); } void __fastcall tform1::button1click(tobject *sender) { if (canfilebedeletedtorecyclebin(l"c:\\test del")) showmessage("can deleted"); // <-- code makes here else showmessage("can not deleted"); }
here generated .hpp file looks like:
// codegear c++builder // copyright (c) 1995, 2011 embarcadero technologies, inc. // rights reserved // (do not edit: machine generated header) 'urecyclebinstuff.pas' rev: 23.00 (win32) #ifndef urecyclebinstuffhpp #define urecyclebinstuffhpp #pragma delphiheader begin #pragma option push #pragma option -w- // warnings off #pragma option -vx // zero-length empty class member functions #pragma pack(push,8) #include <system.hpp> // pascal unit #include <sysinit.hpp> // pascal unit #include <winapi.windows.hpp> // pascal unit #include <winapi.messages.hpp> // pascal unit #include <winapi.shlobj.hpp> // pascal unit //-- user supplied ----------------------------------------------------------- namespace urecyclebinstuff { //-- type declarations ------------------------------------------------------- #pragma option push -b- enum tagrecyclebin_type : unsigned char { rbtype_volume, rbtype_knownfolder }; #pragma option pop typedef tagrecyclebin_type trecyclebintype; struct tagdeleteditem; typedef tagdeleteditem *pdeleteditem; #pragma pack(push,1) struct declspec_drecord tagdeleteditem { public: unsigned dwfilesizelow; unsigned dwfilesizehigh; #pragma pack(push,8) _filetime ftdeletiontime; #pragma pack(pop) system::staticarray<system::widechar, 260> szoriginalpath; system::staticarray<system::widechar, 260> szdisplacedpath; }; #pragma pack(pop) typedef tagdeleteditem tdeleteditem; __interface ienumrecycleitems; typedef system::delphiinterface<ienumrecycleitems> _di_ienumrecycleitems; __interface interface_uuid("{6e325f88-d12f-49e5-895b-8ec98630c021}") ienumrecycleitems : public system::iinterface { public: virtual hresult __stdcall next(unsigned celt, /* out */ tagdeleteditem &rgelt, unsigned &pceltfetched) = 0 ; virtual hresult __stdcall skip(unsigned celt) = 0 ; virtual hresult __stdcall reset(void) = 0 ; virtual hresult __stdcall clone(/* out */ _di_ienumrecycleitems &ppenum) = 0 ; }; __interface irecycle; typedef system::delphiinterface<irecycle> _di_irecycle; __interface interface_uuid("{0125e62f-8349-443a-854b-a55fb84cfa35}") irecycle : public system::iinterface { public: virtual hresult __stdcall compact(void) = 0 ; virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ; virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ; virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ; virtual hresult __stdcall isempty(void) = 0 ; virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ; virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ; virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ; virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ; virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ; virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ; }; __interface irecyclebin; typedef system::delphiinterface<irecyclebin> _di_irecyclebin; __interface interface_uuid("{f964ad97-96f4-48ab-b444-e8588bc7c7b3}") irecyclebin : public system::iinterface { public: virtual hresult __stdcall compact(void) = 0 ; virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ; virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ; virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ; virtual hresult __stdcall isempty(void) = 0 ; virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ; virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ; virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ; virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ; virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ; virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ; virtual hresult __stdcall initialize(const tagrecyclebin_type rbtype, const system::widechar * pszid) = 0 ; virtual hresult __stdcall gettypeid(/* out */ tagrecyclebin_type &rbtype, system::widechar * &pszid) = 0 ; virtual hresult __stdcall getidlist(/* out */ winapi::shlobj::pitemidlist &ppidl) = 0 ; virtual hresult __stdcall getlocation(system::widechar * pszpathbuffer, unsigned cchmax) = 0 ; virtual hresult __stdcall getmaxcapacityrange(/* out */ __int64 &lpmin, /* out */ __int64 &lpmax) = 0 ; virtual hresult __stdcall getmaxcapacity(/* out */ __int64 &lpcapacity) = 0 ; virtual hresult __stdcall setmaxcapacity(const __int64 lpcapacity) = 0 ; virtual hresult __stdcall getpurgeondelete(/* out */ bool &fnukeondelete) = 0 ; virtual hresult __stdcall setpurgeondelete(const bool fnukeondelete) = 0 ; }; __interface irecyclebinmanager; typedef system::delphiinterface<irecyclebinmanager> _di_irecyclebinmanager; __interface interface_uuid("{5869092d-8af9-4a6c-ae84-1f03be2246cc}") irecyclebinmanager : public system::iinterface { public: virtual hresult __stdcall compact(void) = 0 ; virtual hresult __stdcall getfiledata(const system::widechar * pszpath, /* out */ tagdeleteditem &lpdata) = 0 ; virtual hresult __stdcall getitemcount(/* out */ __int64 &lpcount) = 0 ; virtual hresult __stdcall getusedspace(/* out */ __int64 &lpusedspace) = 0 ; virtual hresult __stdcall isempty(void) = 0 ; virtual hresult __stdcall purgeall(_di_ifileoperation pfo) = 0 ; virtual hresult __stdcall purgeitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult __stdcall suspendupdating(bool fsuspend) = 0 ; virtual hresult __stdcall recycleitem(const system::widechar * lpstritem, const unsigned dwattrs, const __int64 ifilesize, /* out */ _di_ishellitem &psi) = 0 ; virtual hresult __stdcall restoreitems(const system::widechar * lpstritems, _di_ifileoperation pfo) = 0 ; virtual hresult __stdcall isrecycled(const system::widechar * pszpath, pbool lprecycled) = 0 ; virtual hresult __stdcall enumitems(unsigned dwflags, /* out */ _di_ienumrecycleitems &enumrecycleitems) = 0 ; virtual hresult __stdcall willrecycle(const system::widechar * pszpath) = 0 ; virtual hresult __stdcall delaycompaction(const bool fdelay) = 0 ; virtual hresult __stdcall getrecyclebincount(/* out */ int &icount) = 0 ; virtual hresult __stdcall getrecyclebinat(const int index, const guid &iid, /* out */ void *ppv) = 0 ; virtual hresult __stdcall getrecyclebin(const system::widechar * pszpath, const guid &iid, /* out */ void *ppv) = 0 ; virtual hresult __stdcall refresh(void) = 0 ; }; //-- var, const, procedure --------------------------------------------------- extern package guid iid_ienumrecycleitems; extern package guid iid_irecycle; extern package guid iid_irecyclebin; extern package guid iid_irecyclebinmanager; extern package guid clsid_recyclebinmanager; } /* namespace urecyclebinstuff */ #if !defined(delphiheader_no_implicit_namespace_use) && !defined(no_using_namespace_urecyclebinstuff) using namespace urecyclebinstuff; #endif #pragma pack(pop) #pragma option pop #pragma delphiheader end. //-- end unit ---------------------------------------------------------------- #endif // urecyclebinstuffhpp
if compare .hpp file's irecyclebinmanager
manual irecyclebinmanager
, there discrepancies in code. such as, have recycleitem()
, isrecycled()
methods named purgeitems()
, restoreitems()
instead, , have 2 restoreitems()
methods.
Comments
Post a Comment