Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   STSD - Den Computer mit nur einem Klick herunterfahren... (https://www.delphipraxis.net/99032-stsd-den-computer-mit-nur-einem-klick-herunterfahren.html)

T.E. 5. Sep 2007 21:23


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:
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.
Also bitte mal anschauen und vielleicht verbessern, falls das möglich ist...

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. hier finden...

BrunoT 5. Sep 2007 21:53

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:
shutdown -s -f -t 01
Das Runterfahren geht ratz-faz

bei Vista ist die Zeitangabe überigens überflüssig.

mfg

calculon 5. Sep 2007 22:13

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Dann schlägt T.E.'s Lösung deine aber um einen Klick ;-)

Zitat:

Zitat von T.E
[..] mit nur einem Klick herunterfahren kann [..]

Gruß

Calculon
--

markusj 5. Sep 2007 22:22

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

Alien426 5. Sep 2007 22:28

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Verknüpfung erstellen:
Code:
%windir%\system32\shutdown.exe -s -t 3
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.

Luckie 5. Sep 2007 23:39

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von BrunoT
Inhalt der "Ende.bat"
Code:
shutdown -s -f -t 01

Aber nur bei denen die nicht wissen warum es eine Benutzerverwaltung gibt und standardmäßig als Administrator am Rechner arbeiten. Hast du deine Lösung schon mal als normaler Benutzer ausprobiert?

Code:
C:\Dokumente und Einstellungen\Michael>shutdown -r
Der Vorgang wurde erfolgreich beendet.
Der Client besitzt ein erforderliches Recht nicht.

RavenIV 6. Sep 2007 09:29

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von T.E.
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...

Hab mir das Programm mal angesehen.
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".

Luckie 6. Sep 2007 10:21

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von RavenIV
Klick auf TrayIcon und EINE Sekunde später ist der PC aus.

Wenn ich mit einem Auto vor eine Betonmauer fahre, dann steht es auch sofort. :?

RavenIV 6. Sep 2007 10:26

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von RavenIV
Klick auf TrayIcon und EINE Sekunde später ist der PC aus.

Wenn ich mit einem Auto vor eine Betonmauer fahre, dann steht es auch sofort. :?

Dann ist das Auto aber kaputt.
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.

angos 6. Sep 2007 10:29

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von RavenIV
Dann ist das Auto aber kaputt.

ja, da hast du recht

Zitat:

Bei SOFORT Ausschalten ist der PC aber nicht kaputt, sondern ausgeschaltet.
nicht zwangsläufig, aber er kann dadurch schaden nehmen, speziell kannst du dir damit dein windows zerschiessen. Das wurde auch schonmal hier und auch in anderen Foren durchgekaut ;)

Zitat:

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.
Na wenigstens weist du um das Risiko... wichtig ist halt: Diese Aktion kann dir auch beim ersten ausführen (wenn´s unglücklich kommt) dein windows zerstören


Gruß

RavenIV 6. Sep 2007 10:33

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von angos
Zitat:

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.
Na wenigstens weist du um das Risiko... wichtig ist halt: Diese Aktion kann dir auch beim ersten ausführen (wenn´s unglücklich kommt) dein windows zerstören

Man könnte es ja als Option in die Software einbauen.
Vielleicht auch mit einer Klick-Kombination (Links-Rechts-Links) oder mit <STRG> + Klick.

Luckie 6. Sep 2007 10:33

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.

angos 6. Sep 2007 10:40

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von RavenIV
Man könnte es ja als Option in die Software einbauen.
Vielleicht auch mit einer Klick-Kombination (Links-Rechts-Links) oder mit <STRG> + Klick.

Jeder wie er meint, aber die Option in der Software ist zum Beispiel für mich ein Grund diese gar nicht erst auszuprobieren. Dafür sind mir meine Daten zu wichtig und dauert eine Rücksicherung zu lange.

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ß

T.E. 6. Sep 2007 14:32

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von markusj
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

ABER das mit dem knopfdrücken sollte man besser nur bei NB's machen, ansonsten gibts doch verluste,oder??
Zitat:

Zitat von Alien426
Verknüpfung erstellen:
Code:
%windir%\system32\shutdown.exe -s -t 3
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.

Sind doch acuh Zwei klicks...schnellstartleiste und dann anwendung...(es sei denn die anwenduung ist "sichtbar"

ICH HABE VERGESSEN ZU ERWÄHNEN DAS ICH DENN PC GERNE OHNE DATENVERLUST HERUNTERFAHREN MÖCHTE...

SirThornberry 6. Sep 2007 14:39

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.

Alien426 7. Sep 2007 17:55

Re: STSD - Den Computer mit nur einem Klick herunterfahren..
 
Zitat:

Zitat von T.E.
ABER das mit dem knopfdrücken sollte man besser nur bei NB's machen, ansonsten gibts doch verluste,oder??

Nein, nur wenn man den Taster hält. Alte PCs hatten aber keine Taster (=zustandslose Knöpfe) sondern Schalter. Dort wurde sofort beendet.

Die Option für das Drücken des Tasters ist übrigens in den Energieoptionen der Systemsteuerung zu finden.

Zitat:

Zitat von T.E.
Sind doch acuh Zwei klicks...schnellstartleiste und dann anwendung...(es sei denn die anwenduung ist "sichtbar"

Welche Anwendung? Die Verknüpfung führt sofort den Befehl "shutdown" aus. Es ist wirklich nur ein Klick nötig.

ProgrammiererMike 25. Nov 2010 17:23

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

fkerber 25. Nov 2010 17:26

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:
     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);
in HKCU bzw. HKLM

LG, Frederic

ProgrammiererMike 25. Nov 2010 17:37

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

fkerber 25. Nov 2010 17:39

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:
http://support.microsoft.com/kb/137367/de



LG, Frederic

ProgrammiererMike 25. Nov 2010 17:47

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

Bummi 25. Nov 2010 18:35

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 18:24 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