Scheduled task wizard and Task properties

alexpotemkin

New member
Joined
Nov 26, 2008
Messages
3
Reaction score
0
Задал вопрос на винграде пока толком помощи не получил.
Запостил проект на вэблансере, результат тоже нулевой, народ брался, но в итоге задачу не осиливал.

Нужно реализовать:
- вывод списка заданий в TListBox
- вызов диалога Scheduled Task Wizard (Мастер планирования заданий) в XP и Create Task в Vista (7even)
- вызов диалога свойств задания для выбранного задания в TListBox

Требования к реализации:
- красоты gui не требуются
- реализация в Delphi 7 и старше, лучше всего в BDS 2006
- не использовать сторонние юниты, возможно только jedi api, если понадобится
- работоспособность в сиcтемах Win2000, XP, Vista, 7
 

ASGDeveloper

Member
Joined
Jun 2, 2008
Messages
42
Reaction score
34
Задал вопрос на винграде пока толком помощи не получил.
Для начала определитесь, какого ответа Вы ждете здесь:
1) рекомендацию ознакомиться с доками по Windows Task Scheduler API и функциями NetScheduleJobEnum и NetScheduleJobAdd (http://msdn.microsoft.com/en-us/library/aa370616(VS.85).aspx) в частности
2) вопроса о сумме вопроса

Удачи!
 

alexpotemkin

New member
Joined
Nov 26, 2008
Messages
3
Reaction score
0
Стартовая сумма вопроса была определена мной на weblancer.net в размере 50вмз.
С доками ознакомился, но не осилю реализацию с теми требованиями что поставил.
 

asm64d

Member
Joined
Jun 14, 2008
Messages
943
Reaction score
9,629
Нашел в закромах код, авторство Rouse_ Не тестил, не было времени.
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

  AT_INFO = record
    JobTime: DWORD;
    DaysOfMonth: DWORD;
    DaysOfWeek: UCHAR;
    Flags: UCHAR;
   Command: LPWSTR;
  end;

  AT_ENUM = record
    JobId: DWORD;
    JobTime: DWORD;
    DaysOfMonth: DWORD;
    DaysOfWeek: UCHAR;
    Flags: UCHAR;
    Command: LPWSTR;
  end;
  PAT_ENUM = ^AT_ENUM;

  function NetScheduleJobAdd(Servername: PWideChar;
    Buffer: Pointer; var JobId: Cardinal): Cardinal;
    stdcall; external 'netapi32.dll';

  function NetScheduleJobEnum(Servername: PWideChar;
    Buffer: Pointer; BufLength: Cardinal; EntriesRead,
    TotalEntries: PCardinal; var Resumehandle: Cardinal): Cardinal;
    stdcall; external 'netapi32.dll';

  function NetApiBufferFree(Buffer: Pointer): Cardinal;
    stdcall; external 'netapi32.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ai: AT_INFO;
  JobID, Err: Cardinal;
begin
  ai.JobTime := 50400000;
  ai.DaysOfMonth := 0;
  ai.DaysOfWeek := 0;
  ai.Flags := 0;
  ai.Command := 'C:\file.exe';
  Err := NetScheduleJobAdd(nil, @ai ,JobID);
  if Err <> NO_ERROR then ShowMessage(SysErrorMessage(Err));
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Buffer, Tmp: PAT_ENUM;
  BufLength: Cardinal;
  EntriesRead, TotalEntries, Resumehandle, Err: Cardinal;
  I: Integer;
begin
  Resumehandle := 0;
  Err := NetScheduleJobEnum(nil, @Buffer, DWORD(-1),
    @EntriesRead, @TotalEntries, Resumehandle);
  if Err = NO_ERROR then
  try
    Tmp := Buffer;
    for I := 0 to EntriesRead - 1 do
    begin
      Memo1.Lines.Add(Tmp^.Command);
      Tmp := Pointer(Integer(Tmp) + SizeOf(AT_ENUM));
    end;
  finally
    NetApiBufferFree(Buffer);
  end
  else
    ShowMessage(SysErrorMessage(Err));
end;

end.
 

asm64d

Member
Joined
Jun 14, 2008
Messages
943
Reaction score
9,629
- вызов диалога Scheduled Task Wizard (Мастер планирования заданий) в XP и Create Task в Vista (7even)
- вызов диалога свойств задания для выбранного задания в TListBox
ХМ, занятный вопросец, честно не знаю как, но лично я бы делал аналогичную форму в Delphi (добавление/редактирование/удаление) а если лень разбираться с WinAPI то можно набросать класс взаимодействующий с консольной Schtasks ИМХО для меня ленивого так было бы проще :)
http://support.microsoft.com/kb/814596
 

manowar666

New member
Joined
Dec 4, 2012
Messages
1
Reaction score
0
"Hey OP, I'm using the Task Scheduler in Windows 11 and it's pretty straightforward once you get the hang of it. Check the properties section for the task you're working on - there's usually an option to view the history, that might help you troubleshoot."
 
Top