mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
4.3 KiB
203 lines
4.3 KiB
/*++
|
|
|
|
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
|
|
}
|