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.
186 lines
4.6 KiB
186 lines
4.6 KiB
// WMICtrSysmonDlg.cpp : Implementation of CWMICtrSysmonDlg
|
|
#include "precomp.h"
|
|
#include "WMICtrSysmonDlg.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWMICtrSysmonDlg
|
|
|
|
CWMICtrSysmonDlg::CWMICtrSysmonDlg()
|
|
{
|
|
_tcscpy(m_strMachineName,_T(""));
|
|
m_eStatus = Status_Success;
|
|
m_hWndBusy = new HWND;
|
|
}
|
|
|
|
CWMICtrSysmonDlg::CWMICtrSysmonDlg(LPCTSTR strMachName)
|
|
{
|
|
_tcsncpy(m_strMachineName,strMachName, ARRAYSIZE(m_strMachineName));
|
|
m_eStatus = Status_Success;
|
|
m_hWndBusy = new HWND;
|
|
}
|
|
|
|
CWMICtrSysmonDlg::~CWMICtrSysmonDlg()
|
|
{
|
|
if(m_hWndBusy != NULL)
|
|
{
|
|
SendMessage(*(m_hWndBusy),WM_CLOSE_BUSY_DLG,0,0);
|
|
delete m_hWndBusy;
|
|
}
|
|
}
|
|
|
|
LRESULT CWMICtrSysmonDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
CWmiCtrsDlg pDlg;
|
|
DisplayBusyDialog();
|
|
TCHAR strCtr[1024];
|
|
ISystemMonitor *pSysMon = NULL;
|
|
HRESULT hr = GetDlgControl(IDC_SYSMON_OCX,__uuidof(ISystemMonitor)/*IID_ISystemMonitor*/,(void **)&pSysMon);
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
ICounters *pCounters = NULL;
|
|
pCounters = pSysMon->GetCounters();
|
|
try
|
|
{
|
|
_tcscpy(strCtr,m_strMachineName);
|
|
_tcscat(strCtr,_T("\\WINMGMT Counters\\Connections"));
|
|
pCounters->Add(strCtr);
|
|
_tcscpy(strCtr,m_strMachineName);
|
|
_tcscat(strCtr,_T("\\WINMGMT Counters\\Delivery Backup (Bytes)"));
|
|
pCounters->Add(strCtr);
|
|
_tcscpy(strCtr,m_strMachineName);
|
|
_tcscat(strCtr,_T("\\WINMGMT Counters\\Internal Objects"));
|
|
pCounters->Add(strCtr);
|
|
_tcscpy(strCtr,m_strMachineName);
|
|
_tcscat(strCtr,_T("\\WINMGMT Counters\\Internal Sinks"));
|
|
pCounters->Add(strCtr);
|
|
_tcscpy(strCtr,m_strMachineName);
|
|
_tcscat(strCtr,_T("\\WINMGMT Counters\\Tasks In Progress"));
|
|
pCounters->Add(strCtr);
|
|
_tcscpy(strCtr,m_strMachineName);
|
|
_tcscat(strCtr,_T("\\WINMGMT Counters\\Tasks Waiting"));
|
|
pCounters->Add(strCtr);
|
|
_tcscpy(strCtr,m_strMachineName);
|
|
_tcscat(strCtr,_T("\\WINMGMT Counters\\Total API calls"));
|
|
pCounters->Add(strCtr);
|
|
_tcscpy(strCtr,m_strMachineName);
|
|
_tcscat(strCtr,_T("\\WINMGMT Counters\\Users"));
|
|
pCounters->Add(strCtr);
|
|
CloseBusyDialog();
|
|
}
|
|
catch(...)
|
|
{
|
|
m_eStatus = Status_CounterNotFound;
|
|
CloseBusyDialog();
|
|
EndDialog(0);
|
|
}
|
|
}
|
|
/* else
|
|
{
|
|
MessageBox(_T("Could not get the Interface Pointer"),_T("Failure"));
|
|
}
|
|
*/
|
|
return 1; // Let the system set the focus
|
|
}
|
|
|
|
LRESULT CWMICtrSysmonDlg::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
EndDialog(wID);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CWMICtrSysmonDlg::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
EndDialog(wID);
|
|
return 0;
|
|
}
|
|
|
|
void CWMICtrSysmonDlg::DisplayBusyDialog()
|
|
{
|
|
DWORD dwThreadId;
|
|
m_hThread = CreateThread(NULL,0,BusyThread,(LPVOID)this,0,&dwThreadId);
|
|
|
|
}
|
|
|
|
DWORD WINAPI BusyThread(LPVOID lpParameter)
|
|
{
|
|
CWMICtrSysmonDlg *pDlg = (CWMICtrSysmonDlg *)lpParameter;
|
|
|
|
INT_PTR ret = DialogBoxParam(_Module.GetModuleInstance(),
|
|
MAKEINTRESOURCE(IDD_ANIMATE),
|
|
NULL, BusyAVIDlgProc,
|
|
(LPARAM)pDlg);
|
|
|
|
return (DWORD) ret;
|
|
}
|
|
void CWMICtrSysmonDlg::CloseBusyDialog()
|
|
{
|
|
if(m_hWndBusy != NULL)
|
|
{
|
|
//Now close the busy Dialog
|
|
::SendMessage(*(m_hWndBusy),WM_CLOSE_BUSY_DLG,0,0);
|
|
}
|
|
|
|
::SetForegroundWindow(this->m_hWnd);
|
|
}
|
|
|
|
INT_PTR CALLBACK BusyAVIDlgProc(HWND hwndDlg,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam)
|
|
{
|
|
BOOL retval = FALSE;
|
|
switch(uMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
{//BEGIN
|
|
//lParam = ANIMCONFIG *
|
|
CWMICtrSysmonDlg *pDlg = (CWMICtrSysmonDlg *)lParam;
|
|
SetWindowLongPtr(hwndDlg, DWLP_USER, (LPARAM)pDlg);
|
|
*(pDlg->m_hWndBusy) = hwndDlg;
|
|
|
|
HWND hAnim = GetDlgItem(hwndDlg, IDC_ANIMATE);
|
|
HWND hMsg = GetDlgItem(hwndDlg, IDC_MSG);
|
|
|
|
Animate_Open(hAnim, MAKEINTRESOURCE(IDR_AVIWAIT));
|
|
|
|
TCHAR caption[100] = {0}, msg[256] = {0};
|
|
|
|
::LoadString(_Module.GetModuleInstance(), IDS_DISPLAY_NAME, caption, 100);
|
|
|
|
::LoadString(_Module.GetModuleInstance(), IDS_CONNECTING, msg, 256);
|
|
|
|
SetWindowText(hwndDlg, caption);
|
|
SetWindowText(hMsg, msg);
|
|
|
|
retval = TRUE;
|
|
break;
|
|
}
|
|
case WM_CLOSE_BUSY_DLG:
|
|
{
|
|
EndDialog(hwndDlg, IDCANCEL);
|
|
break;
|
|
}
|
|
case WM_COMMAND:
|
|
{
|
|
// they're only one button.
|
|
if(HIWORD(wParam) == BN_CLICKED)
|
|
{
|
|
EndDialog(hwndDlg, IDCANCEL);
|
|
}
|
|
retval = TRUE; // I processed it.
|
|
break;
|
|
}
|
|
case WM_DESTROY:
|
|
{// BEGIN
|
|
retval = TRUE; // I processed it.
|
|
break;
|
|
} //END
|
|
default:
|
|
{
|
|
retval = FALSE; // I did NOT process this msg.
|
|
break;
|
|
}
|
|
} //endswitch uMsg
|
|
|
|
return retval;
|
|
}
|