全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1836
推到 Plurk!
推到 Facebook!

請問如何在 [控制台][排定的工作] 中增加項目 ?

答題得分者是:阿子
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-17 17:07:18 IP:210.69.xxx.xxx 未訂閱
請問如何在 [控制台][排定的工作] 中增加項目 ? 小弟在寫一個軟體, 可以透過 派送程式送到 client 端 在 client 安裝, 安裝軟體在 [控制台][排定的工作] 中增加項目, 定時執行軟體 請問 Delphi 或 Win32API 有函式可以做到嗎 ? 小弟去 登錄 (Registry) 中搜尋 [控制台][排定的工作] 中增加項目, 但是卻搜尋不到, 請問這些項目儲存在哪裡 ? 謝謝
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
阿子
站務副站長


發表:120
回覆:230
積分:201
註冊:2002-03-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-17 19:19:58 IP:220.130.xxx.xxx 未訂閱
pcboy2 您好..   這一部份可以查有關Interface for the Microsoft Task Scheduler API方面的資訊。 我的印象中之前站上包子大大好像有貼過相關的文章。但我一時找不到..不知道是否是我記錯了..我上傳了一個範例程式有關工作排程方面的內容寫的很完整,您可以參考看看http://delphi.ktop.com.tw/topic.php?TOPIC_ID=54949 還有一個工作排程的vcl 元件 不過這是一個商用元件 SiComponents 公司的 Scheduling Agent 元件 網址:http://www.sicomponents.com 提供給您參考 ^^ 從思考取勝一切~q
------
從思考取勝一切~q
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-19 14:42:51 IP:210.69.xxx.xxx 未訂閱
在 Google 找到一個範例, 僅供參考 (Google 有關 Delphi & ITaskScheduler 範例只有您提供的和這個, 資料少的可憐)    
unit SchedulerUnit;    interface    uses MsTask, Windows, ActiveX, SysUtils;    function StrToWide(SourceString : string): LPCWSTR;
procedure AddToScheduler(ApplicationPath : string; Hour : string);    implementation    var
  wsBuffer : PWideChar;
  SchedulingAgent : ITaskScheduler;
  Task : ITask;    function StrToWide(SourceString : string): LPCWSTR;
begin
  Result := StringToWideChar(SourceString, wsBuffer, Length(SourceString)   1);
end;    procedure AddToScheduler(ApplicationPath : string; Hour : string);
var
  pIPersistFile : IPersistFile;
  TaskName : string;
  WorkItem : IUnknown;
  piNewTrigger : Word;
  ITTrigger : ITaskTrigger;
  TaskTrig : TTaskTrigger;
  uname, passwd : PWideChar;
begin
  GetMem(wsBuffer, 1024);    //  Inicjowanie schedulera;
  if not assigned(SchedulingAgent) then
  begin
    ActiveX.CoInitialize(nil);
    ActiveX.CoCreateInstance(CLSID_CSchedulingAgent, nil, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, SchedulingAgent);
  end;      TaskName := 'MojeZadanie'; //nazwa zadania
  SchedulingAgent.Delete(StrToWide(TaskName)); //kasowanie, żeby zabezpieczyć się przed tworzeniem istniejącego zadania      SchedulingAgent.NewWorkItem(StrToWide(TaskName), CLSID_CTask, IID_IScheduledWorkItem, WorkItem); //utworzenie zadania
  Task := ITask(WorkItem);
  Task.SetApplicationName(StrToWide(ApplicationPath));
  Task.SetWorkingDirectory(StrToWide(ExtractFilePath(ApplicationPath));      GetMem(uname, 255);
  GetMem(passw, 255);
  StringToWideChar(User, uname, Length(User)   1);
  StringToWideChar(Pass, passw, Length(Pass)   1);
  Task.SetAccountInformation(uname, passw);  //(User, Password) Ustawnienie konta usera      Task.CreateTrigger(piNewTrigger, ITTrigger); //utworzenie triggera
  ZeroMemory(@TaskTrig, sizeof(TASK_TRIGGER));
  TaskTrig.cbTriggerSize := sizeof(TASK_TRIGGER);
  TaskTrig.wBeginYear := 2004; //
  TaskTrig.wBeginMonth := 7;    // data rozpoczęcia - dowolna
  TaskTrig.wBeginDay := 25;     //
  TaskTrig.wStartHour := StrToInt(Copy(Hour, 1, 2)); //godzina wykonania
  TaskTrig.wStartMinute := StrToInt(Copy(Hour, 4, 2)); //minuty wykonania
  TaskTrig.TriggerType := TASK_TIME_TRIGGER_DAILY; //typ triggera (dni)
  TaskTrig.Type_.Daily.DaysInterval := 1; //ustawienie typu - codziennie
  ITTrigger.SetTrigger(@TaskTrig); //zapisanie triggera    //  Zapisywanie .job;
  Task.QueryInterface(IID_IPersistFile, pIPersistFile);
  if pIPersistFile <> nil then
    pIPersistFile.Save(nil, true);      FreeMem(wsBuffer);
  FreeMem(uname);
  FreeMem(passw);
end;    end.
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
系統時間:2024-06-28 13:08:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!