1 // Copyright © 2015, Peter Atashian 2 // Licensed under the MIT License <LICENSE.md> 3 //! Url History Interfaces 4 pub const STATURL_QUERYFLAG_ISCACHED: ::DWORD = 0x00010000; 5 pub const STATURL_QUERYFLAG_NOURL: ::DWORD = 0x00020000; 6 pub const STATURL_QUERYFLAG_NOTITLE: ::DWORD = 0x00040000; 7 pub const STATURL_QUERYFLAG_TOPLEVEL: ::DWORD = 0x00080000; 8 pub const STATURLFLAG_ISCACHED: ::DWORD = 0x00000001; 9 pub const STATURLFLAG_ISTOPLEVEL: ::DWORD = 0x00000002; 10 ENUM!{enum ADDURL_FLAG { 11 ADDURL_FIRST = 0, 12 ADDURL_ADDTOHISTORYANDCACHE = 0, 13 ADDURL_ADDTOCACHE = 1, 14 ADDURL_Max = 2147483647, 15 }} 16 pub type LPENUMSTATURL = *mut IEnumSTATURL; 17 STRUCT!{struct STATURL { 18 cbSize: ::DWORD, 19 pwcsUrl: ::LPWSTR, 20 pwcsTitle: ::LPWSTR, 21 ftLastVisited: ::FILETIME, 22 ftLastUpdated: ::FILETIME, 23 ftExpires: ::FILETIME, 24 dwFlags: ::DWORD, 25 }} 26 pub type LPSTATURL = *mut STATURL; 27 RIDL!{interface IEnumSTATURL(IEnumSTATURLVtbl): IUnknown(IUnknownVtbl) { 28 fn Next(&mut self, celt: ::ULONG, rgelt: LPSTATURL, pceltFetched: *mut ::ULONG) -> ::HRESULT, 29 fn Skip(&mut self, celt: ::ULONG) -> ::HRESULT, 30 fn Reset(&mut self) -> ::HRESULT, 31 fn Clone(&mut self, ppenum: *mut *mut ::IEnumSTATURL) -> ::HRESULT, 32 fn SetFilter(&mut self, poszFilter: ::LPCOLESTR, dwFlags: ::DWORD) -> ::HRESULT 33 }} 34 pub type LPURLHISTORYSTG = *mut IUrlHistoryStg; 35 RIDL!{interface IUrlHistoryStg(IUrlHistoryStgVtbl): IUnknown(IUnknownVtbl) { 36 fn AddUrl(&mut self, pocsUrl: ::LPCOLESTR) -> ::HRESULT, 37 fn DeleteUrl(&mut self, pocsUrl: ::LPCOLESTR, dwFlags: ::DWORD) -> ::HRESULT, 38 fn QueryUrl( 39 &mut self, pocsUrl: ::LPCOLESTR, dwFlags: ::DWORD, lpSTATURL: LPSTATURL 40 ) -> ::HRESULT, 41 fn BindToObject( 42 &mut self, pocsUrl: ::LPCOLESTR, riid: ::REFIID, ppvOut: *mut *mut ::c_void 43 ) -> ::HRESULT, 44 fn EnumUrls(&mut self, ppEnum: *mut *mut ::IEnumSTATURL) -> ::HRESULT 45 }} 46 pub type LPURLHISTORYSTG2 = *mut IUrlHistoryStg2; 47 RIDL!{interface IUrlHistoryStg2(IUrlHistoryStg2Vtbl): IUrlHistoryStg(IUrlHistoryStgVtbl) { 48 fn AddUrlAndNotify( 49 &mut self, pocsUrl: ::LPCOLESTR, pocsTitle: ::LPCOLESTR, dwFlags: ::DWORD, 50 fWriteHistory: ::BOOL, poctNotify: *mut ::IOleCommandTarget, punkISFolder: *mut ::IUnknown 51 ) -> ::HRESULT, 52 fn ClearHistory(&mut self) -> ::HRESULT 53 }} 54 pub type LPURLHISTORYNOTIFY = *mut IUrlHistoryNotify; 55 RIDL!{interface IUrlHistoryNotify(IUrlHistoryNotifyVtbl): 56 IOleCommandTarget(IOleCommandTargetVtbl) {}} 57