#ifndef __GENERAL__ #define __GENERAL__ #include "resource.h" #include "init.h" #include #include #define VERSION_MAXSIZE 50 #define TIMESTAMP_MAXSIZE 64 #define MESSAGE_MAXSIZE 200 #define CONTROLNAME_MAXSIZE 200 #define MAX_KILOBYTE_ABBREV_LEN 16 // Needed for FindFirstControl/FindNextControl #define MAX_CTRL_NAME_SIZE 2048 #define MAX_DIST_UNIT_NAME_LEN MAX_PATH #define MAX_CLIENT_LEN 1024 #define MAX_REGENTRY_SIZE 1024 #define MAX_CLSID_LEN 40 // conlumn identifiers #define NUM_COLUMNS 6 enum { SI_CONTROL = 0, // column SI_STATUS, // column SI_TOTALSIZE, // column SI_CREATION, // column SI_LASTACCESS, // column SI_VERSION, // column SI_LOCATION, SI_CLSID, SI_TYPELIBID, SI_CODEBASE }; // control status flags moved to cleanoc.h ( in iedev\inc ) // struct containing info about a control struct tagDEPENDENTFILEINFO { TCHAR szFile[MAX_PATH]; DWORD dwSize; }; typedef tagDEPENDENTFILEINFO DEPENDENTFILEINFO; typedef DEPENDENTFILEINFO* LPDEPENDENTFILEINFO; struct tagCACHECTRLINFO { TCHAR szName[CONTROLNAME_MAXSIZE]; TCHAR szFile[MAX_PATH]; TCHAR szCLSID[MAX_CLSID_LEN]; TCHAR szTypeLibID[MAX_CLSID_LEN]; TCHAR szVersion[VERSION_MAXSIZE]; TCHAR szLastAccess[TIMESTAMP_MAXSIZE]; TCHAR szCreation[TIMESTAMP_MAXSIZE]; TCHAR szLastChecked[TIMESTAMP_MAXSIZE]; TCHAR szCodeBase[INTERNET_MAX_URL_LENGTH]; DWORD dwIsDistUnit; DWORD dwHasActiveX; DWORD dwHasJava; DWORD dwTotalFileSize; DWORD dwTotalSizeSaved; UINT cTotalFiles; DWORD dwStatus; FILETIME timeCreation; FILETIME timeLastAccessed; DEPENDENTFILEINFO dependentFile; }; typedef tagCACHECTRLINFO CACHECTRLINFO; typedef CACHECTRLINFO* LPCACHECTRLINFO; // PIDL format for this folder... struct tagCONTROLPIDL { USHORT cb; CACHECTRLINFO ci; }; typedef tagCONTROLPIDL CONTROLPIDL; typedef UNALIGNED CONTROLPIDL* LPCONTROLPIDL; // common expiration #define DEFAULT_DAYS_BEFORE_EXPIRE 60 #define DEFAULT_DAYS_BEFORE_AUTOEXPIRE 15 // misc macros #define IS_VALID_CONTROLPIDL(pidl) (TRUE) #define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0])) // helper functions LPCTSTR GetStringInfo(LPCONTROLPIDL lpcpidl, int nFlag); BOOL GetTimeInfo(LPCONTROLPIDL lpcpidl, int nFlag, FILETIME* lpTime); UINT GetTotalNumOfFiles(LPCONTROLPIDL lpcpidl); DWORD GetSizeSaved(LPCONTROLPIDL lpcpidl); BOOL GetSizeSaved(LPCONTROLPIDL pcpidl, LPTSTR lpszBuf); UINT GetStatus(LPCONTROLPIDL pcpidl); BOOL GetStatus(LPCONTROLPIDL pcpidl, LPTSTR lpszBuf, int nBufSize); BOOL GetDependentFile( LPCONTROLPIDL lpcpidl, UINT iFile, LPTSTR lpszFile, DWORD *pdwSize); HICON GetDefaultOCIcon(LPCONTROLPIDL lpcpidl); void GetContentBools(LPCONTROLPIDL pcpidl, BOOL *pbHasActiveX, BOOL *pbHasJava ); HRESULT GetLastAccessTime(HANDLE hControl, FILETIME *pLastAccess); HRESULT CreatePropDialog( HWND hwnd, LPCONTROLPIDL pcpidl); void GenerateEvent( LONG lEventId, LPITEMIDLIST pidlFolder, LPITEMIDLIST pidlIn, LPITEMIDLIST pidlNewIn); HCURSOR StartWaitCur(); void EndWaitCur(HCURSOR hCurOld); void GetDaysBeforeExpireGeneral(ULONG *pnDays); void GetDaysBeforeExpireAuto(ULONG *pnDays); HRESULT WINAPI RemoveControlByName2( LPCTSTR lpszFile, LPCTSTR lpszCLSID, LPCTSTR lpszTypeLibID, BOOL bForceRemove, /* = FALSE */ DWORD dwIsDistUnit, /* = FALSE */ BOOL bSilent); HRESULT WINAPI RemoveControlByHandle2( HANDLE hControlHandle, BOOL bForceRemove, /* = FALSE */ BOOL bSilent); #endif