美文网首页
vs2017 调用大漠插件

vs2017 调用大漠插件

作者: 十年之后_b94a | 来源:发表于2019-12-24 14:13 被阅读0次

创建普通windows程序

首先下载dm.dll文件,下载之后放入工程目录,或者调试时放入debug目录

创建RegDM.h头文件

#pragma once
#import "dm.dll" no_namespace 
Idmsoft* InitNewDm();

创建RegDM.cpp文件

#include "pch.h"
#include "RegDM.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;
};

在pch.h头文件加入RegDM.h引用

#ifndef PCH_H
#define PCH_H
#include <Windows.h>
#include "RegDM.h"
// TODO: 添加要在此处预编译的标头

#include <Windows.h>
using namespace std;
#endif //PCH_H

测试

int main()
{
    std::cout << "Hello World!\n"; 
    Idmsoft *dm = InitNewDm();
    dm->MoveTo(500, 500);
    Sleep(54564564);
}

相关文章

网友评论

      本文标题:vs2017 调用大漠插件

      本文链接:https://www.haomeiwen.com/subject/ztxfoctx.html