請問如何在 [控制台][排定的工作] 中增加項目 ? |
答題得分者是:阿子
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
請問如何在 [控制台][排定的工作] 中增加項目 ? 小弟在寫一個軟體, 可以透過 派送程式送到 client 端
在 client 安裝, 安裝軟體在 [控制台][排定的工作] 中增加項目, 定時執行軟體 請問 Delphi 或 Win32API 有函式可以做到嗎 ? 小弟去 登錄 (Registry) 中搜尋 [控制台][排定的工作] 中增加項目, 但是卻搜尋不到, 請問這些項目儲存在哪裡 ? 謝謝
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
阿子
站務副站長 發表:120 回覆:230 積分:201 註冊:2002-03-18 發送簡訊給我 |
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 發送簡訊給我 |
在 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.
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |