|
|
/*++
Copyright (C) 1997-2001 Microsoft Corporation
Module Name:
Abstract:
History:
--*/
// ExecMethodDlg.cpp : implementation file
//
#include "stdafx.h"
#include "wmitest.h"
#include "WMITestDoc.h"
#include "OpView.h"
#include "OpWrap.h"
#include "ExecMethodDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CExecMethodDlg dialog
CExecMethodDlg::CExecMethodDlg(CWnd* pParent /*=NULL*/) : CDialog(CExecMethodDlg::IDD, pParent) { //{{AFX_DATA_INIT(CExecMethodDlg)
//}}AFX_DATA_INIT
}
void CExecMethodDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CExecMethodDlg)
DDX_Control(pDX, IDC_METHOD, m_ctlMethods); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CExecMethodDlg, CDialog) //{{AFX_MSG_MAP(CExecMethodDlg)
ON_BN_CLICKED(IDC_EDIT_INPUT, OnEditInput) ON_BN_CLICKED(IDC_EDIT_OUT, OnEditOut) ON_BN_CLICKED(IDC_CLEAR_IN, OnClearIn) ON_BN_CLICKED(IDOK, OnExecute) ON_CBN_SELCHANGE(IDC_METHOD, OnSelchangeMethod) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CExecMethodDlg message handlers
void CExecMethodDlg::OnEditInput() { CWMITestDoc::EditGenericObject(IDS_EDIT_IN_PARAMS, m_pObjIn); }
void CExecMethodDlg::OnEditOut() { CWMITestDoc::EditGenericObject(IDS_EDIT_OUT_PARAMS, m_pObjOut); }
void CExecMethodDlg::OnClearIn() { //m_pObjIn = NULL;
//UpdateButtons();
OnSelchangeMethod(); }
void CExecMethodDlg::OnExecute() { CString strMethod; int iItem = m_ctlMethods.GetCurSel(); HRESULT hr;
m_ctlMethods.GetLBText(iItem, strMethod); hr = g_pOpView->GetDocument()->m_pNamespace->ExecMethod( _bstr_t(m_strObjPath), _bstr_t(strMethod), 0, NULL, m_pObjIn, &m_pObjOut, NULL);
if (SUCCEEDED(hr)) AfxMessageBox(IDS_EXEC_SUCCEEDED, MB_ICONINFORMATION | MB_OK); else CWMITestDoc::DisplayWMIErrorBox(hr);
UpdateButtons(); }
void CExecMethodDlg::OnSelchangeMethod() { LoadParams();
m_pObjOut = NULL;
UpdateButtons(); }
void CExecMethodDlg::UpdateButtons() { GetDlgItem(IDC_EDIT_INPUT)->EnableWindow(m_pObjIn != NULL); GetDlgItem(IDC_CLEAR_IN)->EnableWindow(m_pObjIn != NULL); GetDlgItem(IDC_EDIT_OUT)->EnableWindow(m_pObjOut != NULL); }
void CExecMethodDlg::LoadParams() { CString strMethod; int iItem = m_ctlMethods.GetCurSel(); HRESULT hr;
// Clear these out.
m_pObjIn = NULL; m_pObjOut = NULL;
if (iItem != -1) { m_ctlMethods.GetLBText(iItem, strMethod); hr = m_pClass->GetMethod( _bstr_t(strMethod), 0, &m_pObjIn, NULL);
if (FAILED(hr)) CWMITestDoc::DisplayWMIErrorBox(hr); }
UpdateButtons(); }
BOOL CExecMethodDlg::OnInitDialog() { CDialog::OnInitDialog(); CString strClass = m_pInfo->GetStringPropValue(L"__CLASS"); HRESULT hr;
// Setup the controls.
m_strObjPath = m_pInfo->GetObjText(); SetDlgItemText(IDC_NAME, m_strObjPath); // Setup the combo box.
CPropInfoArray *pProps = m_pInfo->GetProps(); POSITION pos = pProps->m_listMethods.GetHeadPosition();
while (pos) { CMethodInfo &info = pProps->m_listMethods.GetNext(pos);
m_ctlMethods.AddString(info.m_strName); }
if (m_ctlMethods.SelectString(-1, m_strDefaultMethod) == -1) m_ctlMethods.SetCurSel(0);
// Get the class definition.
hr = g_pOpView->GetDocument()->m_pNamespace->GetObject( _bstr_t(strClass), WBEM_FLAG_RETURN_WBEM_COMPLETE, NULL, &m_pClass, NULL);
if (SUCCEEDED(hr)) { // Fake a selchange.
OnSelchangeMethod(); } else { CWMITestDoc::DisplayWMIErrorBox(hr);
GetDlgItem(IDC_METHOD)->EnableWindow(FALSE); GetDlgItem(IDOK)->EnableWindow(FALSE);
UpdateButtons(); } return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
|