📄 usbkeypnpactivex.cpp
字号:
// USBKeyPnPActiveX.cpp : Implementation of CUSBKeyPnPActiveXApp and DLL registration.
#include "stdafx.h"
#include "USBKeyPnPActiveX.h"
#include <comcat.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CUSBKeyPnPActiveXApp NEAR theApp;
const GUID CDECL BASED_CODE _tlid =
{ 0x6d9d01a3, 0x184e, 0x4215, { 0xa9, 0x42, 0x92, 0x6a, 0xd5, 0xb0, 0xc6, 0x2f } };
const WORD _wVerMajor = 1;
const WORD _wVerMinor = 0;
//给控件设置安全ID
//Add begin 给控件设置安全ID
//下面的这个ID号是根据Class information for BjcaKeyCtrl
// [ uuid(0CF5259B-A812-4B6E-9746-ACF7279FEF74))修改的。
const IID BASED_CODE BJCAPNPKEYID =
{0x0CF5259B, 0xA812, 0x4B6E, 0x97, 0x46, 0xAC, 0xF7, 0x27, 0x9F, 0xEF, 0x74};
const CATID CATID_SafeForScripting =
{0x7dd95801,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
const CATID CATID_SafeForInitializing =
{0x7dd95802,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
HRESULT CreateComponentCategory(CATID catid, WCHAR * catDescription)
{
ICatRegister * pcr = NULL;
HRESULT hr = S_OK;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL,
CLSCTX_INPROC_SERVER, IID_ICatRegister, (void **)&pcr);
if(FAILED(hr))
return hr;
CATEGORYINFO catinfo;
catinfo.catid = catid;
catinfo.lcid = 0x0409;
int len = wcslen(catDescription);
if(len > 127)
len = 127;
wcsncpy(catinfo.szDescription,catDescription,len);
catinfo.szDescription[len] = '\0';
hr = pcr->RegisterCategories(1, &catinfo);
pcr->Release();
return hr;
}
//注册组件
HRESULT RegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
{
ICatRegister * pcr = NULL;
HRESULT hr = S_OK;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL,
CLSCTX_INPROC_SERVER, IID_ICatRegister, (void **)&pcr);
if(SUCCEEDED(hr))
{
CATID rgcatid[1];
rgcatid[0] = catid;
hr = pcr->RegisterClassImplCategories(clsid,1,rgcatid);
}
if(pcr != NULL)
pcr->Release();
return hr;
}
////////////////////////////////////////////////////////////////////////////
// CUSBKeyPnPActiveXApp::InitInstance - DLL initialization
BOOL CUSBKeyPnPActiveXApp::InitInstance()
{
BOOL bInit = COleControlModule::InitInstance();
if (bInit)
{
// TODO: Add your own module initialization code here.
}
return bInit;
}
////////////////////////////////////////////////////////////////////////////
// CUSBKeyPnPActiveXApp::ExitInstance - DLL termination
int CUSBKeyPnPActiveXApp::ExitInstance()
{
// TODO: Add your own module termination code here.
return COleControlModule::ExitInstance();
}
/////////////////////////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG_E_CLASS);
HRESULT hr;
//创建安全初始化组件
hr = CreateComponentCategory(CATID_SafeForInitializing,
L"BJCAKEYCTRL safty for Initializing!");
if(FAILED(hr))
return hr;
//注册安全初始化组件BJCAKEYID
hr = RegisterCLSIDInCategory(BJCAPNPKEYID, CATID_SafeForInitializing);
if(FAILED(hr))
return hr;
//创建安全脚本组件
hr = CreateComponentCategory(CATID_SafeForScripting,
L"BJCAKEYCTRL safty for Scripting!");
if(FAILED(hr))
return hr;
//注册安全脚本组件
hr = RegisterCLSIDInCategory(BJCAPNPKEYID, CATID_SafeForScripting);
if(FAILED(hr))
return hr;
return NOERROR;
}
/////////////////////////////////////////////////////////////////////////////
// DllUnregisterServer - Removes entries from the system registry
STDAPI DllUnregisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
return ResultFromScode(SELFREG_E_CLASS);
return NOERROR;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -