Visual Studio 2017,C++MFC免注册调用大漠插件图文详细版基础基础

前言

有很多人都在问C++MFC怎么免注册调用?其实这些都有参考但是对于新手来说,编译器对新手的不友好,很多编程新手就算是找到别人的注册方法也分析运行不了,这是为什么呢?这是出教程的人根本就没考虑到新手,很多细节问题留下来了,然后你哪里就报错,代码报红,就编译不通过,然后你就觉得这个方法不行,然后就放弃了,今天我们就来解决这个问题,用最详细的图文来告诉你跟着我的步骤来你就能C++MFC免注册调用大漠插件

一、大漠插件是什么?

示例:大漠插件是基于C++封装 的一种找图找色找字的函数和工具,用了免注册调用就不会在系统上留下痕迹。

一、打开VS2017,新建MFC应用程序,下一步,基于对话框,完成


二、删除掉界面上的组件,添加个按钮,生成一下


三、自己的项目,属性,打开类向导,添加类,类型库中的MFC类,文件,位置,里面添加dm.dll


四、选中Idmsoft 点右边箭头移动过去然后点完成


五、确认,然后发现自动生成了大漠头文件


六、双击打开头文件修改成#import "dm.dll"no_namespace


七、然后把之前选的大漠DLL复制到源文件目录下


八、还有复制一份到生成的EXE下面


九、接着双击按钮进入函数


十、在控件事件上面加这些代码

#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;

}


十一、然后再控件事件里面加上调用代码

Idmsoft *dm = InitNewDm();

        CString c= dm->Ver();

        MessageBoxW(c);


十二、生成代码,调试免注册大漠插件成功了


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容