c# - 没有控制台窗口的 AppServiceBridge

标签 c# uwp desktop-bridge

我正在玩 Microsoft 的 UWP AppServiceBridgeSample ( here )。

它运行良好,但我想摆脱 BackgroundProcess 应用程序的控制台窗口。这样做的原因是我的 BackgroundProcess 启动了另一个 Win32 桌面应用程序并且只作为中介工作,所以我不想用控制台窗口打扰用户。 (是的,它可以最小化,但我宁愿完全不显示)。

我尝试使用提到的 API 隐藏它 here ,但运气不好,控制台窗口仍然可见。也没有将项目的输出类型从 Console Application 切换到 Windows Application.work。

我尝试过的另一件事是创建其他 BackgroundProcess 项目作为 Windows 应用程序。它运行良好,直到我调用 AppServiceConnection.OpenAsync(),这导致 BackgroundProcess 应用程序退出strong text,因此与 UWA 的连接不是可用。

static async void ThreadProc()
{
  try
  {
     AppServiceConnection connection = new AppServiceConnection();
     connection.AppServiceName = "CommunicationService";
     connection.PackageFamilyName = Windows.ApplicationModel.Package.Current.Id.FamilyName;
     connection.RequestReceived += Connection_RequestReceived;
     AppServiceConnectionStatus status = await connection.OpenAsync();
     //status check etc. ...
  }
  catch(Exception ex)
  {
     MessageBox.Show(ex.ToString());
  }
}

似乎只能从控制台应用程序打开 AppService 连接。

所以这是我的两个问题:

  1. 是否有可能隐藏后台进程的控制台窗口?
  2. 我能否将后台进程用作 Windows 应用程序,而 AppServiceConnectionOpenAsync 调用期间不会失败?

最佳答案

回复 1:进入项目设置并将输出类型从控制台更改为 Windows 应用程序。还要确保在完成后台进程之前 Main() 函数不会退出。这是一个更好的示例,它通过 Windows 应用程序显示了这一点: https://stefanwick.com/2017/05/26/uwp-calling-office-interop-apis/

enter image description here

回复 2:AppServiceConnection 在窗口应用程序中的工作方式也相同。确保添加对 Windows.winmd 的正确引用以便能够构建。如果您遇到问题,请发布一个具体问题,并详细说明您遇到的问题

关于c# - 没有控制台窗口的 AppServiceBridge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44307232/

相关文章:

c# - 为什么表达式末尾的重复分号和更多分号不会导致 Visual Studio 编译器出错?

c# - async/await中的return语句在哪里

uwp - UWP 中的 TextBox 未触发 KeyDown 事件

c# - 如何从 ServiceLocator 迁移到依赖注入(inject)?具体例子

uwp - 如何使用 Regedit 实用程序查看 win32 uwp 应用程序的虚拟注册表

c# - Math.Atan2 产生奇怪的结果?

c# - 包含 c# 和 javascript 的项目上的 Sonar runner

c# - 在 UWP 应用程序中合并 ResourceDictionary 初始化

c# - 如何检测Windows 10 S?

uwp - 如何在 StartupTask 中为可执行文件指定参数