Angenommen, ich bin auf Windows 8 und ich habe eine Win32/C App. Kann meine Win32 App in WinRT API aufrufen?Möglich für Win32 App Aufruf einer WinRT API?
Antwort
Kurze Antwort - ja: How to: Activate and Use a Windows Runtime Component Using WRL
Lange Antwort: Windows-Runtime stark auf COM-Technologie basiert. Die Windows-Laufzeitkomponenten sind eigentlich eine Art von COM-Objekten. Daher gelten die allgemeinen Regeln für das Instanziieren und Verwenden von COM-Objekten für Windows-Laufzeitkomponenten.
Zuerst müssen Sie die Windows-Laufzeitumgebung initialisieren. Es gibt eine nützliche Klasse namens RoInitializeWrapper
, die Sie dazu verwenden können. Anschließend verwenden Sie eine Aktivierungsfactory, um einen Zeiger auf die Schnittstelle der Windows Runtime-Komponente zu erhalten. Sie arbeiten mit der Schnittstelle, und wenn Sie fertig sind, müssen Sie die Windows-Laufzeitumgebung nicht initialisieren, indem Sie Ihre RoInitializeWrapper
zerstören.
Dieser Artikel hat viele Beispiele - https://msdn.microsoft.com/en-us/library/windows/desktop/mt759320(v=vs.85).aspx(d=robot) - Der Schwerpunkt des Artikels ist unter Windows Information Protection, aber es zeigt sowohl C++/CX und COM Aktivierungsbeispiele mit plain jane C++. –
@ JonathanPotter: Putting [dies] (http://blogs.msdn.com/b/cdndevs/archive/2013/10/02/using-windows-8-winrt-apis-in-net-desktop-applications .aspx) und [dies] (http://www.codeproject.com/Articles/12673/Calling-Managed-NET-C-COM-Objects-from-Unmanaged-C) zusammen deutet darauf hin, dass es möglich sein sollte. Gibt es einen Haken, den ich nicht sehe? –
@HarryJohnston: Interessanter Link. Vielleicht ist es in gewisser Weise möglich. Sie sollten dies eine Antwort geben. –
Welche API möchten Sie anrufen? –