Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Theorie: Geplante Jobs (https://www.delphipraxis.net/117898-theorie-geplante-jobs.html)

Prototypjack 27. Jul 2008 18:26


Theorie: Geplante Jobs
 
Moin,

Ich würde gerne in meinem Programm bestimmte Prozeduren als Jobs zu bestimmten Zeiten ausführen lassen (wie es etwa bei Virenscanner bzw. deren Update-Engines der Fall ist).

Wie gehe ich so etwas an? Ständiges Pollen, ob der gewünschte Zeitraum bereits erreicht ist, scheint mir ja eher nicht der richtige Weg zu sein. Liefert Window gar ein eigenes Job-System, das ich eventuell mit meinem Programm (über Messages?) verbinden kann?

Wie würdet ihr etwas Derartiges realisieren?

Danke & Grüße,
Max

Polynom 27. Jul 2008 18:44

Re: Theorie: Geplante Jobs
 
Hallo,

Also unter Windows Vista (und ich denke auch unter XP) gibt es eine "Aufgabenplanung" (unter Vista: "Systemsteuerung" -> "Verwaltung" -> "Aufgabenplanung") bei welcher man einstellen kann zu welchen Zeiten ein Programm oder Skript ausgeführt werden soll. Und da könntest du entweder ein kleines Programm schreiben, welches diese Message schickt oder gleich die ganze Aufgabe (z.B. das Update) in dieses Programm "auslagern".

Prototypjack 27. Jul 2008 21:59

Re: Theorie: Geplante Jobs
 
Moin,

Hmm, interessant. Diese Funktion werde ich mir auf jeden Fall einmal ansehen.

Aber sollte ich den anderen Weg gehen und das ganze selbst realisieren, habt ihr da Tipps für mich, wie ich die Sache angehe? Schließlich müssen die von mir bereits genannten Virenscanner das ja auch irgendwie schaffen.

Danke & Grüße,
Max

rotfc 27. Jul 2008 22:57

Re: Theorie: Geplante Jobs
 
1. Schreib ein paar Programme (oder Batch-Dateien), die einfach nur das machen, was zu einem gewissen Zeitpunkt auf Deinem PC passieren soll. Diese Programme (oder Batch-Dateien) sollten *unabhängig* vom Zeitpunkt funktionieren.

2. Schreib ein Programm, welches die obigen Programme (oder Batch-Dateien) zu einem gewissen Zeitpunkt startet.

3. Starte dieses Programm (non-VCL im Tray mit einem Timer sollte reichen) automatisch mit Windows.

HTH

sx2008 27. Jul 2008 23:51

Re: Theorie: Geplante Jobs
 
Zitat:

Zitat von Polynom
Also unter Windows Vista (und ich denke auch unter XP) gibt es eine "Aufgabenplanung" (unter Vista: "Systemsteuerung" -> "Verwaltung" -> "Aufgabenplanung") bei welcher man einstellen kann zu welchen Zeiten ein Programm oder Skript ausgeführt werden soll. Und da könntest du entweder ein kleines Programm schreiben, welches diese Message schickt oder gleich die ganze Aufgabe (z.B. das Update) in dieses Programm "auslagern".

In der JCL gibt es eine Klasse (und ein Demo namens TaskDemo) mit der man die Aufgabenplanung ansteuern kann.
Die Möglichkeiten der Aufgabenplanung übertreffen sicher jedes selbstgestrickte Programm.
Die eigentlichen Jobs können in einem Programm integriert sein, man muss nur einen Übergabeparameter mitgeben.
(also z.B.: MeinProgramm.exe /cleanhistory)

PS: viele Virenscanner benützen den Aufgabenplaner Dienst, da so auch gescannt wird, wenn niemand angemeldet ist.

hathor 28. Jul 2008 06:57

Re: Theorie: Geplante Jobs_Taskplanner mit DELPHI-Sourcecode
 
Taskplanner mit DELPHI-Sourcecode:

http://sourceforge.net/project/showf...group_id=93056

Prototypjack 28. Jul 2008 15:40

Re: Theorie: Geplante Jobs
 
Moin,

Danke an alle. Die Windows Taskplanung ist zwar äußerst vielversprechend, aber schwierig anzusprechen. Scheinbar ist es auch mit Hilfe der JCL kein Pappenstiel.

Mir ist gerade eine passende und absolut triviale Möglichkeit eingefallen, die alles tut was ich will, aber komplett auf Pollen verzichtet:

Ich bau mir einen Thread, dem ich ein Intervall übergebe und dieser führt dieses Intervall dann als Sleep(n); aus, anschließend schickt er selbst die Message. Sollte ziemlich schonend sein und löst mein Problem perfekt!

Danke nochmal an alle!

Grüße,
Max

Basilikum 28. Jul 2008 19:46

Re: Theorie: Geplante Jobs
 
Zitat:

Zitat von Prototypjack
Ich bau mir einen Thread, dem ich ein Intervall übergebe und dieser führt dieses Intervall dann als Sleep(n); aus, anschließend schickt er selbst die Message. Sollte ziemlich schonend sein und löst mein Problem perfekt!

da du ja bereits bei einem Thread als "Zeitgeber" angelangt bist, werfe ich mal noch MSDN-Library durchsuchenCreateWaitableTimer in den Raum...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz