2014-09-17 5 views
5

Предполагая, что я на Windows 8+, и у меня есть приложение Win32/C. Могу ли приложение Win32 использовать WinRT API?Возможно, приложение Win32 вызывает WinRT API?

+1

@JonathanPotter: положить [это] (http://blogs.msdn.com/b/cdndevs/archive/2013/10/02/using-windows-8-winrt-apis-in-net-desktop-applications .aspx) и [this] (http://www.codeproject.com/Articles/12673/Calling-Managed-NET-C-COM-Objects-from-Unmanaged-C) вместе предполагает, что это должно быть возможно. Есть ли улов, которого я не вижу? –

+0

@HarryJohnston: Интересная ссылка. Возможно, это возможно в некоторой степени. Вы должны ответить на этот вопрос. –

+0

Какой API вы хотите назвать? –

ответ

5

Короткий ответ - да: How to: Activate and Use a Windows Runtime Component Using WRL

Длинный ответ: среды выполнения Windows в значительной степени базируется на COM технологии. Компоненты Windows Runtime на самом деле являются своего рода COM-объектами. Таким образом, общие правила для создания экземпляров и использования COM-объектов применяются к компонентам Windows Runtime.

Во-первых, вы должны инициализировать среду выполнения Windows. Существует полезный класс, который называется RoInitializeWrapper, который вы можете использовать для этого. Затем вы используете фабрику активации, чтобы получить указатель на интерфейс компонента Runtime Windows. Вы работаете с интерфейсом, и когда вы закончите, вы должны uninitialize среды выполнения Windows, уничтожив ваш RoInitializeWrapper.

+0

В этой статье представлено множество примеров: https://msdn.microsoft.com/en-us/library/windows/desktop/mt759320(v=vs.85).aspx(d=robot). В центре внимания статьи в Windows Information Protection, но он показывает примеры активации C++/CX и COM с помощью простого jane C++. –

Смежные вопросы