没有控制台窗口的AppServiceBridge

时间:2017-06-01 12:12:38

标签: c# uwp desktop-bridge

我正在使用微软的UWP AppServiceBridgeSamplehere)。

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

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

我尝试过的另一件事是将其他BackgroundProcess项目创建为Windows应用程序。它运行正常,直到我拨打AppServiceConnection.OpenAsync(),这导致BackgroundProcess应用程序退出强文,因此无法连接到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应用程序,AppServiceConnection来电期间OpenAsync没有失败?

1 个答案:

答案 0 :(得分:5)

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

enter image description here

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