Как минимизировать приложение для настольного моста после входа в систему? - PullRequest
0 голосов
/ 07 апреля 2020

Я уже знаю, как настроить приложение для запуска при входе в систему. Это мой код:

<uap5:Extension
    Category="windows.startupTask"
    Executable="DC.AutoRun\AutoRun.exe"
    EntryPoint="Windows.FullTrustApplication">
  <uap5:StartupTask
    TaskId="AutoRunTest"
    Enabled="true"
    DisplayName="AutoRun Test" />
</uap5:Extension>

, но мне нужно минимизировать его. «IActivationEventArgs», по-видимому, не применим к Win32:

protected override void OnActivated(IActivatedEventArgs args)
{
    if (args.Kind == ActivationKind.StartupTask)
    {
        //Some code
    }
}

Затем я нашел эту ссылку , в которой говорится об использовании дополнительного приложения для запуска целевого приложения с указанными параметрами, а затем целевое приложение свернуто в соответствии с параметрами, звучит так, как будто оно может работать, но как запустить целевое приложение в одном приложении?

Спасибо за чтение и хорошего дня!

1 Ответ

0 голосов
/ 08 апреля 2020

Боюсь, вы не можете указать параметр для запуска задачи, как сказал Стенфан. И он предоставил возможный обходной путь, который заключается в запуске другого EXE-файла, который затем запускает ваше приложение.

Основные шаги: регистрация протокол приложения для вашего приложения для настольного моста.

например:

<Extensions>
  <uap:Extension Category="windows.protocol">
    <uap:Protocol Name="startup" />
  </uap:Extension>
</Extensions>

Затем создайте приложение win32 для запуска. запустить приложение для настольного моста с параметром (startup:minimize). Вы можете получить параметр следующим способом.

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
}

Параметр процесса.

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
    MainWindow mainWindow = new MainWindow();
    mainWindow.Show();
    if (e.Args.Length > 0)
    {
        var para = e.Args.First();
        var strList = para.Split(':');
        var res = strList.Last();
        if (res == "minimize")
        {      
            mainWindow.WindowState = WindowState.Minimized;                              
        }
    }
}  
...