Visual Studio 2017,C++MFC免注册调用大漠插件图文教程,详细版
前言
提示:这里可以添加本文要记录的大概内容:
有很多人都在问C++MFC怎么免注册调用?其实这些都有参考但是对于新手来说,编译器对新手的不友好,很多编程新手就算是找到别人的注册方法也分析运行不了,这是为什么呢?这是出教程的人根本就没考虑到新手,很多细节问题留下来了,然后你哪里就报错,代码报红,就编译不通过,然后你就觉得这个方法不行,然后就放弃了,今天我们就来解决这个问题,用最详细的图文来告诉你跟着我的步骤来你就能C++MFC免注册调用大漠插件
提示:以下是本篇文章正文内容,下面案例可供参考
一、大漠插件是什么?
示例:大漠插件 是基于C++封装 的一种找图找色的函数和工具,用了免注册调用就不会在系统上留下痕迹。
二、免注册步骤
1.打开VS2017,新建MFC应用程序,下一步,基于对话框,完成
2.删除掉界面上的组件,添加个按钮,生成一下
3.自己的项目,属性, 打开类向导,添加类,类型库中的MFC类,文件,位置,里面添加dm.dll
4.选中Idmsoft 点右边箭头移动过去然后点完成
5.确认,然后发现自动生成了大漠头文件
6.双击打开头文件修改成 #import “dm.dll” no_namespace
7.然后把之前选的大漠DLL复制到源文件目录下
8.还有复制一份到生成的EXE下面
9.接着双击按钮进入函数
10.在控件事件上面加这些代码
#include "Cdmsoft.h"
Idmsoft * InitNewDm()
{
Idmsoft*m_dm = NULL;
//COleVariant temp1,temp2;
bool m_bInit = false;
//下面直接加载dll创建对象,避免进行注册文件
typedef HRESULT(__stdcall * pfnGCO) (REFCLSID, REFIID, void**);
pfnGCO fnGCO = NULL;
HINSTANCE hdllInst = LoadLibrary(L"dm.dll");
fnGCO = (pfnGCO)GetProcAddress(hdllInst, "DllGetClassObject");
if (fnGCO != 0)
{
IClassFactory* pcf = NULL;
HRESULT hr = (fnGCO)(__uuidof(dmsoft), IID_IClassFactory, (void**)&pcf);
if (SUCCEEDED(hr) && (pcf != NULL))
{
hr = pcf->CreateInstance(NULL, __uuidof(Idmsoft), (void**)&m_dm);
if ((SUCCEEDED(hr) && (m_dm != NULL)) == FALSE)
return false;
}
pcf->Release();
m_bInit = true;
}
else
m_bInit = false;
return m_dm;
}
11.然后再控件事件里面加上调用代码
Idmsoft *dm = InitNewDm();
CString c= dm->Ver();
MessageBoxW(c);
此处为调用代码:
12.生成代码,调试免注册大漠插件成功了
完结