// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A // PARTICULAR PURPOSE. // // Copyright (c) Microsoft Corporation. All rights reserved. #include "stdafx.h" #include "VCExplore.h" #include "AppUtilDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAppUtilDlg dialog CAppUtilDlg::CAppUtilDlg(CWnd* pParent /*=NULL*/) : CDialog(CAppUtilDlg::IDD, pParent) { //{{AFX_DATA_INIT(CAppUtilDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Initialize the members m_pCatalog = NULL; m_nUtilityType = UTILITY_TYPE_UNDEFINED; } void CAppUtilDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAppUtilDlg) DDX_Control(pDX, IDC_EDIT_APPLICATION_ID_VALUE, m_edtApp); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAppUtilDlg, CDialog) //{{AFX_MSG_MAP(CAppUtilDlg) ON_WM_CLOSE() ON_BN_CLICKED(IDC_BUTTON_APPLICATON_ID_SEARCH, OnAppSearch) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAppUtilDlg message handlers void CAppUtilDlg::set_Catalog(ICOMAdminCatalog *pCatalog) { // Only can have one Catalog object reference... release all prior references before assignment ReleaseCatalog(); m_pCatalog = pCatalog; } void CAppUtilDlg::OnClose() { // Release the reference to the Catalog object if needed ReleaseCatalog(); CDialog::OnClose(); } void CAppUtilDlg::set_UtilityType(int UtilityType) { // Continue only for valid requests if ((UtilityType == UTILITY_TYPE_START_APP) || (UtilityType == UTILITY_TYPE_STOP_APP)) m_nUtilityType = UtilityType; } BOOL CAppUtilDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the dialogs caption and load the appropriate icon resource switch (m_nUtilityType) { case UTILITY_TYPE_START_APP: SetWindowText("Start Application"); m_hIcon = AfxGetApp()->LoadIcon(IDI_START); break; case UTILITY_TYPE_STOP_APP: SetWindowText("Stop Application"); m_hIcon = AfxGetApp()->LoadIcon(IDI_STOP); break; } // Set the dialog's icon resource SetIcon(m_hIcon, true); // 32x32 icon SetIcon(m_hIcon, false); // 16x16 icon return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CAppUtilDlg::ReleaseCatalog() { // Release the reference to the Catalog object if needed if (NULL != m_pCatalog) m_pCatalog->Release(); } void CAppUtilDlg::OnOK() { // Continue only if we have a valid Catalog pointer if (NULL != m_pCatalog) { HRESULT hr = 0; // Retrieve the text from the edit control int nTextLength = m_edtApp.GetWindowTextLength() + 1; char* pBuf = new char[nTextLength]; m_edtApp.GetWindowText(pBuf, nTextLength); _bstr_t bstrApp = pBuf; delete [] pBuf; // Execute specified action switch (m_nUtilityType) { case UTILITY_TYPE_START_APP: hr = m_pCatalog->StartApplication(bstrApp); break; case UTILITY_TYPE_STOP_APP: hr = m_pCatalog->ShutdownApplication(bstrApp); break; default: MessageBox("Invalid utility type specified.\n\nNo processing will be performed.\n\nPress OK to continue.", "Error", (MB_OK | MB_ICONERROR)); break; } // Validate success/fail of the method call if FAILED(hr) MessageBox("Failed to perform the requested action.\n\nPress OK to continue.", "Error", (MB_OK | MB_ICONERROR)); } else MessageBox("Invalid Catalog reference.\n\nNo processing will be performed.\n\nPress OK to continue.", "Error", (MB_OK | MB_ICONERROR)); // Release the Catalog reference ReleaseCatalog(); CDialog::OnOK(); } void CAppUtilDlg::OnAppSearch() { OPENFILENAME ofn; char pFilePath[256]; char pFileTitle[256]; // Setup of OPENFILENAME structure ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = m_hWnd; ofn.hInstance = NULL; ofn.lpstrFilter = "All Files (*.*)\0*.*\0\0"; ofn.lpstrCustomFilter = (LPSTR) NULL; ofn.nMaxCustFilter = 0; ofn.nFilterIndex = 1; pFilePath[0] = '\0'; ofn.lpstrFile = pFilePath; ofn.nMaxFile = sizeof(pFilePath); ofn.lpstrFileTitle = pFileTitle; ofn.nMaxFileTitle = sizeof(pFileTitle); ofn.lpstrInitialDir = NULL; if (UTILITY_TYPE_START_APP == m_nUtilityType) ofn.lpstrTitle = "Select Application to start"; else ofn.lpstrTitle = "Select Application to stop"; ofn.Flags = (OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST); ofn.lpstrDefExt = "DLL"; ofn.nFileOffset = 0; ofn.nFileExtension = 0; ofn.lCustData = 0; // Invoke the file open common dialog GetOpenFileName(&ofn); // Update the value in the control m_edtApp.SetWindowText(ofn.lpstrFile); }