AssociateclsidwithRuntimeClassforwinrt::create_instanceFunctiontoLateBindRuntimeClassinExternalDLL
创始人
2024-09-20 19:00:57
0

将clsid与运行时类关联起来,以便在外部DLL中延迟绑定运行时类。

以下是一个示例,展示如何在Windows Runtime Component中使用winrt::create_instance函数来动态创建COM对象:

// HelloWorldComponent.h

namespace HelloWorldComponent
{
    public ref class HelloWorld sealed
    {
    public:
        void SayHello();
    };
}

// HelloWorldComponent.cpp

#include "pch.h"
#include "HelloWorldComponent.h"

using namespace winrt;

// 获取运行时类
namespace
{
    // 此类包装了Windows.Foundation.IInspectable接口,提供了一个方便的RefPtr/NULL检查的构造函数
    class inspectable : public implements
    {
    public:
        inspectable(void* p = nullptr) : m_ptr(p) {}
        Windows::Foundation::IInspectable get() const { return m_ptr; }

    private:
        Windows::Foundation::IInspectable m_ptr;
    };

    // 获取指定CLSID对应的运行时对象
    void get_runtime_object(winrt::hstring const& clsid, inspectable& object)
    {
        // 调用Windows API来获取IActivationFactory
        winrt::hstring typeName(L"");
        auto hr = ::CLSIDFromProgID(clsid.c_str(), &object.get_object()->m_pObjectIID);
        if (hr != S_OK)
        {
            winrt::throw_hresult(hr);
        }
        winrt::check_hresult(::CoGetClassObject(__uuidof(Windows::Foundation::IActivationFactory),
                                                CLSCTX_INPROC_SERVER,
                                                nullptr,
                                                IID_PPV_ARGS(&object)));
        object.get_object()->m_pObject->ActivateInstance(&object.get());
    }
}

namespace HelloWorldComponent
{
    void HelloWorld::SayHello()
    {
        // 动态获取COM对象的CLSID
        winrt::hstring clsid(L"HelloWorldCOMServer.HelloWorldObject");
        inspectable instance;
        get

相关内容

热门资讯

黑科技了解(微扑克俱乐部)外挂... 黑科技了解(微扑克俱乐部)外挂透视辅助下载(透视)细节揭秘(都是真的有挂)1、进入到微扑克俱乐部黑科...
黑科技美元局(线上微扑克)外挂... 黑科技美元局(线上微扑克)外挂透视辅助方法(透视)线上教程(其实存在有挂)1、在线上微扑克ai机器人...
黑科技有挂(wpk德州)外挂辅... 黑科技有挂(wpk德州)外挂辅助教程(透视)攻略教程(本来是真的有挂)1、wpk德州机器人多个强度级...
黑科技ai代打(WepOke)... 黑科技ai代打(WepOke)黑科技透明挂辅助助手(透视)透明挂教程(都是真的是有挂)黑科技ai代打...
黑科技玄学(微扑克德州)外挂透... 黑科技玄学(微扑克德州)外挂透视辅助插件(透视)2025新版技巧(总是真的有挂)1、微扑克德州ai辅...
黑科技辅助挂(约局互娱)外挂辅... 黑科技辅助挂(约局互娱)外挂辅助神器(透视)详细教程(好像真的有挂)1、超多福利:超高返利,海量正版...
黑科技辅助(wpk游戏)外挂透... 黑科技辅助(wpk游戏)外挂透视辅助教程(透视)技巧教程(本来是真的有挂)1、玩家可以在wpk游戏软...
黑科技教程(wpk俱乐部)外挂... 黑科技教程(wpk俱乐部)外挂透视辅助技巧(透视)wpk教程(真是真的有挂)1、wpk俱乐部透视辅助...
黑科技能赢(wePOKE)黑科... 黑科技能赢(wePOKE)黑科技透明挂辅助插件(透视)安装教程(都是存在有挂);该软件可以轻松地帮助...
黑科技辅助挂(wpk俱乐部)外... 黑科技辅助挂(wpk俱乐部)外挂透视辅助app(透视)细节揭秘(切实是真的有挂)1、wpk俱乐部系统...