【发布时间】:2020-04-09 06:42:19
【问题描述】:
我想请教一些关于如何使以下内容成为可能的建议:
想要的功能:我想让用户选择在应用程序运行时启用和禁用我正在构建的桌面桥应用程序的启动设置。理想情况下,当通过上下文菜单按下按钮时会弹出一个小的表单窗口,为用户提供两个选项。 “是”或“否”按钮是应用程序是否应在启动时自动启动以便下次重新启动系统的两个选项。
正在使用的技术:我将应用程序构建为一个 winform 应用程序,并通过桌面桥功能将其变成一个 uwp 应用程序。我这样做是因为它最终会出现在 Windows 应用商店中。
参考:我在此站点上找到了一个名为 StartupTask 的 API:https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.startuptask#properties
我的 Package.appxmanifest 文件中已经有这个:
<Extensions>
<desktop:Extension
Category="windows.startupTask"
Executable="uniqueFolder\myExeFile.exe"
EntryPoint="Windows.FullTrustApplication">
<desktop:StartupTask
TaskId="myAppTaskID"
Enabled="true"
DisplayName="MyAppDisplayName" />
</desktop:Extension>
</Extensions>
我已成功添加这些参考:
-Windows(Windows.winmd)
-System.Runtime.WindowsRuntime(WindowsRuntime.dll)
-Windows.ApplicationModel.StartupTaskContract
-Windows.Foundation.FoundationContract
我将 Windows(Windows.winmd) 别名的引用修改为“全局”以外的其他内容以避免编译器错误:
StateError The type 'StartupTaskContract' exists in both '...' and '...'.
以下 c# 代码尝试通过尝试获取应用程序的 startuptaskId 来开始使用此功能,但不幸的是,这给了我一个错误。
C#代码:
async void MyFunct()
{
StartupTask startupTask = await StartupTask.GetAsync("myAppTaskID");
}
我目前收到的编译器错误:
StateError CS1929 'IAsyncOperation<StartupTask>' does not contain a definition for 'GetAwaiter' and the best extension method overload 'WindowsRuntimeSystemExtensions.GetAwaiter(IAsyncAction)' requires a receiver of type 'IAsyncAction'
最后,此启用和禁用功能应反映在 Windows 10 启动应用程序窗口中,显示应用程序处于打开或关闭状态。
我尝试了多种不同的方法,但都没有成功。也许我忽略了一些事情,所以有一个外部视角会有所帮助。
使用应用清单扩展代码,应用会在系统启动时自动启动。
我知道用户可以通过启动应用程序窗口或任务管理器打开或关闭应用程序。但此功能是客户端的要求。
任何建议将不胜感激。
感谢阅读~
【问题讨论】:
标签: c# winforms windows-10 desktop-bridge app-startup