Autor Beitrag
IhopeonlyReader
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mo 18.02.13 16:32 
Guten Tag,
ist es möglich einen schon abgegebenen Shutdown-Befehl wieder auszulesen? (mit delphi)
Beispiel:

ich gebe in mein cmd fenster folgendes ein:
ausblenden Delphi-Quelltext
1:
shutdown -s -t 200					


nun möchte ich in meinem programm folgendes Herausfinden
- Art des Shutdownbefehls (im Beispiel -s)
- Restliche Zeit (Bis man programm geöffnet hat etc. sind z.B. 10 sek vergangen.. also erwartetes Ergebnis: 190)


Zu Beachten ist, dass die Anwendung NICHT geöffnet ist, während der Befehl abgegeben wird...

Hoffe auf hilfreiche Antworten und bin mal gespannt wie komplex eine Solche abfrage sein wird^^


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 19.02.2013 um 09:18

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 18.02.13 17:44 
shutdown /? liefert dir die Antwort:

-a Bricht das Herunterfahren des Systems ab.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mo 18.02.13 17:51 
Ich denke er möchte herausfinden mit welchen Parametern der Befehl ausgeführt wurde und wie viel Zeit bist zum Herunterfahren noch verbleibt.
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mo 18.02.13 20:43 
thepaine91 hat es richtig verstanden :)

@persau: das wäre ja zu einfach :D

hat jemand ideen dazu?.. auch wenn man erstmal nicht die direkten Delphi Befehle kennt.. gibt es dazu irgendwelche CMD-Befehle?

und bei WinXP kommt ja "dauerhaft" dann eine nicht schließbare Meldung, die anzeigt wann heruntergefahren wird...

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 18.02.13 22:01 
Wozu benötigst du diese Daten?
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Di 19.02.13 18:20 
Ich habe ein Programm geschrieben mit dem man bequem einen Computer an einem bestimmten Datum herunterfahren kann....

Wenn ich jetz also eingebe: Heute 20:30

Dann berechne ich das alles so dass es an das CMD Fenster übergeben wird und der Computer pünktlich auf die Sekunde genau um 20:30 herunterfährt..
Dazu startet in der Form ein Countdown (exakte Restzeit + Datum + Uhrzeit wann heruntergefahren wird...)

Wenn ich die Form jetz schließe und neu öffne, dann läuft der Countdown nicht... (logisch ?!)
Und nun möchte ich beim Starten meiner Anwendung die Zeit (wann heruntergefahren wird, mit welchem befehl (-s neustart oder -r restart...) herausfinden und meinen Countdown weiterlaufen lassen...

UND: Es soll ebenfalls der Countdown laufen, falls der Shutdownbefehl NICHT von meiner Anwendung gesetzt wurde... (sons könnt ich die Herunterfahrzeit als String in einer Datei speichern)

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Di 19.02.13 20:32 
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich die Form jetz schließe und neu öffne, dann läuft der Countdown nicht... (logisch ?!)
Und nun möchte ich beim Starten meiner Anwendung die Zeit (wann heruntergefahren wird, mit welchem befehl (-s neustart oder -r restart...) herausfinden und meinen Countdown weiterlaufen lassen...

1. Beim Setzen der Shutdown-Zeit die Uhrzeit in einer Datei abspeichern.
2. Nach einem Neustart des Programms die Zeit aus der Datei auslesen und die Restzeit neu berechnen.

Zitat:
UND: Es soll ebenfalls der Countdown laufen, falls der Shutdownbefehl NICHT von meiner Anwendung gesetzt wurde... (sons könnt ich die Herunterfahrzeit als String in einer Datei speichern)

Ein Herunterfahren wird nicht nur durch Dein Programm oder durch den Shutdown-Befehl von der Eingabezeile aus angestoßen. Hier mal eine (bei Weitem nicht vollständige) Liste:
- Installation / Deinstallation von Programmen, insbesondere wenn Treiber mit im Spiel sind
- Windows-Update
- Downloadmanager nach Beendigung der Downloads
- Update des Antiviren-Programms
- Nach dem Beenden eines Brennvorgangs
- Shutdown-Exe
- andere Programme mit so einer "Spiel-Funktion"
- usw.

Das kann man nicht alles abfragen. Schließlich weiß man nicht, wann die umfangreichen Windows-Updates soweit fertig sind. Du weißt auch nicht, wann die Downloads mit einem Downloadmanager abgeschlossen sind. usw. Schließlich benutzen diese Programme ja nicht das Programm Shutdown-Exe mit einer Zeitangabe, sondern rufen die entsprechenden API-Funktionen direkt auf, wenn die entsprechenden Bedingungen erfüllt sind (Download abgeschlossen, Brennen abgeschlossen usw.).
Wenn nun jemand Shutdown-Exe mit einer Zeitangabe (/t xxx) gestartet hat, wirst Du wohl den Speicher des Programms WinLogon auslesen müssen. Das ist alles andere als trivial. Und diesen Aufwand betreiben, nur damit auf einem Formular für die restlichen paar Sekunden die Zeit aktualisiert wird???

Hier hast Du einges zu lesen: blogs.msdn.com/b/ntd...dows-shuts-down.aspx

Fazit: Stell Dir einen Wecker auf Deinen Schreibtisch. Und wenn der klingelt, fährst Du Deinen Rechner von Hand runter.
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mi 20.02.13 12:19 
user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
1. Beim Setzen der Shutdown-Zeit die Uhrzeit in einer Datei abspeichern.
2. Nach einem Neustart des Programms die Zeit aus der Datei auslesen und die Restzeit neu berechnen.

Das habe ich selber schon vorgeschlagen :D (siehe klammern) am ende:
Zitat:
UND: Es soll ebenfalls der Countdown laufen, falls der Shutdownbefehl NICHT von meiner Anwendung gesetzt wurde... (sons könnt ich die Herunterfahrzeit als String in einer Datei speichern)




user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:

Liste:
- Installation / Deinstallation von Programmen, insbesondere wenn Treiber mit im Spiel sind
- Windows-Update
- Downloadmanager nach Beendigung der Downloads
- Update des Antiviren-Programms
- Nach dem Beenden eines Brennvorgangs
- Shutdown-Exe
- andere Programme mit so einer "Spiel-Funktion"
- usw.


Dafür sind die Programme dann selber zuständig und nicht meins.. ich will nur allgemein shutdownbefehle die über das cmd fenster gegeben sind/ schon ans system (mit bekannter Zeit) übergeben worden sind, auslesen...
Falls also jemand ins CMD-Fenster schreibt: shutdown -s -t 180
will ich über mein programm die 180 wissen.. oder falls jemand
shutdown -a eingbibt (cmd -fenster) soll der countdown stoppen...



user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:

Fazit: Stell Dir einen Wecker auf Deinen Schreibtisch. Und wenn der klingelt, fährst Du Deinen Rechner von Hand runter.

Gerade das soll ja verhindert werden :D Die Anwendung ist z.B. für Filmseher gedacht, die Abends im Bett am Computer filme sehen und damit sie am ende des filmes nicht aufstehen müssen, fährt der pc selber runter...


Idee: falls meine anwendung offen ist kann ich befehle die ins cmd fenster eingeben werden abfangen, dass weiß ich... (somit wäre shutdown -a erkennbar)

ABER: Wenn ich meine Endzeit in einer Datei speicher, ich mein programm schließe, jemand shutdown -a ins cmd fenster eingibt, ich mein progeramm öffne (und es die endzeit aus der datei liest) liegt der Fehler vor, dass der PC gar nicht heruntergefahren wird... soetwas möchte ich verhindern

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Mi 20.02.13 13:00 
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
ABER: Wenn ich meine Endzeit in einer Datei speicher, ich mein programm schließe, jemand shutdown -a ins cmd fenster eingibt, ich mein progeramm öffne (und es die endzeit aus der datei liest) liegt der Fehler vor, dass der PC gar nicht heruntergefahren wird... soetwas möchte ich verhindern

Wenn ich das richtig lese, wird in Deinem Programm ein Zeitpunkt zum Runterfahren bestimmt (z. B. 20:30 Uhr). Danach errechnet Dein Programm die Zeit bis dahin und ruft anschließend Shutdown.Exe auf und übergibt die Restzeit als Parameter (/t xxx). Damit gibt Dein Programm die Kontrolle darüber aber ab. Und genau darauf ist jetzt das nachfolgenden Problem mit dem Feststellen von "Shutdown -a" zurückzuführen.

Besser wäre folgender Programmablauf:
- Zeit zum Runterfahren z. B. in eine Datei wegschreiben.
- Restzeit berechnen (auch nach einem Neustart Deines Programms)
- Wird Zeitpunkt erreicht, den Shutdown auslösen (z. B. mit ExitWindowsEx oder durch Aufruf von Shutdown.Exe)
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Mi 20.02.13 17:30 
Zitat:
Besser wäre folgender Programmablauf:
- Zeit zum Runterfahren z. B. in eine Datei wegschreiben.
- Restzeit berechnen (auch nach einem Neustart Deines Programms)
- Wird Zeitpunkt erreicht, den Shutdown auslösen (z. B. mit ExitWindowsEx oder durch Aufruf von Shutdown.Exe)


Solangsam weichst du vom Thema ab.. denn wie ich meine EIGENE Zeit speicher/auslese kriege ich wohl hin :D... mir geht es NUR um die externen Geschichten, während mein programm geschlossen ist...

Am einfachsten ist das am Beispiel von WinXP zu erkennen!
Bei Win XP wenn ein Shutdown Befehl abgegebn ist, dann kommt DAUERHAFT eine meldung, (im Vordergrund) die anzeigt wann der pc heruntergefahren/neugestartet wird...
Also liegt irgendwo im System die Restzeit vor ! diese möchte ich auslesen..

Außerdem gibt es bei deiner "Art" noch den Fehler, dass nicht heruntergefahren wird, wenn das programm nicht geöffnet ist... (aber bitte die Themaabweichung jetz lassen und zum eigentlichen zurück)

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Mi 20.02.13 23:46 
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Bei Win XP wenn ein Shutdown Befehl abgegebn ist, dann kommt DAUERHAFT eine meldung, (im Vordergrund) die anzeigt wann der pc heruntergefahren/neugestartet wird...
Also liegt irgendwo im System die Restzeit vor ! diese möchte ich auslesen..

Noch einmal: Das Runterfahren des Systems wird durch das Programm WinLogon geregelt. Shutdown.Exe hat damit nichts zu tun. Es leitet nur die Konsoleneingabe an WinLogon weiter. WinLogon speichert die Daten in seinem Arbeitsspeicher, also im RAM.

Zitat:
WINLOGON has various internal flags and variables that control this deferred shutdown mechanism. The ShutdownInProgress flag records the fact that a shutdown is already scheduled (i.e. the thread has already been invoked). The ShutdownTime variable records the time that the thread will wait until before actually initiating the shutdown. The ShutdownHasBegun records the fact that a shutdown has begun (i.e. the thread has called ExitWindowsEx()). The AbortShutdown flag is set if an "abort shutdown" request comes in via the named pipe or if abort is chosen from the "countdown" dialogue box.

Quelle: homepage.ntlworld.co...hutdown-process.html

Eine weitere Quelle habe ich Dir bereits genannt. Vermutlich hast Du das nicht gelesen, sonst wüßtest Du das bereits.

Das Auslesen ist alles andere als trivial. Mit jedem Windows-Update, mit jeder neuen Windows-Version können bzw. werden sich die Adressen im RAM ändern. Außerdem ist WinLogon noch speziell abgesichert. Das Problem fängt schon damit an, die entsprechenden Adressen zu ermitteln (siehe meinen ersten Link). Machst Du dabei einen Fehler, fliegt Dir Dein Windows um die Ohren. Das nächste Problem dürfte sein, daß Du nicht einfach ReadProcessMemory verwenden kannst, weil bereits OpenProcess beim Programm WinLogon fehlschlägt.

Zitat:
On a typical Windows NTbased system, several processes are already running, even if the user has not logged in. The most important of these processes are the System Idle Process, the System Process, SMSS.EXE, CSRSS.EXE, WINLOGON.EXE, and SERVICES.EXE. A Windows NT scanner should scan all of these address spaces and also any other running processes executed by the user.

The trick is that some of these processes cannot be opened by OpenProcess() to get a handle for the other APIs with the necessary access. In Microsoft Press documentation7 (such as the Advanced Windows NT Third Edition), it is stated that some of the processes are secure processes and therefore cannot be opened for QUERY_INFORMATION or VM_WRITE operations. (These processes include WINLOGON.EXE, CLIPSRV.EXE, and EVENTLOG.EXE.) Such processes first need an additional system security privilege to be adjusted. (This information is missing from the Microsoft documentation.)

In particular, the SeDebugPrivilege privilege value must be adjusted to the SE_PRIVILEGE_ENABLED attribute. The SeDebugPrivilege is available to administrators and equivalent users or to anyone who has been granted this privilege by an administrator. However, even under an administrator account, the default attribute of this privilege is not enabled, so OpenProcess() will fail to open secured processes. To enable this privilege, the OpenProcessToken() function must specify TOKEN_ADJUST_PRIVILEGES, and then LookupPrivilegeValue() can be used to check whether the user has the privilege at all. If the user has the rights to do it, this privilege can be set to SE_PRIVILEGE_ENABLED by the AdjustTokenPrivileges() API.

Quelle: computervirus.uw.hu/ch12lev1sec4.html

Einen Dialog, der die Zeit des Shutdowns permanent anzeigt, gibt es unter Windows 7 nicht. Nach Eingabe von "shutdown -r -f -t xxx" wird nur kurzzeitig eine Sprechblase unten rechts neben der Uhr angezeigt, wenn xxx größer 600 ist (entspricht 10 Minuten). Bei xxx kleiner 600 erscheint ein Dialog, der die Shutdown-Zeit angibt. Kann aber weggeklickt werden. Danach gibt es keinerlei Anzeigen mehr.

Deshalb hatte ich Dir einfache Lösungen aufgezeigt. Daran bist Du ja nicht interessiert ...
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.02.13 02:26 
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe ein Programm geschrieben mit dem man bequem einen Computer an einem bestimmten Datum herunterfahren kann....


Okay, aber wozu benötigt man ein Programm, das den PC an einem bestimmten Datum zu einer bestimmten Uhrzeit runterfährt?

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
ABER: Wenn ich meine Endzeit in einer Datei speicher, ich mein programm schließe, jemand shutdown -a ins cmd fenster eingibt, ich mein progeramm öffne (und es die endzeit aus der datei liest) liegt der Fehler vor, dass der PC gar nicht heruntergefahren wird... soetwas möchte ich verhindern


Wenn nur du selbst bzw. der Anwender am eigenen PC sitzt, dann stellt er sich, um den PC automatisch runterfahren zu lassen, die ShutDown-Zeit ganz normal im MSDOS-Fenster über den ShutDown-Befehl ein. Wenn dagegen in einem Intranet der System-Administrator aus irgendwelchen Gründen alle Firmen-PCs runterfährt, siehst du die noch verbleibende Zeit im Meldungsfenster. Mir ist daher noch immer völlig schleierhaft, wozu du diese Daten mit einem Delphi-Programm auslesen möchtest.

Oder anders gefragt: Wer löst denn am Privat-PC den Shutdown aus? Richtig: Der private Anwender. Der Fall, daß jemand anders am Privat-PC den Computer runterfährt, tritt also gar nicht erst ein. Und Hilfsmittel, um einen Fremd-PC zu einer bestimmten Zeit herunterfahren zu können (Virenprogrammierung etc.) wirst du hier vergeblich suchen ...
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Fr 22.02.13 21:11 
Da man die von WinLogon gespeicherten Variablen nicht auslesen kann, habe ich hier mal weiter geforscht und einige Sachen unter Windows 7 (32-Bit) ausprobiert.

WinLogon hat hier drei laufende Threads. Wird ein "shutdown -r -f -t xxx" eingegeben, startet WinLogon sofort einen vierten Thread. Diese vier Threads bleiben aktiv bis der Rechner runterfährt. Wird vorher ein "shutdown -a" abgesetzt, wird nach etwa einer Minute der dritte der vier Threads aus dem System entfernt.

Wenn Dein Programm also einen Shutdown für 20:30 Uhr absetzt, sind danach vier Threads aktiv. Diese Thread-IDs solltest Du zusammen mit der geplanten Shutdown-Zeit abspeichern. Wird Dein Programm gestoppt, solltest Du nach einem Neustart des Programms diese Thread-IDs neu auslesen. Stimmen sie mit den zuvor gespeicherten überein, wurde kein "shutdown -a" eingegeben. Wenn es nur drei Threads sind, wurde der geplante Shutdown gestoppt. Sind es jedoch vier Threads, aber die Nummern stimmen nicht mit den gespeicherten überein, wurde der geplante Shutdown mit "shutdown -a" gestoppt und ein neuer Shutdown-Termin festgelegt.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
procedure TMainform.Button1Click(Sender: TObject);
var
  PE_Thread   : TThreadEntry32;
  PE_WinLogon : TProcessEntry32;
  ExeName     : string;
  HProcList   : THandle;
  HExe        : THandle;
begin
  Button1.Enabled := false;

  ExeName := 'WINLOGON.EXE';
  PE_WinLogon.dwSize := SizeOf(TProcessEntry32);
  HProcList := CreateToolHelp32SnapShot(TH32CS_SnapAll, 0);

  Process32First(HProcList, PE_WinLogon);
  repeat
  until
    (UpperCase(PE_WinLogon.szExeFile) = UpperCase(ExeName))
      or (not Process32Next(HProcList, PE_WinLogon));
  CloseHandle(HProcList);

  HExe := PE_WinLogon.th32ProcessID;

  Memo1.Clear;
  Memo1.Lines.Add('WinLogon-PID: ' + IntToStr(HExe));

  PE_Thread.dwSize := SizeOf(TThreadEntry32);

  HProcList := CreateToolHelp32SnapShot(TH32CS_SnapThread, 0);
  Thread32First(HProcList, PE_Thread);
  repeat
    if ((HExe = PE_Thread.th32OwnerProcessID) and (HExe <> PE_Thread.th32ThreadID)) then
      Memo1.Lines.Add(IntToStr(PE_Thread.th32ThreadID));
  until
    not Thread32Next(HProcList, PE_Thread);
  CloseHandle(HProcList);

  Button1.Enabled := true;
end;


Eine andere Lösung gibt es meines Wissens leider nicht.

Nachtrag: Benötigt wird die Unit TlHelp32.
drstar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 79
Erhaltene Danke: 2

Windows 8.1/x64
Delphi 10.1
BeitragVerfasst: Di 19.03.13 19:23 
Eine wesentlich bessere und in meinen Augen elegantere Lösung ist die Nutzung des Taskplaners / Aufgabenplaners, wie ich es schon seit Jahren mache. Da die Aufagbe rein, Zeit und Datum konfigurieren und 60 sek Vorlauf geben, damit der Anwender nicht plötzlich alles weggerissen bekommt. So kommt brav die Warnung "Das System wird in weniger als 1 Minute heruntergefahren" und man kann selbst alle Programme ordentlich beenden. Was habe ich auch davon, wenn mir das System 3 h vorher Bescheid sagt und nach 3h plötzlich den Stecker zieht...

-Edit-

Dann brauchst Du nur noch im Planer zu überprüfen, ob dort ein Shutdown definiert ist, wenn ja, ob dieser aktiv geschaltet ist, und wenn ja, wann der Shutdown dann zuschlagen soll.
Mr_Emre_D
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 114
Erhaltene Danke: 14



BeitragVerfasst: Mi 20.03.13 10:28 
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
Besser wäre folgender Programmablauf:
- Zeit zum Runterfahren z. B. in eine Datei wegschreiben.
- Restzeit berechnen (auch nach einem Neustart Deines Programms)
- Wird Zeitpunkt erreicht, den Shutdown auslösen (z. B. mit ExitWindowsEx oder durch Aufruf von Shutdown.Exe)


Solangsam weichst du vom Thema ab.. denn wie ich meine EIGENE Zeit speicher/auslese kriege ich wohl hin :D... mir geht es NUR um die externen Geschichten, während mein programm geschlossen ist...

(*vorher*)

Wenn ich die Form jetz schließe und neu öffne, dann läuft der Countdown nicht... (logisch ?!)
Und nun möchte ich beim Starten meiner Anwendung die Zeit (wann heruntergefahren wird, mit welchem befehl (-s neustart oder -r restart...) herausfinden und meinen Countdown weiterlaufen lassen...


Bitte sei nicht so ignorant. Gerd hat bereits eine saubere Lösungsidee gepostet, ignoriere sie nicht -.-

Wenn du deine Anwendung neu öffnest und du aus deiner "Datei" ausliest, dass ein Shutdown-Job ansteht, kannst du, sofern sie nicht mehr läuft - oder unabhängig davon, shutdown mit den entsprechenden Parametern nochmal ausführen!
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Sa 23.03.13 12:07 
user profile iconMr_Emre_D hat folgendes geschrieben Zum zitierten Posting springen:

Bitte sei nicht so ignorant. Gerd hat bereits eine saubere Lösungsidee gepostet, ignoriere sie nicht -.-

Gerds Idee ist gut.. stimmt :) ich werde sie mir genauer anschauen^^

user profile iconMr_Emre_D hat folgendes geschrieben Zum zitierten Posting springen:

Wenn du deine Anwendung neu öffnest und du aus deiner "Datei" ausliest, dass ein Shutdown-Job ansteht, kannst du, sofern sie nicht mehr läuft - oder unabhängig davon, shutdown mit den entsprechenden Parametern nochmal ausführen!


mhh.. starten, wenn es abgebrochen wurde? ne das wäre ja widerrum gegen den Benutzer :D ich möchte nicht einfach so herunterfahren, sondern schon wissen ob er das selber möchte :D

eine Idee hätte ich auch noch :D
am start shutdown -a ausfürhen lassen und soviel ich weiß bekomme ich ein integer wert zurück, ist dieser größer als eine Zahl, so ist der befehl "fehlgeschlagen" also muss ich den pc nicht auf shutdown setzen... wee es allerdings einen wert kleiner der zahl zurückliefert, dann starte ich mit dem Datum + Zeit in der Datei abgespeichert... einzige Problem: ich kann zwar so ein "shutdown -a" nachträglich abfragen, allerdings weiß ich nicht was ich unterbrochen habe, mein eigenes shutdown oder ein selbst ausgeführtes...

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Sa 23.03.13 15:23 
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
einzige Problem: ich kann zwar so ein "shutdown -a" nachträglich abfragen, allerdings weiß ich nicht was ich unterbrochen habe, mein eigenes shutdown oder ein selbst ausgeführtes...

Siehe oben meinen Beitrag zu den Nummern der WinLogon-Threads.