2014-09-17 20 views
5

Giả sử rằng tôi đang sử dụng Windows 8+ và tôi có ứng dụng Win32/C. Có thể gọi Win32 App của tôi vào API WinRT không?Có thể cho Win32 App gọi API WinRT không?

+1

@JonathanPotter: đặt [this] (http://blogs.msdn.com/b/cdndevs/archive/2013/10/02/using-windows-8-winrt-apis-in-net-desktop-applications .aspx) và [this] (http://www.codeproject.com/Articles/12673/Calling-Managed-NET-C-COM-Objects-from-Unmanaged-C) cùng nhau gợi ý rằng nó sẽ là có thể. Có bắt tôi không nhìn thấy? –

+0

@HarryJohnston: Thú vị liên kết. Có lẽ nó có thể trong một số cách hạn chế. Bạn nên làm cho câu trả lời này. –

+0

API nào bạn muốn gọi? –

Trả lời

5

Câu trả lời ngắn - yes: How to: Activate and Use a Windows Runtime Component Using WRL

Long trả lời: của Windows Runtime được chủ yếu dựa trên công nghệ COM. Các thành phần Windows Runtime thực sự là một số loại đối tượng COM. Vì vậy, các quy tắc phổ biến cho instantiating và sử dụng các đối tượng COM áp dụng cho các thành phần Windows Runtime.

Trước tiên, bạn phải khởi chạy môi trường Windows Runtime. Có một lớp hữu ích được gọi là RoInitializeWrapper bạn có thể sử dụng để thực hiện việc này. Sau đó, bạn sử dụng một nhà máy kích hoạt để có được một con trỏ đến giao diện của thành phần Windows Runtime. Bạn làm việc với giao diện, và khi bạn hoàn thành, bạn phải uninitialize môi trường Windows Runtime bằng cách phá hủy RoInitializeWrapper của bạn.

+0

Bài viết này có rất nhiều ví dụ - https://msdn.microsoft.com/en-us/library/windows/desktop/mt759320(v=vs.85).aspx(d=robot) - Trọng tâm của bài viết là trên Windows Information Protection nhưng nó hiển thị cả hai ví dụ kích hoạt C++/CX và COM với C++ đơn giản. –

Các vấn đề liên quan