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.
344 lines
9.0 KiB
344 lines
9.0 KiB
/**********************************************************************/
|
|
/** Microsoft Windows/NT **/
|
|
/** Copyright (c) 1997-1999 Microsoft Corporation
|
|
/**********************************************************************/
|
|
|
|
|
|
#include "precomp.h"
|
|
#include "AdvPage.h"
|
|
#include "chstring1.h"
|
|
#include "resource.h"
|
|
#include "WMIHelp.h"
|
|
#include "ShlWapi.h"
|
|
|
|
const static DWORD advPageHelpIDs[] = { // Context Help IDs
|
|
IDC_SCRIPT_LABEL, IDH_WMI_CTRL_ADVANCED_SCRIPTING_PATH,
|
|
IDC_SCRIPT_NS, IDH_WMI_CTRL_ADVANCED_SCRIPTING_PATH,
|
|
IDC_CHANGE_SCRIPT_NS, IDH_WMI_CTRL_ADVANCED_CHANGE_BUTTON,
|
|
IDC_ASP, IDH_WMI_CTRL_ADVANCED_ASP_ACCESS,
|
|
IDC_ASP_LABEL, IDH_WMI_CTRL_ADVANCED_ASP_ACCESS,
|
|
IDC_9X_ANON_CONNECTION, IDH_WMI_CTRL_ADVANCED_ENABLE_CONNECT,
|
|
IDC_9X_ONLY, IDH_WMI_CTRL_ADVANCED_RESTART_BOX,
|
|
IDC_NORESTART, IDH_WMI_CTRL_ADVANCED_RESTART_BOX,
|
|
IDC_ESSRESTART, IDH_WMI_CTRL_ADVANCED_RESTART_BOX,
|
|
IDC_ALWAYSAUTORESTART, IDH_WMI_CTRL_ADVANCED_RESTART_BOX,
|
|
IDC_ADV_PARA, -1,
|
|
0, 0};
|
|
|
|
|
|
// WARNING: This class handles IDD_ADVANCED_NT and IDD_ADVANCED_9X so protect
|
|
// yourself from controls that aren't on both templates.
|
|
|
|
CAdvancedPage::CAdvancedPage(DataSource *ds, bool htmlSupport) :
|
|
CUIHelpers(ds, &(ds->m_rootThread), htmlSupport),
|
|
m_DS(ds)
|
|
{
|
|
}
|
|
|
|
CAdvancedPage::~CAdvancedPage(void)
|
|
{
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
void CAdvancedPage::InitDlg(HWND hDlg)
|
|
{
|
|
m_hDlg = hDlg;
|
|
ATLTRACE(_T("ADV: init\n"));
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void CAdvancedPage::Refresh(HWND hDlg)
|
|
{
|
|
if(m_DS && m_DS->IsNewConnection(&m_sessionID))
|
|
{
|
|
CHString1 temp;
|
|
CHString1 szNotRemoteable, szUnavailable;
|
|
HRESULT hr = S_OK;
|
|
BOOL enable = TRUE;
|
|
HWND hWnd;
|
|
|
|
szNotRemoteable.LoadString(IDS_NOT_REMOTEABLE);
|
|
szUnavailable.LoadString(IDS_UNAVAILABLE);
|
|
|
|
PageChanged(PB_ADVANCED, false);
|
|
|
|
//Make sure we don't display this stuff if there's no connection...
|
|
if((m_DS->m_OSType == OSTYPE_WINNT) || (m_DS->m_rootThread.m_status != WbemServiceThread::ready))
|
|
{
|
|
ATLTRACE(_T("ADV: winnt\n"));
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_NORESTART), SW_HIDE);
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_ESSRESTART), SW_HIDE);
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_ALWAYSAUTORESTART), SW_HIDE);
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_9X_ANON_CONNECTION), SW_HIDE);
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_9X_ONLY), SW_HIDE);
|
|
|
|
CHString1 para;
|
|
para.LoadString(IDS_ADV_PARA_NT);
|
|
SetDlgItemText(hDlg, IDC_ADV_PARA, para);
|
|
// - - - - - - - - - - - - - -
|
|
// Enable for ASP:
|
|
hWnd = GetDlgItem(hDlg,IDC_ASP);
|
|
if(hWnd)
|
|
{
|
|
// only display it for NT 3.51 and NT4.0.
|
|
CHString1 ver;
|
|
m_DS->GetOSVersion(ver);
|
|
if((_tcsncmp((LPCTSTR)ver, _T("3.51"), 4) == 0) ||
|
|
ver[0] == _T('4'))
|
|
{
|
|
ATLTRACE(_T("ADV: winnt 4.0\n"));
|
|
|
|
::ShowWindow(hWnd, SW_SHOW);
|
|
::ShowWindow(GetDlgItem(hDlg, IDC_ASP_LABEL), SW_SHOW);
|
|
|
|
hr = m_DS->GetScriptASPEnabled(m_enableASP);
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
Button_SetCheck(hWnd, (m_enableASP ? BST_CHECKED : BST_UNCHECKED));
|
|
}
|
|
}
|
|
else // this must be w2k
|
|
{
|
|
ATLTRACE(_T("ADV: winnt 5.0\n"));
|
|
::ShowWindow(hWnd, SW_HIDE);
|
|
::ShowWindow(GetDlgItem(hDlg, IDC_ASP_LABEL), SW_HIDE);
|
|
}
|
|
}
|
|
}
|
|
else // 9x box
|
|
{
|
|
ATLTRACE(_T("ADV: 9x\n"));
|
|
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_NORESTART), SW_SHOW);
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_ESSRESTART), SW_SHOW);
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_ALWAYSAUTORESTART), SW_SHOW);
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_9X_ANON_CONNECTION), SW_SHOW);
|
|
::ShowWindow(GetDlgItem(hDlg,IDC_9X_ONLY), SW_SHOW);
|
|
|
|
ShowWindow(GetDlgItem(hDlg,IDC_ASP), SW_HIDE);
|
|
ShowWindow(GetDlgItem(hDlg,IDC_ASP_LABEL), SW_HIDE);
|
|
|
|
CHString1 para;
|
|
para.LoadString(IDS_ADV_PARA_9X);
|
|
SetDlgItemText(hDlg, IDC_ADV_PARA, para);
|
|
|
|
// - - - - - - - - - - - - - -
|
|
// 9x restart.
|
|
int ID;
|
|
hr = m_DS->GetRestart(m_oldRestart);
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
switch(m_oldRestart)
|
|
{
|
|
case DataSource::Dont: ID = IDC_NORESTART; break;
|
|
case DataSource::AsNeededByESS: ID = IDC_ESSRESTART; break;
|
|
case DataSource::Always: ID = IDC_ALWAYSAUTORESTART; break;
|
|
}
|
|
CheckRadioButton(hDlg, IDC_NORESTART, IDC_ALWAYSAUTORESTART, ID);
|
|
}
|
|
|
|
// - - - - - - - - - - - - - -
|
|
// 9x Anonymous connection:
|
|
hWnd = GetDlgItem(hDlg, IDC_9X_ANON_CONNECTION);
|
|
if(hWnd)
|
|
{
|
|
hr = m_DS->GetAnonConnections(m_anonConnection);
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
Button_SetCheck(hWnd, (m_anonConnection ? BST_CHECKED : BST_UNCHECKED));
|
|
}
|
|
}
|
|
} //endif OSTtype
|
|
|
|
// - - - - - - - - - - - - - -
|
|
// ASP def namespace:
|
|
hWnd = GetDlgItem(hDlg, IDC_SCRIPT_NS);
|
|
if(hWnd)
|
|
{
|
|
hr = m_DS->GetScriptDefNS(m_DefNamespace);
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
enable = TRUE;
|
|
TCHAR shortPath[50] = {0};
|
|
PathCompactPathEx(shortPath, m_DefNamespace, 40,0);
|
|
SetWindowText(hWnd, shortPath);
|
|
}
|
|
else //failed
|
|
{
|
|
enable = FALSE;
|
|
SetWindowText(hWnd, szUnavailable);
|
|
}
|
|
|
|
::EnableWindow(GetDlgItem(hDlg,IDC_CHANGE_SCRIPT_NS), enable);
|
|
}
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
void CAdvancedPage::OnNSSelChange(HWND hDlg)
|
|
{
|
|
TCHAR path[MAX_PATH] = {0};
|
|
|
|
if(DisplayNSBrowser(hDlg, path, MAX_PATH) == IDOK)
|
|
{
|
|
m_DefNamespace = path;
|
|
HWND hWnd = GetDlgItem(hDlg, IDC_SCRIPT_NS);
|
|
TCHAR shortPath[50] = {0};
|
|
PathCompactPathEx(shortPath, m_DefNamespace, 40,0);
|
|
::SetWindowText(hWnd, shortPath);
|
|
Edit_SetModify(hWnd, TRUE);
|
|
PageChanged(PB_ADVANCED, true);
|
|
}
|
|
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
void CAdvancedPage::OnApply(HWND hDlg, bool bClose)
|
|
{
|
|
// enable ASP
|
|
HWND hWnd = GetDlgItem(hDlg, IDC_ASP);
|
|
bool needToPut = false;
|
|
|
|
if(hWnd)
|
|
{
|
|
bool newEnable = (IsDlgButtonChecked(hDlg, IDC_ASP) & BST_CHECKED ?true:false);
|
|
|
|
if(m_enableASP != newEnable)
|
|
{
|
|
m_DS->SetScriptASPEnabled(newEnable);
|
|
m_enableASP = newEnable;
|
|
needToPut = true;
|
|
}
|
|
}
|
|
|
|
// default scripting namespace.
|
|
TCHAR buf[_MAX_PATH] = {0};
|
|
hWnd = GetDlgItem(hDlg, IDC_SCRIPT_NS);
|
|
//if(Edit_GetModify(hWnd))
|
|
{
|
|
::GetWindowText(hWnd, buf, ARRAYSIZE(buf));
|
|
m_DS->SetScriptDefNS(m_DefNamespace);
|
|
needToPut = true;
|
|
}
|
|
|
|
// Anon Connections
|
|
hWnd = GetDlgItem(hDlg, IDC_9X_ANON_CONNECTION);
|
|
if(hWnd)
|
|
{
|
|
bool anonConn = (IsDlgButtonChecked(hDlg, IDC_9X_ANON_CONNECTION) & BST_CHECKED ?true:false);
|
|
|
|
if(m_anonConnection != anonConn)
|
|
{
|
|
m_DS->SetAnonConnections(anonConn);
|
|
m_anonConnection = anonConn;
|
|
needToPut = true;
|
|
}
|
|
}
|
|
|
|
// 9x restart
|
|
hWnd = GetDlgItem(hDlg, IDC_NORESTART);
|
|
if(hWnd)
|
|
{
|
|
DataSource::RESTART restart = DataSource::Dont;
|
|
|
|
if(IsDlgButtonChecked(hDlg, IDC_NORESTART) & BST_CHECKED)
|
|
restart = DataSource::Dont;
|
|
else if(IsDlgButtonChecked(hDlg, IDC_ESSRESTART) & BST_CHECKED)
|
|
restart = DataSource::AsNeededByESS;
|
|
else if(IsDlgButtonChecked(hDlg, IDC_ALWAYSAUTORESTART) & BST_CHECKED)
|
|
restart = DataSource::Always;
|
|
|
|
if(m_oldRestart != restart)
|
|
{
|
|
m_DS->SetRestart(restart);
|
|
m_oldRestart = restart;
|
|
needToPut = true;
|
|
}
|
|
}
|
|
|
|
if(needToPut)
|
|
{
|
|
NeedToPut(PB_ADVANCED, !bClose);
|
|
if(!bClose)
|
|
Refresh(hDlg);
|
|
}
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
BOOL CAdvancedPage::DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
switch(uMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
InitDlg(hDlg);
|
|
break;
|
|
|
|
case WM_NOTIFY:
|
|
switch(((LPNMHDR)lParam)->code)
|
|
{
|
|
case PSN_SETACTIVE:
|
|
Refresh(hDlg);
|
|
break;
|
|
|
|
case PSN_HELP:
|
|
HTMLHelper(hDlg);
|
|
break;
|
|
|
|
case PSN_APPLY:
|
|
OnApply(hDlg, (((LPPSHNOTIFY)lParam)->lParam == 1));
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch(LOWORD(wParam))
|
|
{
|
|
case IDC_ASP:
|
|
case IDC_9X_ANON_CONNECTION:
|
|
case IDC_NORESTART:
|
|
case IDC_ESSRESTART:
|
|
case IDC_ALWAYSAUTORESTART:
|
|
if(HIWORD(wParam) == BN_CLICKED)
|
|
{
|
|
PageChanged(PB_ADVANCED, true);
|
|
return TRUE;
|
|
}
|
|
break;
|
|
|
|
case IDC_CHANGE_SCRIPT_NS:
|
|
if(HIWORD(wParam) == BN_CLICKED)
|
|
{
|
|
OnNSSelChange(hDlg);
|
|
return TRUE;
|
|
}
|
|
break;
|
|
|
|
} //endswitch(LOWORD(wParam))
|
|
|
|
break;
|
|
|
|
case WM_HELP:
|
|
if (IsWindowEnabled(hDlg))
|
|
{
|
|
WinHelp((HWND)((LPHELPINFO)lParam)->hItemHandle,
|
|
c_HelpFile,
|
|
HELP_WM_HELP,
|
|
(ULONG_PTR)advPageHelpIDs);
|
|
}
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
if (IsWindowEnabled(hDlg))
|
|
{
|
|
WinHelp(hDlg, c_HelpFile,
|
|
HELP_CONTEXTMENU,
|
|
(ULONG_PTR)advPageHelpIDs);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|