6

是否有新的宏可以在代码中确定应用程序是否在 WinRT 上运行?正如我正在使用的LoadLibrary那样,如果有一个宏可以将所有调用替换为LoadLibrary一个 to LoadPackagedLibrary...

我理解文档是正确的,因为我可以通过加载任何 DLL(只要它在我的包中)LoadPackagedLibrary,对吧?!(只要该 DLL 不使用列入黑名单的 API……)

4

3 回答 3

5

我最近更新到 Visual Studio 2012,并认为我找到了我的问题的答案:

在 Microsoft 标头中,宏WINAPI_FAMILY_PARTITION用于确定 WinAPI 的“级别”。目前有WINAPI_PARTITION_DESKTOPWINAPI_PARTITION_APP,因此我“猜想”通过这个宏可以区分桌面和地铁......

这两个宏导致另一组宏:#define WINAPI_FAMILY_APP WINAPI_PARTITION_APP#define WINAPI_FAMILY_DESKTOP_APP (WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_APP). 因此,如果WINAPI_FAMILY_APP定义了一个应该能够假设它是一个 Metro 应用程序......

于 2012-08-30T23:08:09.457 回答
2

要添加您的答案,请参阅这篇文章游戏的双重用途编码技术

在介绍部分

为 Windows 应用商店编写的应用程序使用 Windows 运行时 (WinRT) 和位于核心 API 系列中的 Win32 API 的受限子集(由设置为 WINAPI_PARTITION_APP 的 WINAPI_FAMILY 指示)。传统的 Win32 桌面应用程序可以访问更大的桌面 API 系列(由设置为 WINAPI_PARTITION_DESKTOP 的 WINAPI_FAMILY 表示),但这取决于每个功能所需的不同级别的操作系统支持

于 2013-06-26T03:42:18.470 回答
0

试试__WRL_WINRT_STRICT__。不完全确定这是正确的,但如果你去查看那个文件,它可能会有你想要的。

这里这里

于 2012-08-15T04:39:44.507 回答