这是我的代码:
GetTokenForm gtf = new GetTokenForm(true, true);
gtfResult = gtf.ShowDialog(this);
其中GetTokenForm是一个包含WebView控件的简单WinForm。 WebView打开一个URL并在页面上执行一些JavaScript。当应用程序在"传统"中开始时,一切都运行良好。用户的方式。
但是当从任务计划程序启动应用程序时,第二行会抛出一个众所周知的异常:
在应用程序未运行时显示模式对话框或表单 在UserInteractive模式下不是有效的操作。指定 ServiceNotification或DefaultDesktopOnly样式显示一个 来自服务应用程序的通知。
如果是MessageBox,您可以通过添加MessageBoxOptions.ServiceNotification选项来解决此问题。
但是如何使用我的自定义表单实现相同的效果?不需要显示它,因为我的目标只是在WebView上加载页面并在完成后销毁表单。
答案 0 :(得分:0)
GUI应用程序需要一个桌面,如果用户已登录并且任务配置为仅在用户登录时才运行,则只能获得一个桌面。
因此,在用户帐户下安排任务并确保让该用户登录,以便在应用程序启动时,它将以交互模式在该帐户下运行。
修改强>
如果任务需要在没有用户登录的情况下运行,则任务不应该打开表单或依赖表单。只需更改代码的设计,使其不依赖于表单。
答案 1 :(得分:0)
由于您在表单上使用的控件需要一个Windows消息泵,您需要以交互模式运行任务。尝试使用 / IT 参数运行任务。
以下是MSDN help link,其中详细介绍了