zoukankan      html  css  js  c++  java
  • 简单的windows作业管理(自己也没弄透彻)

    先把代码贴出来,以后有时间再研究!简单的说,作业就相当于沙箱,可以使程序在一定范围内活动。

    #include "stdafx.h"
    #include "windows.h"
    #include <iostream>
    using namespace std;

    SECURITY_ATTRIBUTES sa;
    STARTUPINFO si={sizeof(si)};
    PROCESS_INFORMATION pi;

    void main()
    {

    HANDLE hjob=CreateJobObject(&sa,"test");

    JOBOBJECT_BASIC_LIMIT_INFORMATION jb;
    jb.PriorityClass=IDLE_PRIORITY_CLASS;
    jb.PerProcessUserTimeLimit.QuadPart=1000;

    JOBOBJECT_BASIC_UI_RESTRICTIONS jbur;

    jbur.UIRestrictionsClass = JOB_OBJECT_UILIMIT_NONE|

    JOB_OBJECT_UILIMIT_EXITWINDOWS | JOB_OBJECT_UILIMIT_HANDLES;

    SetInformationJobObject(hjob,
    JobObjectBasicLimitInformation,
    &jb,
    sizeof(JOBOBJECT_BASIC_LIMIT_INFORMATION)
    );

    SetInformationJobObject(hjob,JobObjectBasicUIRestrictions,&jbur,sizeof(jbur));


    CreateProcess(NULL,"ping www.baidu.com -t",NULL,NULL,TRUE,CREATE_SUSPENDED|CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);

    AssignProcessToJobObject(hjob,pi.hProcess);

    ResumeThread(pi.hThread);
    CloseHandle(pi.hThread);


    FILETIME CreationTime, ExitTime, KernelTime, UserTime;

    GetProcessTimes(pi.hProcess, &CreationTime, &ExitTime, &KernelTime, &UserTime);

    // GetProcessTimes(GetCurrentProcess, &CreationTime, &ExitTime, &KernelTime, &UserTime);

    cout << TEXT("Kernel = ") << KernelTime.dwLowDateTime << " and User = "

    << UserTime.dwLowDateTime << endl;

    CloseHandle(pi.hProcess);
    CloseHandle(hjob);
    system("pause");
    }

  • 相关阅读:
    12/21
    和寶寶在一起3/10
    11/23
    c#windows应用程序窗体间传值
    用OWC做统计图
    javascript 创建字典
    .NetCom双向数据交换的实现(RecordSet与.Net DataSet的转化)
    JScript 方法 indexOf 方法
    详尽解析window.event对象
    Window.Open详解
  • 原文地址:https://www.cnblogs.com/duyy/p/3710450.html
Copyright © 2011-2022 走看看