|
|
/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1991-1996 **/ /**********************************************************************/
/*
ExGrp.cpp : implementation file
CPropertyPage support for Group management wizard FILE HISTORY: Jony Apr-1996 created */
#include "stdafx.h"
#include "Romaine.h"
#include "userlist.h"
#include "ExGrp.h"
#include <lmaccess.h>
#include <lmcons.h>
#include <lmapibuf.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CExGrp property page
IMPLEMENT_DYNCREATE(CExGrp, CPropertyPage)
CExGrp::CExGrp() : CPropertyPage(CExGrp::IDD) { //{{AFX_DATA_INIT(CExGrp)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pApp = (CRomaineApp*)AfxGetApp(); }
CExGrp::~CExGrp() { }
void CExGrp::DoDataExchange(CDataExchange* pDX) { CPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CExGrp)
DDX_Control(pDX, IDC_GROUP_LIST, m_lbGroupList); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CExGrp, CPropertyPage) //{{AFX_MSG_MAP(CExGrp)
ON_BN_CLICKED(IDC_ADD_NEW_BUTTON, OnAddNewButton) ON_BN_CLICKED(IDC_DELETE_BUTTON, OnDeleteButton) ON_WM_SHOWWINDOW() ON_LBN_DBLCLK(IDC_GROUP_LIST, OnDblclkGroupList) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExGrp message handlers
BOOL CExGrp::OnInitDialog() { CPropertyPage::OnInitDialog(); /*
int nVal = ClassifyGroup(); if (nVal == 1) { pApp->m_nGroupType = 0; pApp->m_cps1.SetActivePage(6); // global group
}
else if (nVal == 3) { pApp->m_nGroupType = 1; pApp->m_cps1.SetActivePage(5); // local Group
} */ return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
LRESULT CExGrp::OnWizardNext() { UpdateData(TRUE); USHORT sSel = m_lbGroupList.GetCurSel();
if (sSel == -1) { AfxMessageBox(IDS_NO_GROUP_SELECTED); return -1; } m_pApp->m_csGroupName = m_lbGroupList.GetGroupName(sSel);
int sSelType = m_lbGroupList.GetSelType(sSel); if (sSelType == 1) { m_pApp->m_nGroupType = 0; return IDD_GLOBAL_USERS; // global group
}
else { m_pApp->m_nGroupType = 1; return IDD_LOCAL_USERS; // local Group
} return CPropertyPage::OnWizardNext(); }
void CExGrp::OnAddNewButton() { m_pApp->m_cps1.SetActivePage(1);
}
void CExGrp::OnDeleteButton() { UpdateData(TRUE);
if (AfxMessageBox(IDS_DELETE_GROUP_CONFIRM, MB_YESNO) != IDYES) return;
TCHAR* pServer = m_pApp->m_csServer.GetBuffer(m_pApp->m_csServer.GetLength()); m_pApp->m_csServer.ReleaseBuffer();
USHORT sSel = m_lbGroupList.GetCurSel(); if (sSel == -1) { AfxMessageBox(IDS_NO_GROUP_SELECTED); return; }
CString csGroupName = m_lbGroupList.GetGroupName(sSel); TCHAR* pGroupName = csGroupName.GetBuffer(csGroupName.GetLength()); csGroupName.ReleaseBuffer();
int sSelType = m_lbGroupList.GetSelType(sSel); if (sSelType == 1) // global group
{ if (NetGroupDel(pServer, pGroupName) == 0L) { m_lbGroupList.DeleteString(sSel); AfxMessageBox(IDS_GROUP_DELETED); } else AfxMessageBox(IDS_GROUP_NOT_DELETED); }
else // local Group
{ if (NetLocalGroupDel(pServer, pGroupName) == 0L) { m_lbGroupList.DeleteString(sSel); AfxMessageBox(IDS_GROUP_DELETED); } else AfxMessageBox(IDS_GROUP_NOT_DELETED); }
// set a new selection
if (m_lbGroupList.GetCount() > 0) { if (sSel == 0) m_lbGroupList.SetCurSel(0); else m_lbGroupList.SetCurSel(sSel - 1); } else m_pApp->m_cps1.SetWizardButtons(PSWIZB_BACK);
}
int CExGrp::ClassifyGroup() { UpdateData(TRUE);
if (m_pApp->m_csCmdLineGroupName == L"") return 0;
unsigned short sCount = m_lbGroupList.GetCount(); unsigned short sCount2 = 0;
while (sCount2 < sCount) { if (m_lbGroupList.GetGroupName(sCount2) == m_pApp->m_csCmdLineGroupName) return m_lbGroupList.GetSelType(sCount2);
sCount2++; } return 0; }
LRESULT CExGrp::OnWizardBack() { return IDD_LR_DIALOG; }
void CExGrp::OnShowWindow(BOOL bShow, UINT nStatus) { CPropertyPage::OnShowWindow(bShow, nStatus); CWaitCursor wait; if (bShow) { // start fresh each time
m_lbGroupList.ResetContent();
DWORD dwEntriesRead; DWORD dwTotalEntries; DWORD dwResumeHandle = 0;
TCHAR* pServer = m_pApp->m_csServer.GetBuffer(m_pApp->m_csServer.GetLength()); m_pApp->m_csServer.ReleaseBuffer();
PLOCALGROUP_INFO_1 pInfo; NET_API_STATUS nApi = NetLocalGroupEnum(pServer, (DWORD)1, (PBYTE*)&pInfo, (DWORD)5000, &dwEntriesRead, &dwTotalEntries, &dwResumeHandle);
unsigned long sIndex; for (sIndex = 0; sIndex < dwEntriesRead; sIndex++) { wchar_t sTemp[150];
swprintf(sTemp, TEXT("%s;%s"), pInfo[sIndex].lgrpi1_name, pInfo[sIndex].lgrpi1_comment); m_lbGroupList.AddString(3, sTemp); }
NetApiBufferFree(pInfo);
while (dwResumeHandle != 0) { nApi = NetLocalGroupEnum(pServer, (DWORD)1, (PBYTE*)&pInfo, (DWORD)5000, &dwEntriesRead, &dwTotalEntries, &dwResumeHandle);
for (sIndex = 0; sIndex < dwEntriesRead; sIndex++) { wchar_t sTemp[150];
swprintf(sTemp, TEXT("%s;%s"), pInfo[sIndex].lgrpi1_name, pInfo[sIndex].lgrpi1_comment); m_lbGroupList.AddString(3, sTemp); }
NetApiBufferFree(pInfo); }
if (m_pApp->m_bDomain) { PGROUP_INFO_1 pGInfo1; nApi = NetGroupEnum(pServer, (DWORD)1, (PBYTE*)&pGInfo1, (DWORD)5000, &dwEntriesRead, &dwTotalEntries, &dwResumeHandle);
for (sIndex = 0; sIndex < dwEntriesRead; sIndex++) { wchar_t sTemp[150];
swprintf(sTemp, TEXT("%s;%s"), pGInfo1[sIndex].grpi1_name, pGInfo1[sIndex].grpi1_comment); m_lbGroupList.AddString(1, sTemp); }
NetApiBufferFree(pGInfo1);
while (dwResumeHandle != 0) { nApi = NetGroupEnum(pServer, (DWORD)1, (PBYTE*)&pGInfo1, (DWORD)5000, &dwEntriesRead, &dwTotalEntries, &dwResumeHandle);
for (sIndex = 0; sIndex < dwEntriesRead; sIndex++) { wchar_t sTemp[150];
swprintf(sTemp, TEXT("%s;%s"), pGInfo1[sIndex].grpi1_name, pGInfo1[sIndex].grpi1_comment); m_lbGroupList.AddString(1, sTemp); }
NetApiBufferFree(pGInfo1); } } m_lbGroupList.SetCurSel(0);
if (m_pApp->m_csCmdLine != L"") m_pApp->m_cps1.SetWizardButtons(PSWIZB_NEXT); else m_pApp->m_cps1.SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK); } else m_pApp->m_cps1.SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK); }
void CExGrp::OnDblclkGroupList() { UpdateData(TRUE); USHORT sSel = m_lbGroupList.GetCurSel(); m_pApp->m_csGroupName = m_lbGroupList.GetGroupName(sSel);
int sSelType = m_lbGroupList.GetSelType(sSel); if (sSelType == 1) { m_pApp->m_nGroupType = 0; m_pApp->m_cps1.SetActivePage(7); // global group
}
else { m_pApp->m_nGroupType = 1; m_pApp->m_cps1.SetActivePage(6); // local Group
}
}
|