AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte STSD - Den Computer mit nur einem Klick herunterfahren...
Thema durchsuchen
Ansicht
Themen-Optionen

STSD - Den Computer mit nur einem Klick herunterfahren...

Ein Thema von T.E. · begonnen am 5. Sep 2007 · letzter Beitrag vom 25. Nov 2010
Antwort Antwort
Seite 2 von 3     12 3      
T.E.
Registriert seit: 27. Mai 2007
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...
Angehängte Dateien
Dateityp: rar stsd_703.rar (279,6 KB, 15x aufgerufen)
Dateityp: exe stsd_822.exe (564,0 KB, 15x aufgerufen)
Gruß Torben
 
Benutzerbild von RavenIV
RavenIV

 
Delphi 2007 Enterprise
 
#11
  Alt 6. Sep 2007, 09:33
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.
Klaus E.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#12
  Alt 6. Sep 2007, 09:33
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.
Michael
  Mit Zitat antworten Zitat
angos

 
Delphi 11 Alexandria
 
#13
  Alt 6. Sep 2007, 09:40
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ß
Ansgar
  Mit Zitat antworten Zitat
T.E.

 
Delphi XE2 Enterprise
 
#14
  Alt 6. Sep 2007, 13:32
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 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...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry

 
Delphi 2006 Professional
 
#15
  Alt 6. Sep 2007, 13:39
@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.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

 
Turbo Delphi für Win32
 
#16
  Alt 7. Sep 2007, 16:55
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 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.
  Mit Zitat antworten Zitat
ProgrammiererMike
 
#17
  Alt 25. Nov 2010, 16:23
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
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber

 
Delphi XE Professional
 
#18
  Alt 25. Nov 2010, 16:26
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
Frederic Kerber
  Mit Zitat antworten Zitat
ProgrammiererMike
 
#19
  Alt 25. Nov 2010, 16:37
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
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber

 
Delphi XE Professional
 
#20
  Alt 25. Nov 2010, 16:39
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
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12:55 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