123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- // dllmain.cpp : 定义 DLL 应用程序的入口点。
- #include <tchar.h>
- #import "vgcoreauto.tlb"
- BOOL APIENTRY DllMain( HMODULE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
- {
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
- }
- class CVGAppPlugin : public VGCore::IVGAppPlugin
- {
- private:
- VGCore::IVGApplication *m_pApp;
- ULONG m_ulRefCount;
- long m_lCookie;
- bool m_bEnabled;
- public:
- CVGAppPlugin();
- // IUnknown
- public:
- STDMETHOD(QueryInterface)(REFIID riid, void **ppvObject);
- STDMETHOD_(ULONG, AddRef)(void)
- {
- return ++m_ulRefCount;
- }
- STDMETHOD_(ULONG, Release)(void)
- {
- ULONG ulCount = --m_ulRefCount;
- if (ulCount == 0)
- {
- delete this;
- }
- return ulCount;
- }
- // IDispatch
- public:
- STDMETHOD(GetTypeInfoCount)(UINT *pctinfo)
- {
- return E_NOTIMPL;
- }
- STDMETHOD(GetTypeInfo)(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
- {
- return E_NOTIMPL;
- }
- STDMETHOD(GetIDsOfNames)(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
- {
- return E_NOTIMPL;
- }
- STDMETHOD(Invoke)(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
- // IVGAppPlugin
- public:
- STDMETHOD(raw_OnLoad)(VGCore::IVGApplication *Application);
- STDMETHOD(raw_StartSession)();
- STDMETHOD(raw_StopSession)();
- STDMETHOD(raw_OnUnload)();
- };
- CVGAppPlugin::CVGAppPlugin() :
- m_pApp(NULL),
- m_lCookie(0),
- m_ulRefCount(1),
- m_bEnabled(false)
- {
- }
- STDMETHODIMP CVGAppPlugin::QueryInterface(REFIID riid, void **ppvObject)
- {
- HRESULT hr = S_OK;
- m_ulRefCount++;
- if (riid == IID_IUnknown)
- {
- *ppvObject = (IUnknown *)this;
- }
- else if (riid == IID_IDispatch)
- {
- *ppvObject = (IDispatch *)this;
- }
- else if (riid == __uuidof(VGCore::IVGAppPlugin))
- {
- *ppvObject = (VGCore::IVGAppPlugin *)this;
- }
- else
- {
- m_ulRefCount--;
- hr = E_NOINTERFACE;
- }
- return hr;
- }
- STDMETHODIMP CVGAppPlugin::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
- {
- return S_OK;
- }
- STDMETHODIMP CVGAppPlugin::raw_OnLoad(VGCore::IVGApplication *Application)
- {
- m_pApp = Application;
- if (m_pApp)
- {
- m_pApp->AddRef();
- }
- return S_OK;
- }
- STDMETHODIMP CVGAppPlugin::raw_StartSession()
- {
- MessageBox(NULL, _T("插件加载到内存,本CPG使用VC2022 X64编译"), _T("蘭雅CPG64"), MB_ICONSTOP);
- return S_OK;
- }
- STDMETHODIMP CVGAppPlugin::raw_StopSession()
- {
- MessageBox(NULL, _T("插件结束"), _T("蘭雅CPG64"), MB_ICONSTOP);
- return S_OK;
- }
- STDMETHODIMP CVGAppPlugin::raw_OnUnload()
- {
- if (m_pApp)
- {
- m_pApp->Release();
- m_pApp = NULL;
- }
- return S_OK;
- }
- extern "C" __declspec(dllexport) DWORD APIENTRY AttachPlugin(VGCore::IVGAppPlugin **ppIPlugin)
- {
- *ppIPlugin = new CVGAppPlugin;
- return 0x100;
- }
|