You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.7 KiB
130 lines
3.7 KiB
#ifndef __UTIL_H
|
|
#define __UTIL_H
|
|
|
|
#define FT2LL(x) (((LONGLONG)((x).dwLowDateTime)) | (((LONGLONG)((x).dwHighDateTime))<<32))
|
|
|
|
UINT HashKey(LPCWSTR pwszName);
|
|
|
|
BOOL IsSysKeyMessage (MSG *pMsg); // Is this message an ALT key?
|
|
BOOL IsGlobalKeyMessage(MSG *pMsg); // Is this message a key message that we want to handle globally?
|
|
int IsVK_TABCycler (MSG *pMsg);
|
|
|
|
inline BSTR VariantToBSTR(VARIANT &v) { return (v.vt == VT_BSTR) ? v.bstrVal : NULL; }
|
|
inline long VariantToI4(VARIANT &v) { return (v.vt == VT_I4) ? v.lVal : 0; }
|
|
|
|
void SetExceptionInfo(EXCEPINFO *pexcepinfo, WORD wCode);
|
|
|
|
void AsciiToLower(LPWSTR pwsz);
|
|
|
|
#define MAX_URL_STRING INTERNET_MAX_URL_LENGTH
|
|
|
|
#define DEFINE_BEHAVIOR_CREATE_INSTANCE(cls) \
|
|
static HRESULT CreateInstance(IElementBehavior **ppBehavior) \
|
|
{ \
|
|
HRESULT hr = E_OUTOFMEMORY; \
|
|
\
|
|
cls * pB = new cls(); \
|
|
if(pB) \
|
|
{ \
|
|
hr = pB->QueryInterface( \
|
|
IID_IElementBehavior, (void **) ppBehavior); \
|
|
pB->Release(); \
|
|
} \
|
|
return hr; \
|
|
}
|
|
|
|
typedef struct _SA_BSTR
|
|
{
|
|
ULONG cb;
|
|
WCHAR wsz[MAX_URL_STRING];
|
|
} SA_BSTR;
|
|
|
|
typedef HRESULT (STDMETHODCALLTYPE *PFNCREATEFACTORY)(IClassFactory **ppClassFactory);
|
|
|
|
struct CThreadData
|
|
{
|
|
CThreadData();
|
|
~CThreadData();
|
|
|
|
CComPtr<ITypeLib> m_spTypeLib;
|
|
DWORD m_dwProxyFactory;
|
|
|
|
static DWORD s_dwTlsIndex;
|
|
static BOOL TlsSetValue(CThreadData *ptd);
|
|
static CThreadData *TlsGetValue();
|
|
static BOOL HaveData();
|
|
static BOOL TlsAlloc();
|
|
static BOOL TlsFree();
|
|
};
|
|
|
|
HRESULT PIDLToVariant(LPCITEMIDLIST pidl, CComVariant& v);
|
|
|
|
BOOL IsGlobalOffline(void);
|
|
void SetGlobalOffline(BOOL fOffline);
|
|
|
|
HRESULT SaveDIBToFile(HBITMAP hbm, WCHAR * pszPath);
|
|
|
|
void BoundWindowRectToMonitor(HWND hwnd, RECT *pRect);
|
|
void CascadeWindowRectOnMonitor(HWND hwnd, RECT *pRect);
|
|
BOOL IsWindowOverlayed(HWND hwndMatch, LONG x, LONG y);
|
|
|
|
|
|
class CInterfaceMarshal
|
|
{
|
|
public:
|
|
~CInterfaceMarshal();
|
|
|
|
BOOL Init(void);
|
|
HRESULT Marshal(REFIID riid, IUnknown *pUnk);
|
|
HRESULT UnMarshal(REFIID riid, void ** ppv);
|
|
HRESULT WaitForSignal(HANDLE hSignallingThread, DWORD dwSecondsTimeout);
|
|
|
|
protected:
|
|
HANDLE m_hEvent;
|
|
IStream *m_pStream;
|
|
HRESULT m_hresMarshal;
|
|
|
|
void Signal(void);
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
interface IUniformResourceLocatorW;
|
|
|
|
HRESULT MarsNavigateShortcut(IUnknown *pBrowser, IUniformResourceLocatorW* pUrl, LPCWSTR pszPath);
|
|
HRESULT MarsNavigateShortcut(IUnknown *pTarget, LPCWSTR lpszPath);
|
|
HRESULT MarsVariantToPath(VARIANT &varItem, CComBSTR &strPath);
|
|
|
|
BOOL PathIsURLFileW(LPCWSTR lpszPath);
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
class CRegistryKey : public CRegKey
|
|
{
|
|
public:
|
|
LONG SetLongValue(LONG lValue, LPCWSTR pwszValueName);
|
|
LONG QueryLongValue(LONG& lValue, LPCWSTR pwszValueName);
|
|
|
|
LONG SetBoolValue(BOOL bValue, LPCWSTR pwszValueName);
|
|
LONG QueryBoolValue(BOOL& bValue, LPCWSTR pwszValueName);
|
|
|
|
LONG SetBinaryValue(LPVOID pData, DWORD cbData, LPCWSTR pwszValueName);
|
|
LONG QueryBinaryValue(LPVOID pData, DWORD cbData, LPCWSTR pwszValueName);
|
|
};
|
|
|
|
|
|
// GlobalSettingsRegKey lets you get a key to store miscellaneous data.
|
|
// For example, CreateGlobalSubkey("MyOptions") might create the key
|
|
// HKCU\Software\Microsoft\PCHealth\Global\MyOptions
|
|
|
|
class CGlobalSettingsRegKey : public CRegistryKey
|
|
{
|
|
public:
|
|
LONG CreateGlobalSubkey(LPCWSTR pwszSubkey);
|
|
LONG OpenGlobalSubkey(LPCWSTR pwszSubkey);
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif //__UTIL_H
|
|
|