![]() |
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ß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 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