2015-09-11 2 views
1

J'utilise le port Alpha WinRT Qt 5.6 sur Windows 10 et je veux accéder à l'API Wifi Direct de WinRT à partir de l'application Qt.À quel type d'API WinRT ai-je accès depuis l'application Qt?

Je sais que WRL devrait être utilisé pour cela. Mais j'obtiens un comportement différent en utilisant l'API Wifi Direct dans mon application et en essayant l'exemple Windows Universal à partir de Microsoft's GitHub repository. Plus précisément, j'obtiens E_NOTIMPL lorsque j'essaie d'activer WiFiDirectDevice, alors que l'exemple de Microsoft fonctionne très bien.

HStringReference strDevice(RuntimeClass_Windows_Devices_WiFiDirect_WiFiDirectDevice); 

ComPtr<IInspectable> insp; 
hr = RoActivateInstance(strDevice.Get(), insp.GetAddressOf()); 

Je suis confus au sujet de ce type d'API que je vous appelle (Windows magasin ou bureau) de l'application Qt?

+1

L'erreur est très précise, ce n'est vraiment pas mis en œuvre. Vous devez créer l'instance avec la fonction d'usine, FromIdAsync(). Bien démontré dans l'exemple de code. Vous allez probablement tomber dans la fosse du succès beaucoup plus rapidement lorsque vous écrivez un peu de code C++/CX à la place. –

+0

@HansPassant Qt recommande fortement d'utiliser WRL. Et je n'ai trouvé aucune information sur la façon d'utiliser C++/CX et API sans espace de noms ABI dans l'application Qt. Est-il possible de réaliser cela avec WRL? – Yrchgrchh

+0

@HansPassant Je veux dire pour appeler FromIdAsync, j'ai besoin d'activer IWifiDirectDeviceStatic interaface, ce qui me renvoie E_NOTIMPL aussi. Et il n'y a pas d'usines dans mon windows.devices.wifidirect.h – Yrchgrchh

Répondre

0

Je vais essayer de me répondre, même si je ne suis pas sûr à 100%.

Qt's documentation indique que «Qt for WinRT vous permet d'exécuter des applications Qt sur les périphériques prenant en charge les API Windows Store App». et "les applications WinRT s'exécutent dans un environnement en sandbox ..."

Basé sur ceci et le fait que le port Qt distinct pour WinRT qui fait le même travail que Windows Desktop Qt n'a pas de sens, je peux faire une hypothèse que Qt port crée l'application Windows Store et utilise l'API Windows Store.

Mais j'apprécierai vraiment si quelqu'un le confirme.

+0

Votre supposition est correcte. Mais la plupart du code de Qt Desktop fonctionne sans modification sur Qt WinRT. – Hyndrix