在控制台 C++ 应用程序中使用 WIndows::System::Launcher class 成员函数的 C++ 示例

C++ example for using WIndows::System::Launcher class member functions in a console C++ app

我想在控制台 C++ 应用程序中使用 "Launcher class" Launcher class 的成员函数,而不是 windows 商店应用程序(而是在控制台应用程序 EXE 中)。

与任何包含 DLL、头文件作为最低要求的一般 WIndows API 不同,它包含一个命名空间 Windows::System 和一个元数据 "Windows.winmd"。

所以这意味着它使用 .NET 框架(公共语言运行时)为此名称空间 WIndows.System 中的启动器 class。

我在属性 -> 配置 -> 通用语言运行时支持中更改了 VS 设置以包括 CLR。​​

我正在使用:

using namespace System;

但我发现这里没有启动器 class。 我也试过

using namespace Windows.System;

因为启动器 class 在 WIndows.System 命名空间中,但在这里也找不到启动器 class。

我可以寻求有关使用 Launcher class 成员函数的代码片段的帮助吗?

最初我不认为这可以完成,但它似乎是可能的。

Sridhar Poduri 组合了一个 Visual Studio 扩展,用于创建 C++/CX 控制台应用程序项目模板。 https://visualstudiogallery.msdn.microsoft.com/e9210454-c1b5-4d89-b8ca-92a64dfb8d28 从该模板构建的项目将能够调用 C++/CX APIs,例如 Windows::System::Launcher::LaunchURIAsync()。但是我不确定这个特定的 API 是否可以从命令行应用程序中使用,当我尝试它时它引发了一个异常。

如果您想知道如何将普通的 Win32 控制台应用程序模板更改为使用 C++/CX,请在您的项目设置中更改以下内容。 在 C/C++->一般

  1. 将"Consume Windows Runtime Extension"设置为"Yes /ZW"
  2. 将这些路径添加到 "Additional #using directories":"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\Microsoft.VCLibs.0\References\CommonConfiguration\neutral\;C:\Program Files (x86)\Windows Kits.1\References\CommonConfiguration\Neutral;%(AdditionalUsingDirectories)"

在C/C++->代码生成下

  1. 将"Enable Minimal Rebuild"设置为"No /Gm-"

进行这些更改应该允许您编译使用 C++/CX API 的代码。这是一些示例代码:

#include <iostream>
using namespace std;
using namespace Platform;

int main(Platform::Array<Platform::String^>^ args)
{
    Platform::Details::Console::WriteLine("Hello World");

    return 0;
}

此外,我只是想指出,您引用的 Launcher API 绝对不是 C++\CLI。它是 C++\CX,语法与 C++\CLI 相似。