33,311
社区成员
发帖
与我相关
我的任务
分享
#pragma once
#include "Main.cpp"
#include <Windows.h>
#import ".\\dm.dll" no_namespace
class CDm
{
public:
Idmsoft* RegDm();
void DMEdition(Idmsoft *dm);
};
#include "Dm.h"
CDm g_ObDm;
//大漠注册
//大漠收费注册
/*-------↓注册大漠↓--------*/
Idmsoft * CDm::RegDm()
{
static HMODULE hDmDll=NULL;
if (hDmDll==NULL)
{
hDmDll=LoadLibraryA(".\\dm.dll");
if (hDmDll==NULL)
{
return NULL;
}
}
static CLSID clsid={0};
if (clsid.Data1==0)
{
::CLSIDFromString( L"{26037a0e-7cbd-4fff-9c63-56f2d0770214}",&clsid);
if (clsid.Data1==0)
{
return NULL;
}
}
typedef HRESULT ( __stdcall * PDllGetClassObject)(REFCLSID rclsid,REFIID riid,LPVOID* ppv);
PDllGetClassObject dllGetClassObject =NULL;
dllGetClassObject = (PDllGetClassObject)::GetProcAddress(hDmDll,"DllGetClassObject");
if (dllGetClassObject==NULL)
{
return NULL;
}
IClassFactory* pcf = NULL;
HRESULT hr=dllGetClassObject(clsid,IID_IClassFactory,(void**)&pcf);
//HRESULT hr=dllGetClassObject(__uuidof(dmsoft),IID_IClassFactory,(void**)&pcf);//也可以产生GUID
if (SUCCEEDED(hr) && pcf!=NULL)
{
DWORD* PGetRes =NULL;
hr = pcf->CreateInstance(NULL, IID_IUnknown , (void**)&PGetRes);
if (SUCCEEDED(hr) && PGetRes!=NULL)
{
//成功
pcf->Release();
return (Idmsoft * )PGetRes;
}
if (pcf!=NULL)
{
pcf->Release();
}
}
//失败返回NULL
if (pcf!=NULL)
{
pcf->Release();
}
return NULL;
}
VOID CDm::DMEdition(Idmsoft *dm)
{
SetWindowText(GetDlgItem(hwdlg,IDCEDIT_01),dm->Ver());
}