295 lines
6.6 KiB
C++
295 lines
6.6 KiB
C++
/**********************************************************************/
|
|
/** Microsoft Windows NT **/
|
|
/** Copyright(c) Microsoft Corp., 1991-1996 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
stdafx.cpp
|
|
|
|
Romaine.cpp : Defines the class behaviors for the application.
|
|
|
|
FILE HISTORY:
|
|
jony Apr-1996 created
|
|
*/
|
|
|
|
#include "stdafx.h"
|
|
#include "NetTree.h"
|
|
#include "Romaine.h"
|
|
#include "Welcome.h"
|
|
#include "Where.h"
|
|
#include "Type.h"
|
|
#include "What.h"
|
|
#include "userlist.h"
|
|
#include "LUsers.h"
|
|
#include "GUsers.h"
|
|
#include "finish.h"
|
|
#include "ExGrp.h"
|
|
#include "LRem.h"
|
|
|
|
#include <winreg.h>
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
TCHAR pszTreeEvent[] = _T("TreeThread");
|
|
extern int ClassifyMachine(CString& csMachine);
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CRomaineApp
|
|
|
|
BEGIN_MESSAGE_MAP(CRomaineApp, CWinApp)
|
|
//{{AFX_MSG_MAP(CRomaineApp)
|
|
//}}AFX_MSG
|
|
// ON_COMMAND(ID_HELP, CWinApp::OnHelp)
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CRomaineApp construction
|
|
|
|
CRomaineApp::CRomaineApp()
|
|
{
|
|
bRestart1 = FALSE;
|
|
bRestart2 = FALSE;
|
|
|
|
// get our primary domain and save it for NETTREE
|
|
DWORD dwRet;
|
|
HKEY hKey;
|
|
DWORD cbProv = 0;
|
|
TCHAR* lpProv = NULL;
|
|
|
|
CRomaineApp* pApp = (CRomaineApp*)AfxGetApp();
|
|
|
|
dwRet = RegOpenKey(HKEY_LOCAL_MACHINE,
|
|
TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), &hKey );
|
|
|
|
TCHAR* lpPrimaryDomain = NULL;
|
|
if ((dwRet = RegQueryValueEx( hKey, TEXT("CachePrimaryDomain"), NULL, NULL, NULL, &cbProv )) == ERROR_SUCCESS)
|
|
{
|
|
lpPrimaryDomain = (TCHAR*)malloc(cbProv);
|
|
if (lpPrimaryDomain == NULL)
|
|
{
|
|
AfxMessageBox(IDS_GENERIC_NO_HEAP, MB_ICONEXCLAMATION);
|
|
exit(1);
|
|
}
|
|
|
|
dwRet = RegQueryValueEx( hKey, TEXT("CachePrimaryDomain"), NULL, NULL, (LPBYTE) lpPrimaryDomain, &cbProv );
|
|
|
|
}
|
|
|
|
RegCloseKey(hKey);
|
|
|
|
pApp->m_csCurrentDomain = lpPrimaryDomain;
|
|
|
|
// store the machine name too
|
|
CString csMachineName;
|
|
DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
|
|
GetComputerName(csMachineName.GetBufferSetLength(MAX_COMPUTERNAME_LENGTH + 1), &dwSize);
|
|
|
|
pApp->m_csCurrentMachine = "\\\\";
|
|
pApp->m_csCurrentMachine += csMachineName;
|
|
|
|
free(lpPrimaryDomain);
|
|
|
|
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// The one and only CRomaineApp object
|
|
|
|
CRomaineApp theApp;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CRomaineApp initialization
|
|
BOOL CRomaineApp::IsSecondInstance()
|
|
{
|
|
HANDLE hSem;
|
|
|
|
//create a semaphore object with max count of 1
|
|
hSem = CreateSemaphore(NULL, 0, 1, L"Group Wizard Semaphore");
|
|
if (hSem!=NULL && GetLastError() == ERROR_ALREADY_EXISTS) {
|
|
CloseHandle(hSem);
|
|
CString csAppName;
|
|
csAppName.LoadString(AFX_IDS_APP_TITLE);
|
|
CWnd* pWnd = CWnd::FindWindow(NULL, (LPCTSTR)csAppName);
|
|
|
|
if (pWnd)
|
|
pWnd->SetForegroundWindow();
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CRomaineApp::InitInstance()
|
|
{
|
|
// check for OS version
|
|
OSVERSIONINFO os;
|
|
os.dwOSVersionInfoSize = sizeof(os);
|
|
GetVersionEx(&os);
|
|
|
|
if (os.dwMajorVersion < 4)
|
|
{
|
|
AfxMessageBox(IDS_BAD_VERSION, MB_ICONSTOP);
|
|
ExitProcess(0);
|
|
}
|
|
|
|
if (IsSecondInstance())
|
|
return FALSE;
|
|
|
|
// if there is a directory name on the command line, load an extra class
|
|
if (m_lpCmdLine[0] != '\0')
|
|
{
|
|
m_csCmdLine = m_lpCmdLine;
|
|
m_sCmdLine = __argc;
|
|
|
|
TCHAR* pFolder = _tcstok(m_lpCmdLine, L" ");
|
|
if (_tcsicmp(pFolder, L"/folder")) return FALSE; // anything else on the cmdline and boot it out
|
|
|
|
m_sMode = 1;
|
|
if (m_sCmdLine == 3)
|
|
{
|
|
TCHAR* pParam3 = _tcstok(NULL, L" ");
|
|
if (*(pParam3 + 1) == 'g')
|
|
{
|
|
pParam3+=3;
|
|
m_csCmdLineGroupName = pParam3;
|
|
}
|
|
else
|
|
{
|
|
pParam3+=3;
|
|
m_csServer = pParam3;
|
|
if (ClassifyMachine(m_csServer) == -1) ExitProcess(1);
|
|
}
|
|
}
|
|
|
|
if (m_sCmdLine == 4)
|
|
{
|
|
TCHAR* pParam3 = _tcstok(NULL, L" ");
|
|
TCHAR* pParam4 = _tcstok(NULL, L" ");
|
|
if (*(pParam3 + 1) == 'g')
|
|
{
|
|
pParam3+=3;
|
|
pParam4+=3;
|
|
m_csCmdLineGroupName = pParam3;
|
|
m_csServer = pParam4;
|
|
}
|
|
else
|
|
{
|
|
pParam3+=3;
|
|
pParam4+=3;
|
|
m_csServer = pParam3;
|
|
m_csCmdLineGroupName = pParam4;
|
|
}
|
|
|
|
if (ClassifyMachine(m_csServer) == -1) ExitProcess(1);
|
|
}
|
|
}
|
|
|
|
#ifdef _AFXDLL
|
|
Enable3dControls(); // Call this when using MFC in a shared DLL
|
|
#else
|
|
Enable3dControlsStatic(); // Call this when linking to MFC statically
|
|
#endif
|
|
|
|
// create the property sheet,set 'wizmode' & set app icon
|
|
m_cps1.SetTitle(TEXT("Group Management Wizard"), 0);
|
|
|
|
m_cps1.SetWizardMode();
|
|
|
|
CWelcome* pWelcome = new CWelcome;
|
|
CLRem* pLRem = new CLRem;
|
|
CWhere* pWhere = new CWhere;
|
|
CType* pType = new CType;
|
|
CWhat* pWhat = new CWhat;
|
|
CExGrp* pEx = new CExGrp;
|
|
|
|
CLUsers* pLUsers = new CLUsers;
|
|
CGUsers* pGUsers = new CGUsers;
|
|
CFinish* pFinish = new CFinish;
|
|
|
|
// add pages
|
|
m_cps1.AddPage(pEx);
|
|
|
|
m_cps1.AddPage(pWelcome);
|
|
m_cps1.AddPage(pWhat);
|
|
m_cps1.AddPage(pLRem);
|
|
m_cps1.AddPage(pWhere);
|
|
m_cps1.AddPage(pType);
|
|
m_cps1.AddPage(pLUsers);
|
|
m_cps1.AddPage(pGUsers);
|
|
m_cps1.AddPage(pFinish);
|
|
|
|
// show the wizard
|
|
if (m_csServer != L"") m_cps1.SetActivePage(0);
|
|
else m_cps1.SetActivePage(1);
|
|
|
|
m_cps1.DoModal();
|
|
|
|
// clean up
|
|
delete pWelcome;
|
|
delete pWhere;
|
|
delete pLRem;
|
|
delete pType;
|
|
delete pWhat;
|
|
delete pLUsers;
|
|
delete pGUsers;
|
|
delete pFinish;
|
|
delete pEx;
|
|
|
|
return FALSE;
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMySheet
|
|
|
|
IMPLEMENT_DYNAMIC(CMySheet, CPropertySheet)
|
|
|
|
CMySheet::CMySheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
|
|
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
|
|
{
|
|
}
|
|
|
|
CMySheet::CMySheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
|
|
:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
|
|
{
|
|
}
|
|
|
|
CMySheet::CMySheet() : CPropertySheet()
|
|
{
|
|
}
|
|
|
|
CMySheet::~CMySheet()
|
|
{
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CMySheet, CPropertySheet)
|
|
//{{AFX_MSG_MAP(CMySheet)
|
|
ON_WM_CREATE()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMySheet message handlers
|
|
|
|
BOOL CMySheet::OnInitDialog()
|
|
{
|
|
CRomaineApp* pApp = (CRomaineApp*)AfxGetApp();
|
|
HICON hIcon = LoadIcon(pApp->m_hInstance, MAKEINTRESOURCE(IDR_MAINFRAME));
|
|
::SetClassLong(m_hWnd, GCL_HICON, (long)hIcon);
|
|
|
|
return CPropertySheet::OnInitDialog();
|
|
}
|
|
|
|
int CMySheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
// lpCreateStruct->style = WS_OVERLAPPEDWINDOW;
|
|
|
|
return 0;
|
|
}
|