在本地c++ metro应用中使用剪贴板

using the clipboard in native c++ metro app

本文关键字:剪贴板 应用 metro c++      更新时间:2023-10-16

我正在寻找接口,使我能够访问本地c++ metro应用程序中的剪贴板-类似于c#中的datattransfer:: clipboard::SetContent。

有人能告诉我这些接口,如何使用WRL库?

在WRL中,您需要获得包含SetContent方法的iclipboardstatic接口。

#include <Windows.Foundation.h>
#include <Windows.ApplicationModel.DataTransfer.h>
#include <wrlwrapperscorewrappers.h>
#include <wrlclient.h>
using namespace ABI::Windows::Foundation;
using namespace Microsoft::WRL;
using namespace Microsoft::WRL::Wrappers;
using namespace ABI::Windows::ApplicationModel::DataTransfer;
    // Initialize the Windows Runtime.
    RoInitializeWrapper initialize(RO_INIT_MULTITHREADED);
    if (FAILED(initialize))
    {
        cout << "Failed to initialize";
    }
    ComPtr<IClipboardStatics> clipboard;
    HRESULT hr = GetActivationFactory(HStringReference(RuntimeClass_Windows_ApplicationModel_DataTransfer_Clipboard).Get(), &clipboard);
    if (FAILED(hr))
    {
        cout << "failed to create a runtime instance";
        return 0;
    }
    ComPtr<IDataPackage> datapackage;
    // create a package and set the data
    // ...
    clipboard->SetContent(datapackage.Get());