簡體   English   中英

檢查打包的 WPF 應用程序是通過啟動還是手動運行?

[英]Check if a packaged WPF Application runned with startup or manually?

我有一個打包的 WPF 應用程序,以便能夠在 Microsoft Store 中提交它。 我已經使用StartupTask 擴展在系統啟動時運行它。

Package.appmanifest(在解決方案的Package項目中):

<Extensions>
  <uap5:Extension Category="windows.startupTask" Executable="*PathToExecutable*" EntryPoint="Windows.FullTrustApplication">
    <uap5:StartupTask TaskId="MyAppStartupTaskId" Enabled="true" DisplayName="Title in TaskManager" />
  </uap5:Extension>
</Extensions>

問題是在啟動時運行時沒有設置Argument屬性,如下所示:

<uap5:StartupTask Argument="/autostart" ... />

然后我可以在Application_Startup事件中做這樣的事情:

App.xaml.cs(在解決方案的Application項目中):

private void Application_Startup(object sender, StartupEventArgs e)
{
    // Check if application is running by startup
    if (e.Args.Length > 0 && e.Args[0] == "/autostart")
    {
        LaunchMinimized = true;
    }
    // Lots of bla bla blas here...
}

問題是我可以使用StartupTask在 WPF 應用程序中檢查程序是否在系統啟動時啟動? 系統啟動啟動器是否將任何事件或屬性附加到我的應用程序或其啟動參數以檢查啟動?

恐怕您無法為啟動任務指定參數,但如果您的目標是 Windows 10 版本 18.03 或更高版本,則可以使用AppInstance.GetActivatedEventArgs方法來獲取IActivatedEventArgs ,然后檢查其Kind屬性以確定應用程序是否為從啟動任務激活。

另一種選擇是從啟動任務啟動不同的 .EXE。

這些 API 來自Windows.ApplicationModel.dllWindows.dll程序集,您無法將它們添加到 WPF 應用程序

你當然可以。 確保您已安裝最新的 SDK並添加對C:\\Program Files (x86)\\Windows Kits\\10\\References\\10.0.17134.0\\Windows.Foundation.UniversalApiContract\\6.0.0.0\\Windows.Foundation.UniversalApiContract.winmd .

然后你可以在你的 WPF 應用程序中調用這樣的方法:

Windows.ApplicationModel.Activation.IActivatedEventArgs args = Windows.ApplicationModel.AppInstance.GetActivatedEventArgs();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM