![]() |
STSD - Den Computer mit nur einem Klick herunterfahren...
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo!
Ich habe mal überlegt, wie man den PC mit nur einem Klick herunterfahren kann... also hab ich mich mal hingesetzt, und mit einem simplen code, und der zu hilfe nahme der LMDTrayIcon Komponente eine kleine Anwendung geschrieben... hier einmal der sourcecode:
Delphi-Quellcode:
Also bitte mal anschauen und vielleicht verbessern, falls das möglich ist...
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, LMDContainerComponent, LMDBaseDialog, LMDAboutDlg, LMDCustomComponent, LMDWndProcComponent, LMDTrayIcon; type TForm1 = class(TForm) LMDTrayIcon4: TLMDTrayIcon; LMDTrayIcon5: TLMDTrayIcon; LMDTrayIcon6: TLMDTrayIcon; About: TLMDTrayIcon; About1: TLMDAboutDlg; procedure LMDTrayIcon4Click(Sender: TObject); procedure LMDTrayIcon6Click(Sender: TObject); procedure LMDTrayIcon5Click(Sender: TObject); procedure AboutClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; type TAutorunKind = (akUserRun, akUserRunOnce, akRun, akRunOnce, akRunServices, akRunServicesOnce); implementation uses Registry; {$R *.dfm} function ExWindows(const AFlag: Word): Boolean; var vi : TOSVersionInfo; hToken : THandle; tp : TTokenPrivileges; h : DWord; begin result:= false; vi.dwOSVersionInfoSize:=SizeOf(vi); if GetVersionEx(vi) then begin if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then begin // Windows NT // Achtung bei Delphi 2 muß @hToken stehen ... if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then begin LookupPrivilegeValue(nil,'SeShutdownPrivilege',tp.Privileges[0].Luid); tp.PrivilegeCount := 1; tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; h := 0; AdjustTokenPrivileges(hToken,False,tp,0,PTokenPrivileges(nil)^, h); CloseHandle(hToken); result := ExitWindowsEx(Aflag, 0); end; end else begin // Windows 95 Result := ExitWindowsEx(Aflag, 0); end; end; end; function CreateAutorunEntry(const AName, AFilename: String; const AKind: TAutorunKind): Boolean; var Reg: TRegistry; begin Result:=False; Reg := TRegistry.create; try if (AKind=akUserRun) or (AKind=akUserRunOnce) then Reg.Rootkey:= HKEY_CURRENT_USER else Reg.RootKey := HKEY_LOCAL_MACHINE; case AKind of akRun, akUserRun : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True); akRunOnce, akUserRunOnce: Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True); akRunServices : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices', True); akRunServicesOnce : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServicesOnce', True); end; Reg.WriteString(AName, AFilename); finally Reg.Free; end; end; procedure TForm1.LMDTrayIcon4Click(Sender: TObject); begin Exwindows(EWX_Shutdown); end; procedure TForm1.LMDTrayIcon6Click(Sender: TObject); begin Exwindows(EWX_Logoff); end; procedure TForm1.LMDTrayIcon5Click(Sender: TObject); begin Exwindows(EWX_Reboot); end; procedure TForm1.AboutClick(Sender: TObject); begin About1.Execute; end; procedure TForm1.FormCreate(Sender: TObject); begin CreateAutorunEntry(Application.Title, ParamStr(0), akUserRunOnce); end; end. PS: ich habe leider keine icons gefunden, die die typischen abmelden/neustarten und herunterfahren buttons von Windows zieren; vllt kann mir ja jemand malwelche zukommen lassen;D PPS: Wer eine etwas umfangreichere Version sucht, kann die vllt. ![]() |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Hallo T.E.
ich hatte mir das auch schon überlegt und das ganze mit Windows gelöst (als Batch-Datei) :zwinker: :zwinker: Inhalt der "Ende.bat"
Code:
Das Runterfahren geht ratz-faz
shutdown -s -f -t 01
bei Vista ist die Zeitangabe überigens überflüssig. mfg |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Dann schlägt T.E.'s Lösung deine aber um einen Klick ;-)
Zitat:
Calculon -- |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Hast du schonmal auf den großen Knopf an deinem PC gedrückt, wenn er nicht aus war? Zum Runterfahren braucht man idr. kein solches Tool ... Auschaltknopf antippen und zusehen, wie die "Welt" untergeht.
mfG Markus |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Verknüpfung erstellen:
Code:
In die Schnellstartleiste ziehen und mit 1 Klick ausführen. Man kann sich aus der shell32.dll noch den roten Knopf als Symbol dafür raussuchen.
%windir%\system32\shutdown.exe -s -t 3
|
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
Code:
C:\Dokumente und Einstellungen\Michael>shutdown -r
Der Vorgang wurde erfolgreich beendet. Der Client besitzt ein erforderliches Recht nicht. |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
Und mir sind gleich einige Dinge aufgefallen: - Quellcode: auch bei so kleinen Projekten kann man die Dateien und Variablem anständig benennen. Projekt1 ist kein Projektname, Unit1 ist kein Unitname, Button1 Label1 Edit1 sind keine Namen für Komponenten - TrayIcons: warum muss mir das Programm die Tray mit 4 Icons zumüllen? Für Hilfe braucht es kein Icon. Und die anderen drei Funktionen kann man zu einem Icon zusammenfassen und per Konfiguration auswählen, welche Funktion das Icon bei Click haben soll. Dann noch eine Anregung: Bei einem Kollegen hab ich ein Programm gesehen, das das Ausschalten sehr viel schneller macht. Klick auf TrayIcon und EINE Sekunde später ist der PC aus. Also nix mit Runterfahren, sondern SOFORT Ausschalten. Der Kollege wollte mir aber nicht sagen, wie er das gemacht hat und das Programm auch nicht geben. Sein KOmmentar: "mach das selber, Du bist doch Programmierer". |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
|
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
Bei SOFORT Ausschalten ist der PC aber nicht kaputt, sondern ausgeschaltet. Das wäre beim Auto so, wie "Auf die Bremse stehen und mit einem Ruck die Kupplung kommen lassen". Dann steht der Motor aber das Auto kann weiterhin benutzt werden. Dass dies dem Auto (Motor, Kupplung) und dem PC (Windows) nicht auf Dauer gut tut ist klar. Aber manchmal muss es eben schnell gehen und man hat nicht die Zeit, um den PC anständig runterzufahren. |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
Zitat:
Zitat:
Gruß |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
Vielleicht auch mit einer Klick-Kombination (Links-Rechts-Links) oder mit <STRG> + Klick. |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Der Rechner braucht nicht umsonst ein paar Momente, um auszugehen. Windows muss eben noch ein paar Dinge sauber erledigen: laufende Prozesse beenden, Dienste beenden, Netzwerkverbindungen trennen usw. Und all das wird Windows wohl nicht mehr machen können, wenn du es vor die Wand setzt zum Beenden.
|
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
Mir ging es hier auch mehr darum, dass allgemein auf das Risiko aufmerksam gemacht wird, bevor das von irgendwem unvorsichtig ausprobiert wird und damit vielleicht wirklich wichtige Daten über den Jordan gehen Gruß |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
Zitat:
ICH HABE VERGESSEN ZU ERWÄHNEN DAS ICH DENN PC GERNE OHNE DATENVERLUST HERUNTERFAHREN MÖCHTE... |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
@T.E.: Wie bereits von luckie erwähnt darf das Shutdown-Kommando nur von Nutzern mit Administratorrechten ausgeführt werden.
Und die Lösung mit dem Knopfdrücken finde ich auch noch am besten sofern in den Einstellungen die richtige Aktion für den Powerknopf eingestellt ist. |
Re: STSD - Den Computer mit nur einem Klick herunterfahren..
Zitat:
Die Option für das Drücken des Tasters ist übrigens in den Energieoptionen der Systemsteuerung zu finden. Zitat:
|
AW: STSD - Den Computer mit nur einem Klick herunterfahren...
Hey!
Ich hab das Programm ausprobiert, und möchte jetzt gerne den "Autostart" wieder weghaben. Das Programm soll keine Spuren mehr am PC haben! Wie geht das? Hat es sich in der Registry eingetragen? Wenn ja wo? Bitte um rasche Antwort. Mit freundlichen Grüßen ProgrammiererMike |
AW: STSD - Den Computer mit nur einem Klick herunterfahren...
Hi,
ja, so sieht es aus. Schau mal in den hier genannten Pfaden in der Registry:
Delphi-Quellcode:
in HKCU bzw. HKLM
akRun, akUserRun : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
akRunOnce, akUserRunOnce: Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True); akRunServices : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices', True); akRunServicesOnce : Result:=Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServicesOnce', True); LG, Frederic |
AW: STSD - Den Computer mit nur einem Klick herunterfahren...
Danke für die Antwort!
Hab nur RunOnce gefunden, könnte sein, dass das reicht, denn RunOnce heißt ja so viel wie Autostart. Mit freundlichen Grüßen ProgrammiererMike |
AW: STSD - Den Computer mit nur einem Klick herunterfahren...
Hi,
hmm, in runOnce (was eigentlich nur so viel heißt wie "führe einmal aus") stehen eigentlich die Programme drin, die einmalig beim nächsten Start ausgeführt werden. Siehe dazu hier: ![]() LG, Frederic |
AW: STSD - Den Computer mit nur einem Klick herunterfahren...
Ok!
Auf jeden Fall hab ich es aus RunOnce rausgelöscht und neugestartet und tata!!! es ist weg. Danke nochmals! Mit freundlichen Grüßen ProgrammiererMike |
AW: STSD - Den Computer mit nur einem Klick herunterfahren...
Das Programm trägt sich ja bei jedem Start neu ein...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 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 by Thomas Breitkreuz