|
|
//*********************************************************************
//* Microsoft Windows **
//* Copyright(c) Microsoft Corp., 1994 **
//*********************************************************************
//
// MANUAL.CPP - Functions for manual options page
//
// HISTORY:
//
// 05/13/98 jeremys Created.
//
//*********************************************************************
#include "pre.h"
#include "icwextsn.h"
#include "icwacct.h"
extern UINT GetDlgIDFromIndex(UINT uPageIndex); extern BOOL g_bManualPath; extern BOOL g_bLanPath;
const TCHAR c_szICWMan[] = TEXT("INETWIZ.EXE"); const TCHAR c_szRegValICWCompleted[] = TEXT("Completed");
// Run the manual wizard
BOOL RunICWManProcess ( void ) { STARTUPINFO si; PROCESS_INFORMATION pi; MSG msg ; DWORD iWaitResult = 0; BOOL bRetVal = FALSE; memset(&pi, 0, sizeof(pi)); memset(&si, 0, sizeof(si)); if(CreateProcess(c_szICWMan, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) { // wait for event or msgs. Dispatch msgs. Exit when event is signalled.
while((iWaitResult=MsgWaitForMultipleObjects(1, &pi.hProcess, FALSE, INFINITE, QS_ALLINPUT))==(WAIT_OBJECT_0 + 1)) { // read all of the messages in this next loop
// removing each message as we read it
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { // how to handle quit message?
if (msg.message == WM_QUIT) { goto done; } else DispatchMessage(&msg); } } done: CloseHandle(pi.hThread); CloseHandle(pi.hProcess); } // See if ICWMAN completed, by checking the SmartStart Completed RegKey
HKEY hkey; if ( RegOpenKeyEx(HKEY_CURRENT_USER, ICWSETTINGSPATH, 0, KEY_ALL_ACCESS, &hkey) == ERROR_SUCCESS) { DWORD dwType = REG_BINARY; DWORD dwValue = 0; DWORD cbValue = sizeof(DWORD); RegQueryValueEx(hkey, c_szRegValICWCompleted, NULL, &dwType, (LPBYTE) &dwValue, &cbValue);
RegCloseKey(hkey); bRetVal = dwValue; } return(bRetVal); }
/*******************************************************************
NAME: ManualOptionsInitProc
SYNOPSIS: Called when page is displayed
ENTRY: hDlg - dialog window fFirstInit - TRUE if this is the first time the dialog is initialized, FALSE if this InitProc has been called before (e.g. went past this page and backed up)
********************************************************************/ BOOL CALLBACK ManualOptionsInitProc ( HWND hDlg, BOOL fFirstInit, UINT *puNextPage ) { if (fFirstInit) { // If we are in modeless operation, then we need to
// quit the wizard, and launch INETWIZ.EXE
if (gpWizardState->cmnStateData.bOEMCustom) { ShowWindow(gpWizardState->cmnStateData.hWndApp,SW_HIDE); if (RunICWManProcess()) { // Set the welcome state
UpdateWelcomeRegSetting(TRUE); // Restore the desktop
UndoDesktopChanges(g_hInstance); } gfQuitWizard = TRUE; // Quit the wizard
return FALSE; } else { //BUGBUG -- SHOULD BE AUTO?
// initialize radio buttons
CheckDlgButton(hDlg,IDC_MANUAL_MODEM, BST_CHECKED); TCHAR* pszManualIntro = new TCHAR[MAX_MESSAGE_LEN * 3]; if (pszManualIntro) { TCHAR szTemp[MAX_MESSAGE_LEN];
LoadString(g_hInstance, IDS_MANUAL_INTRO1, pszManualIntro, MAX_MESSAGE_LEN * 3); LoadString(g_hInstance, IDS_MANUAL_INTRO2, szTemp, ARRAYSIZE(szTemp)); lstrcat(pszManualIntro, szTemp); SetWindowText(GetDlgItem(hDlg, IDC_MANUAL_INTRO), pszManualIntro); delete pszManualIntro; } } } else { // If we are run from the Runonce with the smartreboot option, we need to
// jump to the Manual wiz immediately because that was where we left the user
// last time.
if (g_bManualPath || g_bLanPath) { Button_SetCheck(GetDlgItem(hDlg, IDC_MANUAL_MODEM), g_bManualPath); Button_SetCheck(GetDlgItem(hDlg, IDC_MANUAL_LAN), !g_bManualPath);
if (LoadInetCfgUI( hDlg, IDD_PAGE_MANUALOPTIONS, IDD_PAGE_END, IsDlgButtonChecked(hDlg, IDC_MANUAL_LAN) ? WIZ_HOST_ICW_LAN : WIZ_HOST_ICW_MPHONE)) { if( DialogIDAlreadyInUse( g_uICWCONNUIFirst) ) { // we're about to jump into the external apprentice, and we don't want
// this page to show up in our history list
*puNextPage = g_uICWCONNUIFirst;
g_bAllowCancel = TRUE; if (gpINETCFGApprentice) gpINETCFGApprentice->SetStateDataFromExeToDll( &gpWizardState->cmnStateData);
} } g_bManualPath = FALSE; g_bLanPath = FALSE;
}
}
// if we've travelled through external apprentice pages,
// it's easy for our current page pointer to get munged,
// so reset it here for sanity's sake.
gpWizardState->uCurrentPage = ORD_PAGE_MANUALOPTIONS;
return TRUE; }
/*******************************************************************
NAME: ManualOptionsCmdProc
SYNOPSIS: Called when a command is generated from page
ENTRY: hDlg - dialog window wParam - wParam lParam - lParam EXIT: returns TRUE
********************************************************************/ BOOL CALLBACK ManualOptionsCmdProc ( HWND hDlg, WPARAM wParam, LPARAM lParam ) { switch (GET_WM_COMMAND_CMD(wParam, lParam)) { case BN_DBLCLK: switch (GET_WM_COMMAND_ID(wParam, lParam)) { case IDC_MANUAL_MODEM: case IDC_MANUAL_LAN: { // somebody double-clicked a radio button
// auto-advance to the next page
PropSheet_PressButton(GetParent(hDlg), PSBTN_NEXT); break; } } break; }
return TRUE; }
/*******************************************************************
NAME: ManualOptionsOKProc
SYNOPSIS: Called when Next or Back btns pressed from page
ENTRY: hDlg - dialog window fForward - TRUE if 'Next' was pressed, FALSE if 'Back' puNextPage - if 'Next' was pressed, proc can fill this in with next page to go to. This parameter is ingored if 'Back' was pressed. pfKeepHistory - page will not be kept in history if proc fills this in with FALSE.
EXIT: returns TRUE to allow page to be turned, FALSE to keep the same page.
********************************************************************/ BOOL CALLBACK ManualOptionsOKProc ( HWND hDlg, BOOL fForward, UINT *puNextPage, BOOL *pfKeepHistory ) { ASSERT(puNextPage); BOOL bRet = TRUE; if (fForward) { if( IsDlgButtonChecked(hDlg, IDC_MANUAL_MODEM) ) { gpWizardState->cmnStateData.dwFlags |= ICW_CFGFLAG_SMARTREBOOT_MANUAL; } else { gpWizardState->cmnStateData.dwFlags |= ICW_CFGFLAG_SMARTREBOOT_LAN; }
bRet = FALSE; // read radio button state
*pfKeepHistory = FALSE; if (LoadInetCfgUI( hDlg, IDD_PAGE_MANUALOPTIONS, IDD_PAGE_END, IsDlgButtonChecked(hDlg, IDC_MANUAL_LAN) ? WIZ_HOST_ICW_LAN : WIZ_HOST_ICW_MPHONE)) { if( DialogIDAlreadyInUse( g_uICWCONNUIFirst) ) { // we're about to jump into the external apprentice, and we don't want
// this page to show up in our history list
bRet = TRUE; *puNextPage = g_uICWCONNUIFirst; g_bAllowCancel = TRUE; if (gpINETCFGApprentice) gpINETCFGApprentice->SetStateDataFromExeToDll( &gpWizardState->cmnStateData);
} } } return bRet; }
|