我有一个WPF应用程序,它被打包成可以在Microsoft Store中提交。我使用StartupTask extension在系统启动时运行它。
- 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>
问题是在使用startup运行时,没有Argument
属性可供设置,如下所示:
<uap5:StartupTask Argument="/autostart" ... />
然后我可以在Application_Startup
事件中执行如下操作:
- App.xaml.cs(在解决方案的应用程序项目中):*
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应用程序中的程序是否随系统启动启动而启动?系统启动启动程序是否会将任何事件或属性附加到我的应用程序或其启动参数以检查启动?
1条答案
按热度按时间nhaq1z211#
恐怕您无法为启动任务指定参数,但如果您的目标是Windows 10版本18.03或更高版本,则可以使用AppInstance.GetActivatedEventArgs方法获取
IActivatedEventArgs
,然后检查其Kind
属性以确定应用程序是否从启动任务激活。另一种选择是从启动任务中启动一个不同的.EXE文件。
这些API来自
Windows.ApplicationModel.dll
和Windows.dll
程序集,您无法将其添加到WPF应用程序当然可以。请确保您已经安装了the latest 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应用程序中调用该方法,如下所示: