Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   TShutDown komponente (https://www.delphipraxis.net/33037-tshutdown-komponente.html)

NikoMitDaMacht 31. Okt 2004 19:45


TShutDown komponente
 
Liste der Anhänge anzeigen (Anzahl: 1)
Als mir mal wieder langweilig war, habe ich mir gedacht dass ich doch mal eine kompo
fürs runterfahren einens rechners schreiben könnte:

Man kann mit ihr ganz einfach den rechner

-Runterfahren
-Ausschalten
-Neustarten
-In den StandBy-Mode versetzten
-In den Ruhezustand verstezten
-Und sich abmelden

Bitte jedem fehler melden!

Danke.

DP-Maintenance 31. Okt 2004 19:50

DP-Maintenance
 
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Open-Source" verschoben.
Eine Komponente ist kein Eintrag für die CodeLibrary. ;)

Matze 31. Okt 2004 20:06

Re: TShutDown komponente
 
Mist, da stand grad noch Blödsinn. :lol:

Abmelden geht bei mir schonmal den Rest möchte ich gerade nicht testen. ;)

Luckie 31. Okt 2004 20:15

Re: TShutDown komponente
 
Schon mal Gedanken über den leeren else-Block gemacht?

Delphi-Quellcode:
procedure GetPrivileges; //Rechte um runterzufahren holen.
var
  vi          : TOSVersionInfo;
  hToken      : THandle;
  tp          : TTokenPrivileges;
  h           : DWord;
begin
  vi.dwOSVersionInfoSize := SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
  begin
    // Achtung bei Delphi 2 muß @hToken stehen ... !!!! ?????
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
    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);
  end
  else // Windows 95
  begin
  end;
end;
Ich komme nicht umhin zu glauben, dass du das irgendwo zusammenkopiert hast. Denn diesen Kommentar:
Zitat:

// Achtung bei Delphi 2 muß @hToken stehen ... !!!! ?????
Sieht man uch überall.

Ich habe noch diesen Code auf der Paltte rumfliegen:
Delphi-Quellcode:
function ExitWin(flag: word): Boolean;
var
  vi          : TOSVersionInfo;
  hToken      : THandle;
  tp          : TTokenPrivileges;
  h           : DWord;

begin
  vi.dwOSVersionInfoSize := SizeOf(vi);
  GetVersionEx(vi);
  if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then // Windows NT
  begin
    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
    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(flag, 0);
  end
  else // Windows 95
  begin
    Result := ExitWindowsEx(flag, 0);
  end;
end;
Den könnte man bestimmt auch noch verbessern.

Matze 31. Okt 2004 20:24

Re: TShutDown komponente
 
@Luckie: Dein Code ist aus der Code-Library. Große Fehler dürfte er auch nicht beinhalten.

Sprint 31. Okt 2004 22:24

Re: TShutDown komponente
 
Zitat:

Zitat von Luckie
Ich komme nicht umhin zu glauben, dass du das irgendwo zusammenkopiert hast.

Copy & Paste findet man im Netz doch immer wieder. Ich war auch sehr überrascht als ich im Delphi Forum FAQ den Beitrag "...Windows beenden/neustarten?" gefunden habe.
Da wurden sogar meine Rechtschreibfehler mit kopiert und eingefügt. Nur am Sourcecode wurden ein paar kleine Änderung gemacht.

Luckie 31. Okt 2004 22:28

Re: TShutDown komponente
 
Zitat:

Zitat von Sprint
Zitat:

Zitat von Luckie
Ich komme nicht umhin zu glauben, dass du das irgendwo zusammenkopiert hast.

Copy & Paste findet man im Netz doch immer wieder.

Dagegen ist ja erstmal auch nichts einzuwenden. Nur hier geschah es wohl ohne Sinn und Verstand, anders kann ich mir den leeren else-Block nicht erklären. :roll:

axelf98 31. Okt 2004 22:31

Re: TShutDown komponente
 
[ot]Wenn dann wenigstens eine Meldung wie "95 ist blöd" gekommen wäre...[/ot]

blah 1. Nov 2004 00:10

Re: TShutDown komponente
 
[ot]oder eine meldung zeigen "was sie tun sich noch win9x noch an?" :mrgreen: und dann nach einem klick auf ok eine weitere meldung zeigen mit der bitte auf Start > Ausführen zu klicken und dannach IIRC "rundll32.exe user,ExitWindows" einzugeben und dann auf Ok klicken zum herunterfahren.[/ot] hehe :twisted:

Luckie 1. Nov 2004 00:16

Re: TShutDown komponente
 
Bitte kommt wieder zurück zum Thema.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz