convertactivexctrldlg.cpp
来自「这是VCF框架的代码」· C++ 代码 · 共 142 行
CPP
142 行
// ConvedrtActiveXCtrlDlg.cpp : implementation file//#include "stdafx.h"#include "comtovcfclasswizard.h"#include "ConvertActiveXCtrlDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// ConvertActiveXCtrlDlg dialogConvertActiveXCtrlDlg::ConvertActiveXCtrlDlg(CWnd* pParent /*=NULL*/) : CDialog(ConvertActiveXCtrlDlg::IDD, pParent){ //{{AFX_DATA_INIT(ConvertActiveXCtrlDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT}void ConvertActiveXCtrlDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(ConvertActiveXCtrlDlg) DDX_Control(pDX, IDC_ACTIVEX_CTRL_LIST, m_activeXCtrlsList); //}}AFX_DATA_MAP if ( TRUE == pDX->m_bSaveAndValidate ) { int i = m_activeXCtrlsList.GetSelectionMark(); CString selectedAxCtrlCLSID = m_activeXCtrlsList.GetItemText( i, 1 ); memset( &m_selectedAxCtrlCLSID, 0, sizeof(CLSID) ); _bstr_t tmpCLSID = selectedAxCtrlCLSID; HRESULT hr = CLSIDFromString( (LPOLESTR)tmpCLSID, &m_selectedAxCtrlCLSID ); }}BEGIN_MESSAGE_MAP(ConvertActiveXCtrlDlg, CDialog) //{{AFX_MSG_MAP(ConvertActiveXCtrlDlg) //}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// ConvertActiveXCtrlDlg message handlersBOOL ConvertActiveXCtrlDlg::OnInitDialog() { CDialog::OnInitDialog(); m_imageList.Create( 16, 16, ILC_COLOR4 | ILC_MASK, 0, 5 ); CBitmap bmp; { AFX_MANAGE_STATE( AfxGetModuleState() ); bmp.LoadBitmap( IDB_AX_CTRL ); m_imageList.Add( &bmp, RGB(0,255,0) ); bmp.Detach(); } m_activeXCtrlsList.SetImageList( &m_imageList, LVSIL_SMALL ); m_activeXCtrlsList.InsertColumn( 0, "Registered ActiveX Controls", LVCFMT_LEFT, 400 ); m_activeXCtrlsList.InsertColumn( 1, "CLSID", LVCFMT_LEFT, 200 ); FindAllActiveXControls(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE}BOOL ConvertActiveXCtrlDlg::HasServer32( HKEY hkCLSID ){ HKEY hkTemp ; if ((RegOpenKey( hkCLSID, _T("InprocServer32"), &hkTemp ) == ERROR_SUCCESS) || (RegOpenKey( hkCLSID, _T("InprocHandler32"), &hkTemp ) == ERROR_SUCCESS) || (RegOpenKey( hkCLSID, _T("LocalServer32"), &hkTemp ) == ERROR_SUCCESS)) { RegCloseKey( hkTemp ) ; return TRUE ; } return FALSE ;}void ConvertActiveXCtrlDlg::FindAllActiveXControls(){ USES_CONVERSION; HKEY hkCLSID ; CWaitCursor waitCrsr; if (RegOpenKey( HKEY_CLASSES_ROOT, _T("CLSID"), &hkCLSID) == ERROR_SUCCESS) { LONG cb = 0; TCHAR szBuf[_MAX_PATH] ; TCHAR szName[64] ; TCHAR szCLSID[64] ; DWORD dwIndex ; long itemIndex = 0; for ( dwIndex = 0 ; RegEnumKey( hkCLSID, dwIndex, szCLSID, sizeof(szCLSID)) == ERROR_SUCCESS ; ++dwIndex ) { cb = sizeof(szName); if (RegQueryValue( hkCLSID, (LPTSTR)szCLSID, szName, &cb) == ERROR_SUCCESS) { HKEY hkClass, hkTemp ; if (RegOpenKey( hkCLSID, szCLSID, &hkClass ) == ERROR_SUCCESS) { BOOL hasServer32 = HasServer32( hkClass ) ; if ( TRUE == hasServer32 ) { wsprintf( szBuf, _T("CLSID\\%s\\Control"), (LPTSTR)szCLSID) ; if (RegOpenKey( HKEY_CLASSES_ROOT, szBuf, &hkTemp ) == ERROR_SUCCESS) { RegCloseKey( hkTemp ) ; //goto lblInsertInList ; int idx = m_activeXCtrlsList.InsertItem( itemIndex, szName ); m_activeXCtrlsList.SetItemText( idx, 1, szCLSID ); itemIndex++; } } } RegCloseKey( hkClass ) ; } } RegCloseKey( hkCLSID ) ; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?