AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Computer in den Standbymodus fahren

Ein Thema von Delphi Star · begonnen am 27. Jan 2005 · letzter Beitrag vom 28. Jan 2005
Antwort Antwort
Delphi Star

Registriert seit: 4. Apr 2004
432 Beiträge
 
Delphi 2005 Personal
 
#1

Computer in den Standbymodus fahren

  Alt 27. Jan 2005, 15:25
Wie kann man aus einer Delphi-Anwendung heraus den Computer in den Standbymodus fahren
Es muss nur auf Windows NT-Systemen funktionieren.
Real programmers code in binary
SwapIt: Punkte
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Computer in den Standbymodus fahren

  Alt 27. Jan 2005, 15:30
Also ich weiß, dass man es machen kann, aber nichtmehr, wie man es macht. Ich glaube, das hatte was mit der windowseigenen Datei rundll32.exe zu tun hatte. Wenn man diese datei aufruft, kann man den PC runterfahren, in den Standby-Modus versetzen, ausschalten, usw..
Leider weiß ich nicht mehr genau, wie das funktioniert.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von gothic_mike
gothic_mike

Registriert seit: 2. Okt 2003
Ort: Olbernhau
134 Beiträge
 
Delphi 7 Personal
 
#3

Re: Computer in den Standbymodus fahren

  Alt 28. Jan 2005, 12:17
Zitat von Delphi Star:
Wie kann man aus einer Delphi-Anwendung heraus den Computer in den Standbymodus fahren
Es muss nur auf Windows NT-Systemen funktionieren.

versuchs mal damit:

Delphi-Quellcode:
function Power(idx: byte): Boolean;
var TokHandle, ProcHandle: THandle;
    TokPriv, TokPrivPrev: TTokenPrivileges;
    RetLen: DWORD;
begin
  Result := False;
  ProcHandle := OpenProcess(PROCESS_ALL_ACCESS, True, GetCurrentProcessID);
  try
    if not OpenProcessToken(ProcHandle, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TokHandle) then Halt(1);
  finally
    CloseHandle(ProcHandle);
  end;

  try
    if LookupPrivilegeValue('', 'SeShutdownPrivilege', TokPriv.Privileges[0].Luid) then begin
      TokPriv.PrivilegeCount := 1;
      TokPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      AdjustTokenPrivileges(TokHandle, False, TokPriv, SizeOf(TokPrivPrev), TokPrivPrev, RetLen);
    end;
  finally
    CloseHandle(TokHandle);
  end;

  case idx of
    1: Result := ExitWindowsEx(EWX_LOGOFF , 0); // logoff
    2: Result := ExitWindowsEx(EWX_REBOOT , 0); // reboot
    3: Result := ExitWindowsEx(EWX_SHUTDOWN, 0); // shutdown
    4: Result := SetSystemPowerState(True, True); // suspend
    5: Result := SetSystemPowerState(False, True); // hibernate
  end;
end;
diese Function hab ich mal irgendwo im Netz gefunden, weisaber nicht mehr wo...
funktioniert bei mir unter XP+SP2 einwandfrei...
bye4now, gothic_mike
. ..: carpe noctem :: coding in the darkness :.. .
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:41 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