添加,删除任务计划

#include <windows.h>  
#include <initguid.h>  
#include <ole2.h>  
#include <mstask.h>  
#include <msterr.h>  
#include <wchar.h>  
#include<stdio.h>  
  
//  
//函数名称:DeleteTask  
//函数功能:删除指定的任务计划  
//参数说明:lpcwszTaskName:要删除的任务计划的名称  
//  
HRESULT DeleteTask(LPCWSTR lpcwszTaskName);  
//  
//函数名称:CreateTask  
//函数功能:创建新的任务计划  
//参数说明:lpcwszTaskName:要创建的任务计划的名称  
//            lpcwszApplicationName:要创建的任务计划的应用程序路径  
//  
HRESULT CreateTask(LPCWSTR lpcwszTaskName,LPCWSTR lpcwszApplicationName);  
  
int main(int argc, char **argv)  
{      
    HRESULT hr = S_OK;  
    LPCWSTR lpcwszTaskName = L"Test Task";  
    LPCWSTR lpcwszApplicationName = L"C://Windows//notepad.exe";  
    //hr = CreateTask(lpcwszTaskName,lpcwszApplicationName);//创建新的任务计划  
    hr = DeleteTask(lpcwszTaskName);//删除指定的任务计划  
    if (FAILED(hr))  
    {  
        wprintf(L"Failed calling ITask::Run, error = 0x%x/n",hr);  
    }  
    return 0;  
}  
  
//删除指定的计划任务  
HRESULT DeleteTask(LPCWSTR lpcwszTaskName)  
{  
    HRESULT hr = S_OK;  
    ///  
    // Call CoInitialize to initialize the COM library and then  
    // CoCreateInstance to get the Task Scheduler object.  
    ///  
    ITaskScheduler *pITS;  
    hr = CoInitialize(NULL);  
    if (SUCCEEDED(hr))  
    {  
        hr = CoCreateInstance(CLSID_CTaskScheduler,  
            NULL,  
            CLSCTX_INPROC_SERVER,  
            IID_ITaskScheduler,  
            (void **) &pITS);  
        if (FAILED(hr))  
        {  
            CoUninitialize();  
            return 1;  
        }  
    }  
    else  
    {  
        return 1;  
    }  
    //删除指定的任务计划  
    hr = pITS->Delete(lpcwszTaskName);  
    if (FAILED(hr))  
    {  
        //wprintf(L"Failed calling ITask::Run, error = 0x%x/n",hr);  
        CoUninitialize();  
        return hr;  
    }  
    CoUninitialize();  
    return S_OK;  
}  
  
HRESULT CreateTask(LPCWSTR lpcwszTaskName,LPCWSTR lpcwszApplicationName)  
{  
    HRESULT hr = S_OK;  
    ///  
    // Call CoInitialize to initialize the COM library and then  
    // CoCreateInstance to get the Task Scheduler object.  
    ///  
    ITaskScheduler *pITS;  
    hr = CoInitialize(NULL);  
    if (SUCCEEDED(hr))  
    {  
        hr = CoCreateInstance(CLSID_CTaskScheduler,  
            NULL,  
            CLSCTX_INPROC_SERVER,  
            IID_ITaskScheduler,  
            (void **) &pITS);  
        if (FAILED(hr))  
        {  
            CoUninitialize();  
            return 1;  
        }  
    }  
    else  
    {  
        return 1;  
    }  
    //创建一个新的空白计划任务  
    ITask *pITask;  
    IPersistFile *pIPersistFile;  
      
    hr = pITS->NewWorkItem(lpcwszTaskName,           // Name of task  
        CLSID_CTask,            // Class identifier   
        IID_ITask,              // Interface identifier  
        (IUnknown**)&pITask); // Address of task interface  
  
    if (FAILED(hr))  
    {  
        CoUninitialize();  
        return hr;  
    }  
  
    hr = pITask->QueryInterface(IID_IPersistFile,  
        (void **)&pIPersistFile);  
  
    pITask->Release();  
    if (FAILED(hr))  
    {  
        CoUninitialize();  
        return hr;  
    }  
  
    hr = pIPersistFile->Save(NULL,  
        TRUE);  
    pIPersistFile->Release();  
    if (FAILED(hr))  
    {  
        CoUninitialize();  
        return hr;  
    }  
      
    //为上面创建的任务计划指定应用程序路径  
    hr = pITS->Activate(lpcwszTaskName,  
        IID_ITask,  
        (IUnknown**) &pITask);  
  
    // Release the ITaskScheduler interface.  
    pITS->Release();    
  
    if (FAILED(hr))  
    {  
        CoUninitialize();  
        return hr;  
    }  
  
    hr = pITask->SetApplicationName(lpcwszApplicationName);  
  
    if (FAILED(hr))  
    {  
        CoUninitialize();  
        return hr;  
    }  
  
    hr = pITask->QueryInterface(IID_IPersistFile,  
        (void **)&pIPersistFile);  
      
    // Release the ITask interface.  
    pITask->Release();    
  
    hr = pIPersistFile->Save(NULL,  
        TRUE);  
    if (FAILED(hr))  
    {  
        CoUninitialize();  
        return hr;  
    }  
    // Release the IPersistFile interface.  
    pIPersistFile->Release();  
  
    CoUninitialize();  
    return hr;  
}  
//(windows7)上面代码(1.0版本的接口)在windows/tasks,目录建立。删除.job文件,并不会添加到控制面板的任务计划中,应该是还需要其他步骤(未找到完整例子)
下面的是MS的代码(2.0版本的接口)


    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    ### 回答1: 以下是使用 C 语言写的一个简单的添加计划任务的代码示例: ``` #include <stdio.h> #include <unistd.h> #include <time.h> int main() { // 定义任务执行的时间 time_t task_time = time(NULL) + 60; // 当前时间加上60秒 // 创建计划任务 while (time(NULL) < task_time) { sleep(1); // 每隔1秒检查一次是否到了任务时间 } // 执行任务 printf("Task executed.\n"); return 0; } ``` 该代码实现了一个简单的添加计划任务的功能:在60秒后,打印 "Task executed."。 ### 回答2: 使用C语言编写添加计划任务的源码可以使用system函数结合Linux系统命令`crontab`来实现。以下给出一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> int main() { char command[100]; // 用于存储要执行的命令 char time[100]; // 用于存储计划任务的时间设置 printf("请输入要执行的命令:"); fgets(command, sizeof(command), stdin); printf("请输入计划任务的时间设置(如* * * * *):"); fgets(time, sizeof(time), stdin); // 拼接crontab命令,并通过system函数执行 sprintf(command, "echo '%s %s' | crontab -u 用户名 -", time, command); system(command); printf("计划任务已成功添加。\n"); return 0; } ``` 上述程序接收用户输入的命令以及时间设置,并通过`sprintf`函数将命令和时间设置拼接成一个完整的`crontab`命令。然后使用`system`函数执行该命令,将计划任务添加到系统中。请将代码中的`用户名`替换为你想要添加计划任务的用户的用户名。编译并运行代码后,根据提示输入要执行的命令和时间设置,即可添加计划任务。 ### 回答3: 编写一个使用C语言编写的添加计划任务的源代码可以分为以下几个步骤: 1. 引入必要的头文件。 #include <stdlib.h> #include <stdio.h> #include <unistd.h> 2. 编写主程序。 int main() { // 创建计划任务的命令字符串 char command[100]; sprintf(command, "crontab -l > tempcron"); // 执行命令,将现有的计划任务保存到临时文件tempcron中 system(command); // 打开临时文件,以便读取和修改 FILE *tempfile = fopen("tempcron", "a+"); if (tempfile == NULL) { perror("Error in opening file"); exit(1); } // 向临时文件写入新的计划任务 fprintf(tempfile, "* * * * * /path/to/your/command\n"); // 关闭临时文件 fclose(tempfile); // 将临时文件中的计划任务设置为当前用户的计划任务 sprintf(command, "crontab tempcron"); system(command); // 删除临时文件 remove("tempcron"); // 输出成功信息 printf("计划任务添加成功!\n"); return 0; } 以上代码的主要思路是通过`system`函数执行`crontab`命令,将现有的计划任务保存到一个临时文件中。然后通过文件操作函数,将新的计划任务写入到临时文件中。最后再次使用`system`函数将临时文件中的计划任务设置为当前用户的计划任务。完成后,删除临时文件并输出成功信息。 需要注意的是,更改计划任务需要有root权限或者有相应的权限,因此在运行该程序时,请确保以合适的权限运行。另外,需要根据具体的需求修改代码中的计划任务命令。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值