本视频详细展示了在Visual Studio 2017环境下,如何无需注册即可调用大漠插件进行自动化操作,并提供具体实例供学习参考。
创建一个新的大漠对象Idmsoft:
```cpp
Idmsoft *InitNewDm() {
Idmsoft *m_dm = NULL;
// 直接加载dll并创建对象,避免注册文件操作
typedef HRESULT (__stdcall * pfnGCO)(REFCLSID, REFIID, void**);
pfnGCO fnGCO = NULL;
HINSTANCE hdllInst = LoadLibrary(dm.dll);
if (hdllInst != 0) {
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))
return m_dm;
else
return false;
}
pcf->Release();
}
}
FreeLibrary(hdllInst);
return m_dm;
}
```
这段代码的主要功能是创建一个新的大漠对象,通过加载dm.dll并使用DllGetClassObject函数来获取IClassFactory接口实例。接着利用这个工厂生成Idmsoft类的实例,并返回该指针。如果在任何步骤中遇到错误(例如dll无法被找到或操作失败),则会直接结束执行并返回false表示初始化不成功。