// HotfixOCX.cpp : Implementation of CHotfixOCX #include "stdafx.h" #include "HotfixManager.h" #include "HotfixOCX.h" #include #include #include #include ///////////////////////////////////////////////////////////////////////////// // CHotfixOCX BOOL CHotfixOCX::ResizeButtons(RECT *rc) { ::MoveWindow(WebButton, rc->left+40, rc->bottom - 40, 100, 28, TRUE); ::MoveWindow(UninstButton, rc->left+180, rc->bottom - 40, 100, 28, TRUE); ::MoveWindow(RptButton, rc->left+320, rc->bottom - 40, 100, 28, TRUE); return TRUE; } BOOL CHotfixOCX::CreateButton( HINSTANCE hInst, HWND hWnd, RECT * rc) { _TCHAR Temp[255]; DWORD dwSize = 255; BOOL bSuccess = TRUE; LoadString(hInst,IDS_BN_VIEW_WEB, Temp,dwSize); WebButton = CreateWindow (_T("button"), Temp,WS_CHILD | BS_DEFPUSHBUTTON|WS_VISIBLE,0,0,0,0,hWnd,(HMENU) IDC_WEB_BUTTON,hInst,NULL); LoadString(hInst,IDS_BN_UNINSTALL, Temp,dwSize); UninstButton = CreateWindow (_T("button"), Temp,WS_CHILD | BS_PUSHBUTTON|WS_VISIBLE,0,0,0,0,hWnd,(HMENU) IDC_UNINST_BUTTON,hInst,NULL); LoadString(hInst,IDS_BN_PRINT_REPORT, Temp,dwSize); RptButton = CreateWindow (_T("button"), Temp,WS_CHILD | BS_PUSHBUTTON|WS_VISIBLE,0,0,0,0,hWnd,(HMENU) IDC_RPT_BUTTON,hInst,NULL); /* if(!hButton) return NULL;*/ NONCLIENTMETRICS ncm; HFONT hFont; ncm.cbSize = sizeof(ncm); SystemParametersInfo(SPI_GETNONCLIENTMETRICS,sizeof (ncm),&ncm,0); // _tcscpy(ncm.lfMenuFont.lfFaceName,_T("MS Shell Dlg")); // = _T("MS Shell Dlg"); hFont = CreateFontIndirect(&ncm.lfMenuFont); SendMessage(WebButton,WM_SETFONT, (WPARAM)hFont ,MAKELPARAM(TRUE, 0)); SendMessage(UninstButton,WM_SETFONT, (WPARAM)hFont ,MAKELPARAM(TRUE, 0)); SendMessage(RptButton,WM_SETFONT, (WPARAM)hFont ,MAKELPARAM(TRUE, 0)); // MessageBox(NULL,_T("Got the Button Created"),_T(""),MB_OK); ResizeButtons(rc); return TRUE; } BOOL CHotfixOCX::ShowWebPage(_TCHAR *HotFix) { char temp[255]; char Command[255]; if (_tcscmp(HotFix,_T("\0"))) { wcstombs(temp,HotFix,255); sprintf(Command, "Explorer.exe \"http://Support.Microsoft.com/Support/Misc/KbLookup.asp?ID=%s\"", temp+1); //MessageBox(Command,NULL,MB_OK); WinExec( (char*)Command, SW_SHOWNORMAL); } return TRUE; } STDMETHODIMP CHotfixOCX::get_Command(long *pVal) { // TODO: Add your implementation code here return S_OK; } STDMETHODIMP CHotfixOCX::put_Command(long newVal) { // TODO: Add your implementation code here switch (newVal) { case IDC_VIEW_BY_FILE: // Change the current view type to by file. ListViews.SetViewMode(VIEW_BY_FILE); break; case IDC_VIEW_BY_HOTFIX: // Change the current view type to by hotfix ListViews.SetViewMode(VIEW_BY_HOTFIX); break; case IDC_UNINSTALL: // Uninstall the current hotfix if pointing at the local system ListViews.Uninstall(); break; case IDC_VIEW_WEB: // View the web page for the current hotfix ShowWebPage(ListViews.GetCurrentHotfix()); break; case IDC_EXPORT: ListViews.SaveToCSV(); // Generate a report for the current system break; case IDC_PRINT_REPORT: ListViews.PrintReport(); break; } return S_OK; } STDMETHODIMP CHotfixOCX::get_ComputerName(BSTR *pVal) { // TODO: Add your implementation code here // Return the name of the current target computer. return S_OK; } STDMETHODIMP CHotfixOCX::put_ComputerName(BSTR newVal) { // TODO: Add your implementation code here // Set the name of the target computer. //_bstr_t Val(newVal,FALSE); _tcscpy(ComputerName,newVal); ListViews.Initialize(ComputerName); return S_OK; } STDMETHODIMP CHotfixOCX::get_ProductName(BSTR *pVal) { // TODO: Add your implementation code here return S_OK; } STDMETHODIMP CHotfixOCX::put_ProductName(BSTR newVal) { _TCHAR Temp[255]; // TODO: Add your implementation code here // Set the name of the current producted selected in the snap-in scope tree. // _bstr_t Val(newVal,FALSE); _tcscpy (Temp,newVal); // MessageBox(Temp,_T("Recieved....."),MB_OK); ListViews.SetProductName(Temp); return S_OK; } STDMETHODIMP CHotfixOCX::get_ViewState(long *pVal) { // TODO: Add your implementation code here *pVal = ListViews.GetCurrentView(); return S_OK; } STDMETHODIMP CHotfixOCX::get_Remoted(BOOL *pVal) { // TODO: Add your implementation code here *pVal = ListViews.m_bRemoted; return S_OK; } STDMETHODIMP CHotfixOCX::get_HaveHotfix(BOOL *pVal) { // TODO: Add your implementation code here if (_tcscmp( ListViews.m_CurrentHotfix, _T("\0"))) *pVal = TRUE; else *pVal = FALSE; return S_OK; } STDMETHODIMP CHotfixOCX::get_CurrentState(long *pVal) { // TODO: Add your implementation code here *pVal = ListViews.GetState(); return S_OK; }