【问题标题】:Launch background win32 console application in UWP在 UWP 中启动后台 win32 控制台应用程序
【发布时间】:2017-09-15 01:55:55
【问题描述】:

一个Win32控制台应用程序可以由

启动
create_task(Windows::ApplicationModel::FullTrustProcessLauncher::LaunchFullTrustProcessForCurrentAppAsync()).then([&] {});

await Windows.ApplicationModel.FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();

遵循 AppService Bridge 示例。即使我不想输入/输出任何内容,也会显示一个通用窗口。我在 CreateProcess 中没有找到像 SW_HIDE 这样的参数。如何在 UWP 中启动后台 win32 控制台应用程序?

【问题讨论】:

    标签: c# c++ winapi uwp desktop-bridge


    【解决方案1】:

    在Win32进程的项目设置中,将输出类型从Console Application更改为Windows Application,如下所示:

    谢谢, Stefan Wick - Windows 开发者平台

    【讨论】:

    • 我相信,OP 想要启动一个他们无法更改的外部命令行应用程序,并阻止系统分配和/或显示命令行窗口。
    • 它不是一个外部组件,该组件是同一个包的一部分,由应用开发者控制。在示例中,该组件设置为输出类型 =Console Application。我实际上写了那个样本,我是故意这样做的,这样你就可以看到发生了什么:-)。我了解现实世界中您不需要控制台,因此您可以将输出类型更改为 Windows 应用程序。作为参考,这是 OP 所指的示例:github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/…
    • 我不相信 OP 的最终目标是在不分配控制台的情况下运行示例代码。他们似乎以此为起点,但正在寻找一个通用解决方案来解决这个问题:如何在不分配和/或显示控制台窗口的情况下启动命令行应用程序?
    • UWP 最初不支持/可能不支持您所说的内容。唯一的方法是从您自己的包中启动 Win32 进程,这就是示例演示的内容。来自 OP 的问题是如何没有那个命令窗口,这就是我的回答。现在,他们也可以从该进程启动其他进程(因为它在应用程序容器之外运行),但首先他们需要克服我在上面回答的问题中解释的问题。
    • 同样,这并不完全令人信服。仅仅因为这个外部命令行工具是同一个应用程序包的一部分并不意味着他们拥有代码或可以随意更改它。我很肯定,一个在 Visual Studio IDE 上工作的开发人员不能直接进入并更改 cl.exe 的子系统,即使 IDE 和编译器是同一个安装程序的一部分(即类似于应用程序包)。无论如何,只有 OP 才能知道他们需要什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多