////////////////////////////////////////////////////////////////////////////// // // MAIN.H // // Microsoft Confidential // Copyright (c) Microsoft Corporation 1998 // All rights reserved // // Includes all internal and external include files, defined values, macros, // data structures, and fucntion prototypes for the corisponding CXX file. // // Original engineer: WillisC // Updated: Jason Cohen (JCOHEN) // ////////////////////////////////////////////////////////////////////////////// // Only include this file once. // #ifndef _MAIN_H_ #define _MAIN_H_ // // Include definition(s). // //#define STRICT //#define OEMRESOURCE 1 //#define _INC_OLE //#define INC_OLE2 // // Include file(s). // #include #include #include #include "resource.h" #include "jcohen.h" #include "registry.h" #include "miscfunc.h" // // External defined value(s). // #define WM_PROGRESS (WM_USER + 1000) // Tuneup flags. // #define TUNEUP_CUSTOM 0x00000001 // Set if the user choose custom instead of express. #define TUNEUP_FINISHED 0x00000002 // Set when the user presses finish instead of cancel so we know to save settings. #define TUNEUP_OLDADMIN 0x00000004 // Set to use old admin UI for the startup group. #define TUNEUP_AUTORUN 0x00000008 // Set if we are just going to run all the tasks. #define TUNEUP_RUNBACKUP 0x00000010 // Set if we need to run the backup wizard at the end. #define TUNEUP_NOSCHEDULE 0x00000020 // Set if there is no current schedule. #define TUNEUP_QUIT 0x00000040 // Set when proccessing command line options if we don't want to run the wizard. // Task flags (options). // #define TASK_SCHEDULED 0x00000001 // The job is scheduled. #define TASK_NEW 0x00000002 // The job is newly created by this sessioin of Tune-up. #define TASK_NOIDLE 0x00000004 // The job doesn't wait for the computer to be idle. // Schedule settings. // #define TASK_ONCE 1 #define TASK_DAILY 2 #define TASK_WEEKLY 3 #define TASK_MONTHLY 4 #define TASK_BIMONTHLY 5 #define TASK_QUARTLY 6 #define TASK_YEARLY 7 // Default job flags. // #define DEFAULT_TASK_FLAG TASK_FLAG_RESTART_ON_IDLE_RESUME | \ TASK_FLAG_START_ONLY_IF_IDLE | \ TASK_FLAG_KILL_ON_IDLE_END | \ TASK_FLAG_DONT_START_IF_ON_BATTERIES | \ TASK_FLAG_KILL_IF_GOING_ON_BATTERIES | \ TASK_FLAG_SYSTEM_REQUIRED #define DEFAULT_TASK_FLAG2 TASK_FLAG_DONT_START_IF_ON_BATTERIES | \ TASK_FLAG_KILL_IF_GOING_ON_BATTERIES | \ TASK_FLAG_SYSTEM_REQUIRED // Default time scheme. // #define DEFAULT_TIMESCHEME IDC_NIGHT // Registry keys. // #define g_szTuneupKey _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Applets\\TuneUp") #define g_szRegKeyAddOns _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Applets\\TuneUp\\AddOns") #define g_szCleanUpKey _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\VolumeCaches") #define g_szCmpAgentKey _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\CmpAgent.exe") #define g_szRegKeyProfiles _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList") // Registry values. // #define g_szRegValProfileDir _T("ProfilesDirectory") #define g_szRegValProfilePath _T("ProfileImagePath") #define g_szRegValTime _T("Time") #define g_szRegValCustom _T("Custom") #define g_szRegValChange _T("Change") #define g_szRegValFirstTime _T("@") // For the third-party addon pages. // #define g_szRegValProgram _T("Program") #define g_szRegValProgParam _T("ProgParam") #define g_szRegValSettings _T("Settings") #define g_szRegValSetParam _T("SetParam") #define g_szRegValJobName _T("JobName") #define g_szRegValComment _T("Comment") #define g_szRegValSchedule _T("Schedule") #define g_szRegValTitle _T("Title") #define g_szRegValSubtitle _T("Subtitle") #define g_szRegValDescription _T("Description") #define REG_VAL_ACTION _T("Action") #define g_szRegValYesAction _T("YesOpt") #define g_szRegValNoAction _T("NoOpt") #define g_szRegValSummary _T("Summary") // Other strings. // #define g_szBackupExe _T("NTBACKUP.EXE") // // External defined macro(s). // #ifdef _UNICODE #define ANSIWCHAR(lpw, lpa, cb) lpw = lpa #define WCHARANSI(lpa, lpw, cb) lpa = lpw #else // _UNICODE #define ANSIWCHAR(lpw, lpa, cb) MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, lpa, -1, lpw, cb / 2) #define WCHARANSI(lpa, lpw, cb) WideCharToMultiByte(CP_ACP, 0, lpw, -1, lpa, cb, NULL, NULL) #endif // _UNICODE // // External structure(s). // typedef struct _TASKDATA { // Task scheduler job settings. // LPTSTR lpFullPathName; // Full path and file name of the app. LPTSTR lpParameters; // Parameters to use when running the task. LPTSTR lpSetName; // Full path and file name of the settings command (if NULL, lpFullPathName is used). LPTSTR lpSetParam; // Parameters to use with the settings command. LPTSTR lpJobName; // Name of the job file (.JOB). LPTSTR lpComment; // Comment string for the task scheduler job. DWORD dwFlags; // Original flag in ITask. ITask *pTask; // Pointer to the ITask object for the task scheduler job. TASK_TRIGGER Trigger; // Trigger structure. // Tuneup settings. // DWORD dwOptions; // Flags used by tuneup. INT nSchedule; // Whether task is once, daily, weekly, monthly, bimonthly, quarterly, or yearly. // Wizard page settings. // INT nPageID; // Resource ID for the dialog used in the wizard page. LPTSTR lpTitle; // Title of the wizard page usually in the form of MAKEINTRESOURCE(ID_STRING). LPTSTR lpSubTitle; // Subtitle of the wizard (same form as above). LPTSTR lpDescription; // Description of the task used on the wizard page (same form as above). LPTSTR lpYesAction; // String used in the Yes text. LPTSTR lpNoAction; // String used in the No text. LPTSTR lpSummary; // String used in on the summary page. // Pointers for the doubly linked list. // struct _TASKDATA *lpNext; struct _TASKDATA *lpBack; } TASKDATA, *PTASKDATA, *LPTASKDATA; // // External global variable(s). // extern HWND g_hWnd; extern HINSTANCE g_hInst; extern DWORD g_dwFlags; extern LPTASKDATA g_Tasks; extern LPTASKDATA g_CurrentTask; extern INT g_nTimeScheme; extern TCHAR g_szAppName[64]; #endif // _MAIN_H_