Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Rechner starten mit BIOS-Timer (https://www.delphipraxis.net/137900-rechner-starten-mit-bios-timer.html)

TERWI 30. Jul 2009 17:32


Rechner starten mit BIOS-Timer
 
Ich möchte folgendes realisieren:

Es soll eine bestimmte Startzeit (Jahr/Monat/Tag/Stunde/Minute) in das BIOS (NVRAM, CMOS, ...?) geschrieben werden.
Dazu kommt in die RUN-ONCE Abteilung der Registry oder sonstwo ein Eintrag eines zu startenden Programms.
Hier z.B. ein DVB-Programm zur zeitgesteuerten Aufnahme.
Rechner ausschalten - zum stromsparen...

Rechner wird zur Startzeit vom BIOS hochgefahren, Programm startet, Aufnahme beginnt und schaltet den Rechner danach wieder aus.
Ggf. wenn eine weitere und nennenswert spätere Aufnahme geplant ist, beginnt das Spiel von vorn.

Der ganze Aufwand z.B. dafür, wenn man mal ne Weile nicht zu Hause ist und eine Reihe von Programmen aufnehmen möchte.
Beim Linux-VDR soll so was ja funktionieren !?

Jetzt habe ich schon reichlich gegoogelt und hier gesucht, aber ausser die Daten der Timer zu lesen, habe ich noch nicht wirklich was gefunden, wie man entsprechende Zeitdaten setzen kann.

Kann mir da jemand hilfreich unter die Arme greifen ?
Mega-Dank im vorraus !

mindtrap 30. Jul 2009 18:05

Re: Rechner starten mit BIOS-Timer
 
IMHO kannst du unter Windows seit XP? nicht mehr ins CMOS schreiben.
Zumindest klappt es bei mir nicht mehr. x)

TERWI 30. Jul 2009 18:48

Re: Rechner starten mit BIOS-Timer
 
... hab ich mir schon gedacht, das es wieder mal nicht so einfach wird :evil:
Würde mir ja auch reichen, wenn die Kiste in Suspend- oder Hibernation geht.
Fragt sich nur, ob diese Modi auch nach Stromausfall mit einer manuellen BIOS-Einstellung à la 'Restart after Power Loss' wiederkommt ?!
Das habe ich noch nicht getestet.

Aber irgendwie muss doch so'n WinDoof-Kasten aufgeweckt werden und damit ein bestimmtes Prog gestartet werden können ?
WakeOnLan käme da für mich so zunächst nicht in Betracht.

Cylence 31. Jul 2009 07:23

Re: Rechner starten mit BIOS-Timer
 
Hi,

wenn aber ein BIOS Update unter XP möglich ist...was ja auch geht...dann müsste das doch theoretisch auch gehen, denke ich eigentlich.

aber leider weiß ich nicht wie, hab da noch nie was gemacht in der Richtung. Sorry.

Gruß

Tom

hathor 31. Jul 2009 10:10

Re: Rechner starten mit BIOS-Timer
 
Das hier macht genau, was Du willst - mit ein bisschen Änderung:

http://home.arcor.de/baier/Data/Glob...lerSources.zip

Vorsicht:
2147483647

The largest positive value of a signed integer on a 32 bit operating system. The data type time_t which is used on operating systems including UNIX and Windows is a signed integer. On January 19, 2038 at 3:17:07 GMT, the time_t values on 32 bit machines will be maxed out and set to -2147483647. This will make clocks set to December 13, 1901 20:45:52 GMT.
The world of time will end on January 19, 2038 at 3:17:07 GMT, otherwise known as 2147483647.

TERWI 31. Jul 2009 13:03

Re: Rechner starten mit BIOS-Timer
 
Dank dir hathor !
Sieht ja auf den 1. Blick recht vielversprechend aus, aber wie immer das ABER:

Die fehlende Klasse TadpInstanceControl habe ich schon gefunden.

Was ich absolut auch nach einer halben Stunde blättern in den files nicht gefunden habe, ist die Stelle, wo der / die Progger (scheinen wohl mehrere nacheinander dran gewesen zu sein ?) dem BIOS die neue / nächste Startzeit zum Hochfahren gibt.
Oder wird das irgendwo versteckt über eine WinAPI gemacht - so steht zumindestens in der AboutBox ein kleiner Hint dazu drin...

Hast du dich da schon mal durchgewühlt und / oder hast selber dran getippt ?

Ich denke, es wird noch eine Weile dauern, bis ich das Prog auseinanderdividiert und den Ablauf raus habe.

TERWI 31. Jul 2009 18:31

Re: Rechner starten mit BIOS-Timer
 
:witch: SetWaitableTimer heisst anscheinend die Zauberfunktion :mrgreen:
Siehe hier:
http://msdn.microsoft.com/en-us/library/ms686289(VS.85).aspx

Bevor ich den GlobeScheduler auseinandernehmen wollte, habe ich mal mit der asPOWER.DLL ein wenig experimentiert.
Die gibt es als Demo (mit Demo-Meldungen) hier:
http://www.snaga-uma.com/aspowe.htm

Kleines Tool gebastelt und ...
... die Kiste kommt tatsächlich aus dem Schlaf wieder auf die Beine :cat:
Allerdings sind da 2 Fehler in der aspower.pas.
Und wenn die Kiste wieder wach ist, steht ne Access Violation auf dem Schirm. Wenn's mehr nicht ist 8)

Fazit: Also geht das doch :cyclops:
Mit XP zumindestens.

Ich bin mir nicht ganz sicher, aber ich musste erst den 'Ruhezustand' aktivieren.

Auf jeden Fall weiß ich jetzt, das ein seeeehhhr langes Delphi-WE vor mir liegt.

Wer noch passende Tipps, Tricks, Kniffe und Snippets hat - oder sagt:
'... Heh Alter, alter Hut -> guckst du hier ... ' oder so'
==>> Her mit den Info's nicht nur für mich

:cheers:

PS: Wenn man weiß, wonach man suchen muss, ist das auch hier im CLub schon div. Male vorhanden :oops:

hathor 31. Jul 2009 19:57

Re: Rechner starten mit BIOS-Timer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hast Du diese Demo getestet? Bei mir gibt es keine Fehlermeldung.

http://www.mirrorservice.org/sites/f...ll/aspower.zip

Anmerkung:
{ if you use Delphi 7, please when you call next two functions }
{ add sleep(100) after it and you will get no error message }
{ when we wake up PC...

function asSleepAndWakeUp; external 'ASPOW.DLL';
function asCanSuspend; external 'ASPOW.DLL';
---------------------------------------------------------------
Hier ist noch etwas - Freeware:

http://www.dennisbabkin.com/php/faq.php?what=wosb

TERWI 31. Jul 2009 20:05

Re: Rechner starten mit BIOS-Timer
 
Ist das gleiche wie ich habe.
Demo - Meldung und 'Access Violation' nach ReStart.
Auch mit Sleep wie angegeben bis 1 Sekunde und mehr...

Überarbeite gerade diese geniale 'UTimer.pas' aus dem dem geposteten GlobeScheduler.
Da hat sich echt einer ne Delphi-Blase an die Birne gedacht :thumb:

TERWI 1. Aug 2009 11:09

Re: Rechner starten mit BIOS-Timer
 
Kleiner Tipp am Rande...

In der ASPOWER.DLL gibt 2 nette functionen, mit denen man prüfen kann, ob überhaupt die Modi HIBERNATE oder SUSPEND überhaupt gesetzt werden können:
-> asCanHibernate
-> asCanSuspend

Wenn man ein wenig sucht, stellt man fest, dass das eigentlich keine Zauberkunst ist und WinDoof die Functionen in der 'powrprof.dll' bereits zur Verfügung stellt !

Bindet man sich dann in sein Projekt die JEDI-Unit 'JwaPowrProf' ein, hat man neben den äquivalenten Functionen
-> IsPwrHibernateAllowed
-> IsPwrSuspendAllowed
noch eine ganze Reihe nützlicher Dinge mehr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.

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