在控制台 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++->一般
- 将"Consume Windows Runtime Extension"设置为"Yes /ZW"
- 将这些路径添加到 "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++->代码生成下
- 将"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 相似。
我想在控制台 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++->一般
- 将"Consume Windows Runtime Extension"设置为"Yes /ZW"
- 将这些路径添加到 "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++->代码生成下
- 将"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 相似。