|
|
/**********************************************************************/ /** 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; }
|