没有控制台窗口的AppServiceBridge

kib*_*rCZ 3 c# uwp desktop-bridge

我正在玩微软的UWP AppServiceBridgeSample(这里).

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

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

我尝试过的另一件事是将其他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());
  }
}
Run Code Online (Sandbox Code Playgroud)

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

所以这是我的两个问题:

  1. 是不是有可能隐藏后台进程的控制台窗口?
  2. 我可以将后台进程用作Windows应用程序,而AppServiceConnection不会在OpenAsync通话过程中失败吗?

Ste*_*SFT 5

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

在此输入图像描述

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

  • 在完成使用该过程之前,还需要确保不要退出Main().我已相应地更新了我的答案并指出了一个更好的示例项目. (2认同)