使用 Microsoft 触发应用程序。Win32.TaskScheduler.dll

Trigger an application using Microsoft.Win32.TaskScheduler.dll

我正在研究 VS2015。我想在 20 秒后触发 运行 我的应用程序。我如何使用 Microsoft.Win32.TaskScheduler.dll? 我的代码如下:

    void Actions::ScheduleRunApp()
{
    TaskService^ ts = gcnew TaskService();
    TaskDefinition^ td = ts->NewTask();
    td->RegistrationInfo->Description = "Run LocalLockApp";
    //td->Triggers->Add(gcnew DailyTrigger(2)); i want to run the application after 20 seconds instead
    td->Actions->Add(gcnew ExecAction("notepad.exe", "C:\test.log", nullptr));
    ts->RootFolder->RegisterTaskDefinition(L"Test",td);
    ts->RootFolder->DeleteTask(L"Test",true);
}

您似乎有两个应用程序,并且您正在尝试让应用程序 #1 运行 应用程序 #2,可能在应用程序 #2 启动之前让应用程序 #1 退出。

乍一看,我会说为此使用任务计划程序是错误的解决方案。 Task Scheduler 用于定期启动维护任务,例如每天 4:00 am。您可以创建一个仅在现在 + 20 秒后触发 运行 一次的任务,但可能有更好的方法来执行此操作。

在这种情况下,我会做以下两件事之一:

  • 保留应用程序 #1 运行ning。休眠 20 秒,然后 运行 应用程序 #2。如果用户请求退出应用程序,请隐藏您的 window。
  • 创建一个辅助应用程序。这个助手应用程序的工作是延迟 20 秒,然后 运行 应用程序 #2。让应用程序 #1 启动辅助应用程序,然后应用程序 #1 可以自由退出。如果您不想让另一个 .exe 文件挂在身边,您甚至可以使用批处理文件来执行此操作。

如果您绝对必须使用 Task Scheduler,那么我相信您需要 TimeTrigger 而不是 DailyTrigger。您也可能不想在 运行 之前调用 DeleteTask:相反,请确保设置了属性,以便任务在不再计划为 运行 时自动删除。