3

我在玩微软的 UWP AppServiceBridgeSample这里)。

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

我曾尝试使用此处提到的 API 隐藏它,但没有运气,控制台窗口仍然可见。也没有将项目的输出类型从Console Application.workWindows 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
4

1 回答 1

5

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

在此处输入图像描述

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

于 2017-06-02T00:42:28.570 回答