/********************************************************************* Registration Wizard CRegWiz.h 11/3/94 - Tracy Ferrier (c) 1994-95 Microsoft Corporation **********************************************************************/ #ifndef __CRegWizard__ #define __CRegWizard__ #include const kMaxProductCount = 12; const kSystemInventoryItemCount = 13; const kMaxCountryCount = 250; typedef enum { kInfoFirstName = 0, kInfoLastName, kInfoCompany, kInfoMailingAddress, kInfoAdditionalAddress, kInfoCity, kInfoState, kInfoZip, kInfoCountry, kInfoPhoneNumber, kInfoDeclinesNonMSProducts, kInfoProductID, kInfoProcessor, kInfoMathCoProcessor, kInfoTotalRAM, kInfoTotalDiskSpace, kInfoRemoveableMedia, kInfoDisplayResolution, kInfoDisplayColorDepth, kInfoPointingDevice, kInfoNetwork, kInfoModem, kInfoSoundCard, kInfoCDROM, kInfoOperatingSystem, kInfoIncludeSystem, kInfoIncludeProducts, kInfoApplicationName, kInfoOEM, kInfoVersion, kInfoMakerCompany, kInfoResultPath, kInfoDate, kInfoLanguage, kInfoEmailName, kInfoResellerName, kInfoResellerCity, kInfoResellerState, kInfoHWID, kInfoMSID, kInfoPhoneExt, kDivisionName, // Division name and User Id is added for FE 3/3/98 kUserId, kAreaCode, kHomeSwKnow, kHomeExcited, kHomePcSwKnow, kBusinessRole, kScsiAdapterInfo, // System Inventory kComputerManufacturer, // Sysinv Dlg , entry kMiddleName, kInfoLastIndex }InfoIndex; #define kFirstSystemIndex kInfoProcessor #define kLastSystemIndex kInfoOperatingSystem typedef enum { kTriStateFalse, kTriStateTrue, kTriStateUndefined }TriState; // Typedefs for JumpTableElement; kMaxAddrSpecTableSize can be // no larger than the largest value representable by JTE typedef _TUCHAR JTE; #define kMaxAddrSpecTableSize 255 #define kMaxLenSize 127 #define kAddrSpecCount 19 //typedef _TSCHAR MAXLEN; typedef char MAXLEN; typedef struct { MAXLEN maxLen[kAddrSpecCount]; }ADDRSPEC,*PADDRSPEC; typedef enum { kAddrSpecFirstName = 0, kAddrSpecLastName, kAddrSpecCompanyName, kAddrSpecAddress, kAddrSpecAddress2, kAddrSpecCity, kAddrSpecState, kAddrSpecPostalCode, kAddrSpecPhone, kAddrSpecEmailName, kAddrSpecResellerName, kAddrSpecResellerCity, kAddrSpecResellerState, kAddrSpecExtension, kAddrSpecDivision, kAddrSpecAreaCode, kAddrSpecUserId, kSIComputerManufacturer, kAddrMiddleName }ADDRSPEC_FIELD; class CRegWizard { public: CRegWizard(HINSTANCE hInstance, LPTSTR szParamRegKey); virtual ~CRegWizard(); void StartRegWizardDialog(int wDlgResID, DLGPROC lpDialogProc); void ActivateRegWizardDialog( void ); INT_PTR ProcessRegWizardDialog( void ); void EndRegWizardDialog(INT_PTR wExitID); BOOL IsDialogActive( void ); void SetWindowCaption(LPTSTR lpszWindowsCaption); LPTSTR GetWindowCaption(); INT_PTR GetDialogExitButton( void ); BOOL GetInputParameterStatus( void ); BOOL GetInputParameterString(short paramID, LPTSTR szParam); BOOL IsRegistered( void ); int AddProduct(LPTSTR szProductName,LPTSTR szProductPath); void SetInformationString(InfoIndex index, LPTSTR szInfo); BOOL GetInformationString(InfoIndex index, LPTSTR szInfo); void SetTriStateInformation(InfoIndex index, TriState infoValue); TriState GetTriStateInformation(InfoIndex index); void WriteEnableInformation(InfoIndex index, BOOL shouldWrite); BOOL IsInformationWriteEnabled(InfoIndex index); TriState GetProductSearchLibraryStatus( void ); BOOL GetProductSearchProcAddress(FARPROC* lpfnProductSearch); void SetProductSearchStatus(TriState searchCompleted); TriState GetProductSearchStatus( void ); void SetSystemInventoryStatus(BOOL invCompleted); BOOL GetSystemInventoryStatus( void ); void GetProductName(LPTSTR szProductName,INT_PTR index); HICON GetProductIcon(INT_PTR index); short GetProductCount( void ); void WriteInfoToRegistry( void ); BOOL GetInfoRegValueName(InfoIndex infoIndex,LPTSTR szValueName); void GetInfoRegistrationParentKey(LPTSTR szRegKey); HINSTANCE GetInstance( void ); void SetCountryCode(DWORD countryCode); DWORD GetCountryCode( void ); void GetCountryAddrSpec(LONG lCountryID,ADDRSPEC* addrSpec ); void GetAddrSpecProperties(DWORD dwCountryCode, ADDRSPEC_FIELD addrSpecField, MAXLEN* maxLen,BOOL* isRequired); void ConfigureEditTextField(HWND hwndDlg,int editFieldID,ADDRSPEC_FIELD addrSpecField,int iAttachedStrID); void SetLogFileName(LPTSTR lpszLogFilePath); void DestroyOpenedWindow() { if (m_hwndCurrDialog) { DestroyWindow(m_hwndCurrDialog); m_hwndCurrDialog = NULL; } } void GetRegKey(LPTSTR szRegKey); HWND GetCurrDialog(void ); void SetDialogHide(HWND hDialogToHide); BOOL ShowPrevDialog(void); void SetPrevDialog(void); void SetDialogExitButton( int nButton ); static BOOL IsEditTextFieldValid(HWND hwndDlg,int editID); static void GetEditTextFieldAttachedString(HWND hwndDlg,int editID,LPTSTR szAttached,int cbBufferSize); void ResolveCurrentCountryCode( void ); BOOL GetMSIDfromCookie(LPTSTR); _TCHAR m_szParamRegKey[256]; private: void BuildAddrSpecTables( void ); void ReadInfoFromRegistry( void ); void CreateLogFile( void ); void WriteToLogFile(LPTSTR lpszLine); void CloseLogFile( void ); HINSTANCE m_hInstance; HACCEL m_hAccel; LPTSTR m_rgszProductName[kMaxProductCount]; LPTSTR m_rgszProductPath[kMaxProductCount]; HICON m_rghProductIcon[kMaxProductCount]; LPTSTR m_rgszInfoArray[kInfoLastIndex]; BOOL m_writeEnable[kInfoLastIndex]; short m_productNameCount; TriState m_searchCompleted; BOOL m_systemInventoryCompleted; _TCHAR m_szWindowsCaption[256]; _TCHAR m_szInfoParentKey[256]; _TCHAR m_szLogFilePath[_MAX_PATH]; FARPROC m_lpfnProductSearch; DWORD m_countryCode; HANDLE m_addrJumpTable; HANDLE m_addrSpecTable; HANDLE m_hLogFile; BOOL m_dialogActive; HWND m_hwndStartDialog; HWND m_hwndCurrDialog; INT_PTR m_wDialogExitButton; HWND m_hwndDialogToHide; HWND m_hwndPrevDialog; HINSTANCE m_ccpLibrary; }; #endif