AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [OS] TimeToSleep (PC herunterfahren nach einer gewissen Zeit)

[OS] TimeToSleep (PC herunterfahren nach einer gewissen Zeit)

Ein Thema von IceBube · begonnen am 20. Nov 2015 · letzter Beitrag vom 21. Nov 2015
Antwort Antwort
IceBube
Registriert seit: 9. Jul 2008
Hallo, liebe Delphi Gemeinde!

Seitdem ich lange hier nichts mehr vorgestellt habe und mir heute ein wenig langweilig war, dachte ich mir ich poste mein kleines Projekt. Nämlich ein Programm das einen PC nach einer gewissen Zeit herunterfährt! -Nichts weltbewegendes, also

Warum sowas?
Mir war langweilig^ bzw. war ich unzufrieden mit meinem "Shutdown Tool"! Außerdem wollt ich mal wieder ein wenig programmieren..

Was kann mein Tool?
- Den PC heruntefahren
- Zeit einstellbar (bis 24h)
- Verlauf
- Programm braucht keine Rechte! (Das war mir wichtig) (per CMD / shutdown!)
- Große Schrift / Zeit einstellbar mittels Maus (Rauf / Runter "ziehen")

Also man kann schon noch mehr machen, aber mir waren wichtig > die letzten zwei Punkte!

Im Archiv findets ihr den Code bzw. die Echse..
Lg

ps.
Ich hoffe es funktioniert alles, getestet nur unter Win8.0

-Edit 1
> Screenshot angehängt
Miniaturansicht angehängter Grafiken
t2sleep.png  

Geändert von IceBube ( 2. Feb 2021 um 18:56 Uhr)
 
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#2
  Alt 20. Nov 2015, 23:52
Zitat:
- Programm braucht keine Rechte! (Das war mir wichtig) (per CMD / shutdown!)
Warum ist das Erwähnens wert und so besonders an deinem Programm? Zum einen kann jeder den Rechner runterfahren, wenn dem Benutzer die Privilegien nicht entzogen wurden. Und ich erwarte es eigentlich auch von einem Programm, dessen einzige Funktion ist den Rechner runterzufahren.

Warum lieferst du eine über 6 MB große Debug Version aus?
Michael

Geändert von Luckie (20. Nov 2015 um 23:54 Uhr)
  Mit Zitat antworten Zitat
IceBube
 
#3
  Alt 21. Nov 2015, 00:07
Zitat:
- Programm braucht keine Rechte! (Das war mir wichtig) (per CMD / shutdown!)
Warum ist das Erwähnens wert und so besonders an deinem Programm? Zum einen kann jeder den Rechner runterfahren, wenn dem Benutzer die Privilegien nicht entzogen wurden. Und ich erwarte es eigentlich auch von einem Programm, dessen einzige Funktion ist den Rechner runterzufahren.

Warum lieferst du eine über 6 MB große Debug Version aus?
Mein altes "Shutdown Tool" braucht Admin Rechte (Muss zugeben - Das beliebteste Tool damals wenn man glaubt > Google / Chip)! War mir nicht bewusst, vl hätte ich lieber die History löschen sollen!? Naja, bin nur ein "Hobby Programmierer"

Danke für's Feedback!

//Edit 1
Vielleicht bekomme ich ja mit der "größeren" Schrift noch ein paar Pluspunkte

Geändert von IceBube (21. Nov 2015 um 00:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#4
  Alt 21. Nov 2015, 00:13
Danke. Zurück nach einem Neustart. Also intuitiv ist das Programm irgendwie nicht. Ich habe es nicht geschafft eine Zeit einzustellen. Irgendwie ein Eingabefeld wäre da wohl sinnvoll und intuitiv. Nach einem Klick auf Start kam dann die Meldung, dass der Rechner in weniger als einer Minute runtergefahren wird. Ich traue mich nicht auf "Herunterfahren" zu klicken. Hinter der Schaltfläche verbirgt sich vielleicht eine Möglichkeit eine Zeit einzustellen, aber ich fürchte er macht vielleicht doch das, was drauf steht.

Konfigurationsdateien im Programmverzeichnis ablegen ist keine gute Idee, es sei denn es ist explizit für den USB Stick vorgesehen. Wird das Programm konform ins Programmverzeichnis "installiert", hat es dort keine Schreibrechte. Abgesehen davon, dass sich die Benutzer gegenseitig ihre Einstellungen überschreiben. Windows ist seit XP (für privat Anwender), also seit über 10 Jahren, ein Mehrbenutzersystem mit einem Rechtesystem. Das sollte man als Entwickler langsam gemerkt haben und entsprechend programmieren.

Wozu der zweite leere und unbeschriftete Seitenreiter?
Michael
  Mit Zitat antworten Zitat
IceBube
 
#5
  Alt 21. Nov 2015, 00:30
Ich habe es nicht geschafft eine Zeit einzustellen.
Die Zeit einstellen macht man per Maus (In dem man auf das das Label klickt und rauf/runter zieht). Jedoch, da hast du Recht..erkennt man das als Nutzer nicht sofort. Da muss ich mir was einfallen lassen, war ja eigentlich bis heute nur für mich gedacht.

Irgendwie ein Eingabefeld wäre da wohl sinnvoll und intuitiv
Vl. ein zweites Formular, mal schauen

Nach einem Klick auf Start kam dann die Meldung, dass der Rechner in weniger als einer Minute runtergefahren wird. Ich traue mich nicht auf "Herunterfahren" zu klicken. Hinter der Schaltfläche verbirgt sich vielleicht eine Möglichkeit eine Zeit einzustellen, aber ich fürchte er macht vielleicht doch das, was drauf steht.
Also hast doch eine Zeit einstellen können, sonst wäre nichts passiert wenn du auf "Start" drückst. Per CMD/Shutdown laut meiner Erfahrung dauert es max. bis eine Minute bis der PC herunterfährt. Punkt genau herunterzufahren geht nicht mit dieser Funktion (CMD/Shutdown) leider. Stört mich aber auch nicht, hauptsache er fährt runter..

Konfigurationsdateien im Programmverzeichnis ablegen ist keine gute Idee, es sei denn es ist explizit für den USB Stick vorgesehen. Wird das Programm konform ins Programmverzeichnis "installiert", hat es dort keine Schreibrechte. Abgesehen davon, dass sich die Benutzer gegenseitig ihre Einstellungen überschreiben. Windows ist seit XP (für privat Anwender), also seit über 10 Jahren, ein Mehrbenutzersystem mit einem Rechtesystem. Das sollte man als Entwickler langsam gemerkt haben und entsprechend programmieren.
Ich weiß, wird langsam Zeit dass ich mir das angewöhne^

Wozu der zweite leere und unbeschriftete Seitenreiter?
Gute Frage
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#6
  Alt 21. Nov 2015, 00:38
Ich habe irgendwie rumgeklickt auf dem Tabsheet. Aber da stand immer 00:00:00, also keine Zeit.

Warum nutzt du die shutdown.exe von Windows selbst? Wenn du sie schon nutzt, dann ruf sie dochmit dem Parameter /i auf, dann sparst du dir auch eine eigene grafische Oberfläche. WM_SHUTDOWN und ein Timer und du kannst Sekunden genau den Rechner runterfahren.

Wo ist der Unterschied zwischen "Start" und "Herunterfahren"?
Michael
  Mit Zitat antworten Zitat
IceBube
 
#7
  Alt 21. Nov 2015, 00:49
Ich habe irgendwie rumgeklickt auf dem Tabsheet. Aber da stand immer 00:00:00, also keine Zeit.
Echt? Also bei funktioniert es, du musst die linke Maustaste gedrückt nach oben oder unten ziehen + / - Zumindest bei mir funktionierts so haha

Warum nutzt du die shutdown.exe von Windows selbst? Wenn du sie schon nutzt, dann ruf sie dochmit dem Parameter /i auf, dann sparst du dir auch eine eigene grafische Oberfläche. WM_SHUTDOWN und ein Timer und du kannst Sekunden genau den Rechner runterfahren.
Muss zugeben, dass ich mich mit der "shutdown.exe" nicht genau befasst habe^ Jetzt wo ich es getestet habe..fehlen mir dir Worte. Hee mir war langweilig! Also lass mich.. )

Wo ist der Unterschied zwischen "Start" und "Herunterfahren"?
Mit Start aktivierst du den Countdown und "Herunterfahren" fährt den PC herunter ( <> 1m )

//Edit
Danke für die Info
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#8
  Alt 21. Nov 2015, 01:11
Wenn Start und herunterfahren bei 00:00:00 das gleiche tun, dann könnte man sich eins von beiden sparen.

Wozu ein zweites Fenster? Einfach ein Eingabefeld.

Man kann den Verlauf löschen. Wo wird er denn angezeigt?
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#9
  Alt 21. Nov 2015, 05:10
Hast leider etwas Pech, dass ich nicht schlafen kann und einen Blick in den Quellcode geworfen habe.

Orginal:
iF Tmp < 0 Then Minus := TRUE ELSE Minus := FALSE;

Gescheit formatiert:
Delphi-Quellcode:
if Tmp < 0 then
  Minus := TRUE
else
  Minus := FALSE;
Optimiert:
Minus := Tmp < 0

ShellExecute(0, nil, 'cmd.exe', '/C shutdown /s', nil, SW_HIDE);
Kommt zwei mal vor. Warum?

Delphi-Quellcode:
procedure Form1.Shutdown
begin
  ShellExecute(0, nil, 'cmd.exe', '/C shutdown /s', nil, SW_HIDE);
end;
Redundanter Code ist immer schlecht. Änderst du mal was, vergisst du bestimmt eine Stelle im Code. Identischen Code immer in eine Routine auslagern. Das erhöht die Wartbarkeit und die Übersicht.

Apropos Übersicht.
- Gescheit und einheitlich einrücken
- Einheitliche Schreibweise von Schlüsselwörtern
- So wenig globale Variablen wie möglich. Du kannst alle globalen Variablen als Felder der Form Klasse definieren. (Ausnahme Form1 natürlich)
- Benennung von Elementen. Was macht ToolButton3 usw.? Verlauflschen1 Umlaute sind doof. Wie wäre es mit Verlaufloeschen oder DelHistory? Auch schön: imerzurcksetzen1

Eigentlich ein schön kleines Projekt, um sich mit den oben genannten Kritikpunkten mal zu beschäftigen.

Die Methode, die Zeit mit gedrückter Maustaste und ziehen der Maus einzustellen, ist ja ganz lustig. Nur hast du schon mal versucht 24 Stunden einzustellen? Nimm besser drei SpinEdits. Wer klicken will, kann klicken und wer tippen will, kann tippen.
Michael

Geändert von Luckie (21. Nov 2015 um 05:23 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 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