diff options
Diffstat (limited to 'private/ole32/ih/hkole32x.h')
-rw-r--r-- | private/ole32/ih/hkole32x.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/private/ole32/ih/hkole32x.h b/private/ole32/ih/hkole32x.h new file mode 100644 index 000000000..895c0e59c --- /dev/null +++ b/private/ole32/ih/hkole32x.h @@ -0,0 +1,134 @@ +//+------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1994. +// +// File: hkOle32x.h +// +// Contents: OLE 32 Extensions Header File +// +// Functions: +// +// History: 29-Nov-94 Garry Lenz Created +// +//-------------------------------------------------------------------------- +#ifndef _HKOLE32X_H_ +#define _HKOLE32X_H_ + +#include <Windows.h> +#include <TChar.h> + +interface IHookOleObject; + +STDAPI CoGetCurrentLogicalThreadId(GUID* pguidLogicalThreadId); +STDAPI GetHookInterface(IHookOleObject** pIHookOleObject); +STDAPI EnableHookObject(BOOL fNewState, BOOL* pfPrevState); + +#define GUID_STRING_LENGTH 39 +#define CLSID_STRING_LENGTH 39 +#define IID_STRING_LENGTH 39 +#define PROGID_STRING_LENGTH 40 + + + +// used by INITHOOKOBJECT + +inline HRESULT CLSIDFromStringA(LPSTR lpsz, LPCLSID lpclsid) +{ + LPWSTR lpwsz = new WCHAR[(strlen(lpsz)+1)]; + MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, lpsz, -1, lpwsz, lstrlenA(lpsz)+1); + HRESULT hr = CLSIDFromString(lpwsz, lpclsid); + delete lpwsz; + return hr; +} + + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +#ifdef OLETOOLS +// these are needed only by the tools, not internally by ole32. we ifdef +// it here to maintain source compatibility. + +inline BOOL IsOle32ProcDefined(LPCSTR pszProcName) +{ + BOOL fResult = FALSE; + HINSTANCE hInstOle32 = LoadLibrary(__T("OLE32.DLL")); + if (hInstOle32) + { + if (GetProcAddress(hInstOle32, pszProcName) != NULL) + fResult = TRUE; + FreeLibrary(hInstOle32); + } + return fResult; +} + +inline HINSTANCE CoLoadLibrary(LPSTR lpszLibName, BOOL bAutoFree) +{ + LPWSTR lpwsz = new WCHAR[(strlen(lpszLibName)+1)]; + MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, lpszLibName, -1, lpwsz, lstrlenA(lpszLibName)+1); + HINSTANCE hInstance = CoLoadLibrary(lpwsz, bAutoFree); + delete lpwsz; + return hInstance; +} + +inline HRESULT IIDFromString(LPSTR lpsz, LPIID lpiid) +{ + LPWSTR lpwsz = new WCHAR[(strlen(lpsz)+1)]; + MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, lpsz, -1, lpwsz, lstrlenA(lpsz)+1); + HRESULT hr = IIDFromString(lpwsz, lpiid); + delete lpwsz; + return hr; +} + +inline HRESULT StringFromIID(REFIID riid, LPSTR FAR* lplpsz) +{ + HRESULT hr = StringFromIID(riid, (LPWSTR*)lplpsz); + if (hr == S_OK) + { + WCHAR wsz[IID_STRING_LENGTH]; + lstrcpyW(wsz, (LPWSTR)*lplpsz); + WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK, wsz, -1, *lplpsz, lstrlenW(wsz), NULL, NULL); + } + return hr; +} + +inline HRESULT StringFromCLSID(REFCLSID rclsid, LPSTR FAR* lplpsz) +{ + HRESULT hr = StringFromCLSID(rclsid, (LPWSTR*)lplpsz); + if (hr == S_OK) + { + WCHAR wsz[CLSID_STRING_LENGTH]; + lstrcpyW(wsz, (LPWSTR)*lplpsz); + WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK, wsz, -1, *lplpsz, lstrlenW(wsz), NULL, NULL); + } + return hr; +} + +inline HRESULT ProgIDFromCLSID(REFCLSID rclsid, LPSTR FAR* lplpsz) +{ + HRESULT hr = ProgIDFromCLSID(rclsid, (LPWSTR*)lplpsz); + if (hr == S_OK) + { + WCHAR wsz[PROGID_STRING_LENGTH]; + lstrcpyW(wsz, (LPWSTR)*lplpsz); + WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK, wsz, -1, *lplpsz, lstrlenW(wsz), NULL, NULL); + } + return hr; +} + +inline HRESULT CLSIDFromProgID(LPCSTR lpszProgID, LPCLSID lpclsid) +{ + LPWSTR lpwsz = new WCHAR[(strlen(lpszProgID)+1)]; + MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, lpszProgID, -1, lpwsz, lstrlenA(lpszProgID)+1); + HRESULT hr = CLSIDFromProgID(lpwsz, lpclsid); + delete lpwsz; + return hr; +} + + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// +#endif + +#endif // _HKOLE32X_H_ |