diff --git a/include/shlwapi.h b/include/shlwapi.h index 7e8170e0ca6..cfb9b91738d 100644 --- a/include/shlwapi.h +++ b/include/shlwapi.h @@ -169,6 +169,86 @@ BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL); BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL); #define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue) +int WINAPI SHRegGetIntW(HKEY,LPCWSTR,int); + +/* IQueryAssociation and helpers */ +enum +{ + ASSOCF_INIT_NOREMAPCLSID = 0x001, /* Don't map clsid->progid */ + ASSOCF_INIT_BYEXENAME = 0x002, /* .exe name given */ + ASSOCF_OPEN_BYEXENAME = 0x002, /* Synonym */ + ASSOCF_INIT_DEFAULTTOSTAR = 0x004, /* Use * as base */ + ASSOCF_INIT_DEFAULTTOFOLDER = 0x008, /* Use folder as base */ + ASSOCF_NOUSERSETTINGS = 0x010, /* No HKCU reads */ + ASSOCF_NOTRUNCATE = 0x020, /* Don't truncate return */ + ASSOCF_VERIFY = 0x040, /* Verify data */ + ASSOCF_REMAPRUNDLL = 0x080, /* Get rundll args */ + ASSOCF_NOFIXUPS = 0x100, /* Don't fixup errors */ + ASSOCF_IGNOREBASECLASS = 0x200, /* Dont read baseclass */ +}; + +typedef DWORD ASSOCF; + +typedef enum +{ + ASSOCSTR_COMMAND = 1, /* Verb command */ + ASSOCSTR_EXECUTABLE, /* .exe from command string */ + ASSOCSTR_FRIENDLYDOCNAME, /* Friendly doc type name */ + ASSOCSTR_FRIENDLYAPPNAME, /* Friendly .exe name */ + ASSOCSTR_NOOPEN, /* noopen value */ + ASSOCSTR_SHELLNEWVALUE, /* Use shellnew key */ + ASSOCSTR_DDECOMMAND, /* DDE command template */ + ASSOCSTR_DDEIFEXEC, /* DDE command for process create */ + ASSOCSTR_DDEAPPLICATION, /* DDE app name */ + ASSOCSTR_DDETOPIC, /* DDE topic */ + ASSOCSTR_INFOTIP, /* Infotip */ + ASSOCSTR_QUICKTIP, /* Quick infotip */ + ASSOCSTR_TILEINFO, /* Properties for tileview */ + ASSOCSTR_CONTENTTYPE, /* Mimetype */ + ASSOCSTR_DEFAULTICON, /* Icon */ + ASSOCSTR_SHELLEXTENSION, /* GUID for shell extension handler */ + ASSOCSTR_MAX +} ASSOCSTR; + +typedef enum +{ + ASSOCKEY_SHELLEXECCLASS = 1, /* Key for ShellExec */ + ASSOCKEY_APP, /* Application */ + ASSOCKEY_CLASS, /* Progid or class */ + ASSOCKEY_BASECLASS, /* Base class */ + ASSOCKEY_MAX +} ASSOCKEY; + +typedef enum +{ + ASSOCDATA_MSIDESCRIPTOR = 1, /* Component descriptor */ + ASSOCDATA_NOACTIVATEHANDLER, /* Don't activate */ + ASSOCDATA_QUERYCLASSSTORE, /* Look in Class Store */ + ASSOCDATA_HASPERUSERASSOC, /* Use user association */ + ASSOCDATA_EDITFLAGS, /* Edit flags */ + ASSOCDATA_VALUE, /* pszExtra is value */ + ASSOCDATA_MAX +} ASSOCDATA; + +typedef enum +{ + ASSOCENUM_NONE +} ASSOCENUM; + +HRESULT WINAPI AssocCreate(CLSID,REFIID,LPVOID*); + +HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD); +HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD); +#define AssocQueryString WINELIB_NAME_AW(AssocQueryString) + +HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,LPDWORD); +HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,LPDWORD); +#define AssocQueryStringByKey WINELIB_NAME_AW(AssocQueryStringByKey) + +HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,PHKEY); +HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,PHKEY); +#define AssocQueryKey WINELIB_NAME_AW(AssocQueryKey) + #endif /* NO_SHLWAPI_REG */ @@ -535,8 +615,8 @@ HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD); #define STIF_DEFAULT 0x0L #define STIF_SUPPORT_HEX 0x1L -BOOL WINAPI ChrCmpIA (WORD w1, WORD w2); -BOOL WINAPI ChrCmpIW (WCHAR w1, WCHAR w2); +BOOL WINAPI ChrCmpIA (WORD,WORD); +BOOL WINAPI ChrCmpIW (WCHAR,WCHAR); #define ChrCmpI WINELIB_NAME_AW(ChrCmpI) INT WINAPI StrCSpnA(LPCSTR,LPCSTR); @@ -555,6 +635,8 @@ LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT); LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT); #define StrCatBuff WINELIB_NAME_AW(StrCatBuff) +DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR); + LPSTR WINAPI StrChrA(LPCSTR,WORD); LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR); #define StrChr WINELIB_NAME_AW(StrChr) @@ -580,6 +662,8 @@ LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int); #define StrCpyN WINELIB_NAME_AW(StrCpyN) #define StrNCpy WINELIB_NAME_AW(StrCpyN) +INT WINAPI StrCmpLogicalW(LPCWSTR,LPCWSTR); + INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT); INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT); #define StrCmpN WINELIB_NAME_AW(StrCmpN) @@ -594,6 +678,10 @@ LPSTR WINAPI StrDupA(LPCSTR); LPWSTR WINAPI StrDupW(LPCWSTR); #define StrDup WINELIB_NAME_AW(StrDup) +HRESULT WINAPI SHStrDupA(LPCSTR,WCHAR**); +HRESULT WINAPI SHStrDupW(LPCWSTR,WCHAR**); +#define SHStrDup WINELIB_NAME_AW(SHStrDup) + LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT); LPWSTR WINAPI StrFormatByteSizeW (DWORD,LPWSTR,UINT); #define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize) @@ -654,23 +742,46 @@ BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*); BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*); #define StrToIntEx WINELIB_NAME_AW(StrToIntEx) +BOOL WINAPI StrToInt64ExA(LPCSTR,DWORD,LONGLONG*); +BOOL WINAPI StrToInt64ExW(LPCWSTR,DWORD,LONGLONG*); +#define StrToIntEx64 WINELIB_NAME_AW(StrToIntEx64) + BOOL WINAPI StrTrimA(LPSTR,LPCSTR); BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR); #define StrTrim WINELIB_NAME_AW(StrTrim) -INT WINAPI wvnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, va_list arglist); -INT WINAPI wvnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, va_list arglist); +INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,va_list); +INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,va_list); #define wvnsprintf WINELIB_NAME_AW(wvnsprintf) -INT WINAPIV wnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, ...); -INT WINAPIV wnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, ...); +INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...); +INT WINAPIV wnsprintfW(LPWSTR,INT,LPCWSTR, ...); #define wnsprintf WINELIB_NAME_AW(wnsprintf) +HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*); + +BOOL IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int); +BOOL IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int); +#define IntlStrEqWorker WINELIB_NAME_AW(IntlStrEqWorker) + +#define IntlStrEqNA(s1,s2,n) IntlStrEqWorkerA(TRUE,s1,s2,n) +#define IntlStrEqNW(s1,s2,n) IntlStrEqWorkerW(TRUE,s1,s2,n) +#define IntlStrEqN WINELIB_NAME_AW(IntlStrEqN) + +#define IntlStrEqNIA(s1,s2,n) IntlStrEqWorkerA(FALSE,s1,s2,n) +#define IntlStrEqNIW(s1,s2,n) IntlStrEqWorkerW(FALSE,s1,s2,n) +#define IntlStrEqNI WINELIB_NAME_AW(IntlStrEqNI) + /* Undocumented */ struct _STRRET; struct _ITEMIDLIST; -HRESULT WINAPI StrRetToBufA(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPSTR dest, DWORD len); -HRESULT WINAPI StrRetToBufW(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPWSTR dest, DWORD len); + +HRESULT WINAPI StrRetToStrA(struct _STRRET*,const struct _ITEMIDLIST*,LPSTR*); +HRESULT WINAPI StrRetToStrW(struct _STRRET*,const struct _ITEMIDLIST*,LPWSTR*); +#define StrRetToStr WINELIB_NAME_AW(StrRetToStr) + +HRESULT WINAPI StrRetToBufA(struct _STRRET*,const struct _ITEMIDLIST*,LPSTR,DWORD); +HRESULT WINAPI StrRetToBufW(struct _STRRET*,const struct _ITEMIDLIST*,LPWSTR,DWORD); #define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf) #endif /* NO_SHLWAPI_STRFCNS */ @@ -695,14 +806,57 @@ VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD); IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD); IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD); -#define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream) +#define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream2) /* Uses version 2 */ IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD); IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD); #define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2) +HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,IStream**); +HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,IStream**); +#define SHCreateStreamOnFile WINELIB_NAME_AW(SHCreateStreamOnFile) + +HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,IStream*,IStream**); + #endif /* NO_SHLWAPI_STREAM */ +/* SHAutoComplete flags */ +#define SHACF_DEFAULT 0x00000000 +#define SHACF_FILESYSTEM 0x00000001 +#define SHACF_URLHISTORY 0x00000002 +#define SHACF_URLMRU 0x00000004 +#define SHACF_URLALL (SHACF_URLHISTORY|SHACF_URLMRU) +#define SHACF_USETAB 0x00000008 +#define SHACF_FILESYS_ONLY 0x00000010 +#define SHACF_FILESYS_DIRS 0x00000020 +#define SHACF_AUTOSUGGEST_FORCE_ON 0x10000000 +#define SHACF_AUTOSUGGEST_FORCE_OFF 0x20000000 +#define SHACF_AUTOAPPEND_FORCE_ON 0x40000000 +#define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000 + +HRESULT WINAPI SHAutoComplete(HWND,DWORD); + +/* Threads */ +#if defined(IUnknown_IMETHODS) +HRESULT WINAPI SHGetThreadRef(IUnknown**); +HRESULT WINAPI SHSetThreadRef(IUnknown*); +#endif +HRESULT WINAPI SHReleaseThreadRef(); + +/* SHCreateThread flags */ +#define CTF_INSIST 0x01 /* Allways call */ +#define CTF_THREAD_REF 0x02 /* Hold thread ref */ +#define CTF_PROCESS_REF 0x04 /* Hold process ref */ +#define CTF_COINIT 0x08 /* Startup COM first */ +#define CTF_FREELIBANDEXIT 0x10 /* Hold DLL ref */ +#define CTF_REF_COUNTED 0x20 /* Thread is ref counted */ +#define CTF_WAIT_ALLOWCOM 0x40 /* Allow marshalling */ + +BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE); + +#if defined(IBindCtx_IMETHODS) +BOOL WINAPI SHSkipJunction(IBindCtx*,const CLSID*); +#endif /* Version Information */ @@ -719,6 +873,22 @@ typedef struct _DllVersionInfo { typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *); +typedef struct _DLLVERSIONINFO2 { + DLLVERSIONINFO info1; + DWORD dwFlags; /* Reserved */ + ULONGLONG ullVersion; /* 16 bits each for Major, Minor, Build, QFE */ +} DLLVERSIONINFO2; + +#define DLLVER_MAJOR_MASK 0xFFFF000000000000 +#define DLLVER_MINOR_MASK 0x0000FFFF00000000 +#define DLLVER_BUILD_MASK 0x00000000FFFF0000 +#define DLLVER_QFE_MASK 0x000000000000FFFF + +#define MAKEDLLVERULL(mjr, mnr, bld, qfe) (((ULONGLONG)(mjr)<< 48)| \ + ((ULONGLONG)(mnr)<< 32) | ((ULONGLONG)(bld)<< 16) | (ULONGLONG)(qfe)) + +HRESULT WINAPI DllInstall(BOOL,LPCWSTR); + #ifdef __cplusplus } /* extern "C" */ #endif /* defined(__cplusplus) */