Entwickler-Ecke
Windows API - Windows Herunterfahren
Erzengel - Mi 28.01.04 09:00
Titel: Windows Herunterfahren
Hallo,
kennt einer den Quellcode um Windows runterzufahren???
Möchte das in einem Button einbauen.
Wäre nett wenn ihr was habt.
Moderiert von
Peter Lustig: Topic Verschoben
Delete - Mi 28.01.04 09:34
1. Suchfunktion.
2. FAQs.
3. Glaube nicht, du bist der Erste, der das hier fragt.
4. @Mods: Zumachen.
:evil:
jaenicke - Mi 28.01.04 11:07
Titel: Rechtschreibung!!!
Hallo!
Siehe oben!
Und wenn Du bei Deiner Suche herunterfahren mit einem r schreibst findest Du auch was!!
Ciao,
S.J.
Erzengel - Mi 28.01.04 15:43
Brauch ich eine Komponete wenn ja wo finde ich diese.
Habe jetzt alle durchgeguckt
Erzengel - Mi 28.01.04 16:09
Ich meine nicht hier gesucht weil mit den kann ich nichts anfangen.
Ich suche Sie in meinem Delphi.
Vielleicht weiß ja einer wo die zufinden ist.(Kateikarte)
Danke für den Link aber ich habe hier nur begrenzten internetzugang. :evil:
Christian S. - Mi 28.01.04 16:24
Wo liegt das Problem? Keldorn hat Dir bereits einen Link genannt, den Du auch sicherlich verwenden kannst, weil er forenintern ist.
matze - Mi 28.01.04 16:41
das ist keine komponenten sondern ein code befehl. falls du das meinst !!!
Erzengel - Do 29.01.04 08:23
Ahh sag das doch.
Genau das wollte ich wissen
Erzengel - Do 29.01.04 14:36
Ok aber ich bin ja noch anfänger. Habe das so zusamen gebastelt.
Kann mir wer helfen den Quelltext zu berichtigen???
Bitte nicht böse sein wenn ich nicht gleich blicke :oops:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TShutdownWindowsType = (swtShutdown, swtShutdownPowerOff, swtRestart, swtLogoff); TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject);
private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
function ShutdownWindows (aType: TShutdownWindowsType): Boolean;
const cSE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; cFlagValue: Array [TShutdownWindowsType] Of UINT = ( EWX_SHUTDOWN, EWX_SHUTDOWN or EWX_POWEROFF, EWX_REBOOT, EWX_LOGOFF );
var OSVersionInfo: TOSVersionInfo; hToken: THandle; hProcess: THandle; TokenPriv: TTokenPrivileges; ReturnLength: DWORD;
begin Result := False;
OSVersionInfo.dwOSVersionInfoSize := SizeOf (OSVersionInfo); if not GetVersionEx (OSVersionInfo) then Exit;
if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then begin hProcess := GetCurrentProcess; if not OpenProcessToken (hProcess, TOKEN_ADJUST_PRIVILEGES, hToken) then Exit;
if not LookupPrivilegeValue (nil, cSE_SHUTDOWN_NAME, TokenPriv.Privileges[0].Luid) then Exit;
TokenPriv.PrivilegeCount := 1; TokenPriv.Privileges [0].Attributes := SE_PRIVILEGE_ENABLED;
if not AdjustTokenPrivileges ( hToken, False, TokenPriv, 0, PTokenPrivileges (nil)^, ReturnLength ) then Exit;
CloseHandle (hToken); end;
ShutdownWindows := ExitWindowsEx (cFlagValue [aType], $FFFFFFFF); end;
procedure TForm1.Button1Click(Sender: TObject); begin ExitWindowsEx (EWX_SHUTDOWN or EWX_POWEROFF, $FFFFFFFF);
end;
end. |
matze - Do 29.01.04 15:08
was bringt er denn für ne fehlermeldung ?
Erzengel - Do 29.01.04 15:40
Gar keine. Es passiert einfach nichts.
Ich drücke den button und ......... nichts passiert.
Tana´Ri - Do 29.01.04 16:26
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TShutdownWindowsType = (swtShutdown, swtShutdownPowerOff, swtRestart, swtLogoff); TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject);
private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
function ShutdownWindows (aType: TShutdownWindowsType): Boolean;
const cSE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; cFlagValue: Array [TShutdownWindowsType] Of UINT = ( EWX_SHUTDOWN, EWX_SHUTDOWN or EWX_POWEROFF, EWX_REBOOT, EWX_LOGOFF );
var OSVersionInfo: TOSVersionInfo; hToken: THandle; hProcess: THandle; TokenPriv: TTokenPrivileges; ReturnLength: DWORD;
begin Result := False;
OSVersionInfo.dwOSVersionInfoSize := SizeOf (OSVersionInfo); if not GetVersionEx (OSVersionInfo) then Exit;
if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then begin hProcess := GetCurrentProcess; if not OpenProcessToken (hProcess, TOKEN_ADJUST_PRIVILEGES, hToken) then Exit;
if not LookupPrivilegeValue (nil, cSE_SHUTDOWN_NAME, TokenPriv.Privileges[0].Luid) then Exit;
TokenPriv.PrivilegeCount := 1; TokenPriv.Privileges [0].Attributes := SE_PRIVILEGE_ENABLED;
if not AdjustTokenPrivileges ( hToken, False, TokenPriv, 0, PTokenPrivileges (nil)^, ReturnLength ) then Exit;
CloseHandle (hToken); end;
result := ExitWindowsEx (cFlagValue [aType], $FFFFFFFF); end;
procedure TForm1.Button1Click(Sender: TObject); begin ShutdownWindows (EWX_SHUTDOWN or EWX_POWEROFF, $FFFFFFFF); end;
end. |
Erzengel - Fr 30.01.04 11:43
Sorry aber jetzt krieg ich die Fehlermeldung
[Fehler] Unit1.pas(86): Inkompatible Typen: 'TShutdownWindowsType' und 'Integer'
Steh vor der Wand und komme nicht weiter.
Tana´Ri - Fr 30.01.04 12:48
hatte das vorher noch nie gesehen, ist aber das gleiche
-> ob ich nun result das Funktionsergebnis zuweise oder den Funktionsname anstatt result hinschreibe.
der button1click sollte doch deine Shutdown Fkt aufrufen oder ? was steht in line 86 ?
TShutdownWindowsType - Error
ExitWindowsEx (cFlagValue [aType], $FFFFFFFF);
hier wird ein Integer (ohne Vorzeichen) benötigt !
-> die TShutdownWindowsType mengenelemente sollte Konstanten sein die den jeweiligen Wert repräsentieren
siehe Windows.pas
EWX_LOGOFF = 0;
EWX_SHUTDOWN = 1;
EWX_REBOOT = 2;
EWX_FORCE = 4;
EWX_POWEROFF = 8;
EWX_FORCEIFHUNG = $10;
Delete - Fr 30.01.04 12:59
nil
Tana´Ri - Fr 30.01.04 13:05
Wat du wolle ?! :evil:
ok zurück genommen 8)
Erzengel - Fr 30.01.04 13:17
Heute is net mein Tag :evil:
Uwe2703 - Sa 31.01.04 00:17
Hi Erzengel,
ein Kreis ist kein rundes Quadrat. Ein rundes Quadrat ist nicht definiert. :lol:
Ist also Bockmist! :lol:
Ein Kreis ist eine Elypse mit gleichen Radien und ein Quadrat ist ein Rechteck mit gleicher Höhe und Breite. So what? :)
Viele Grüße,
Uwe ;)
Erzengel - Mo 02.02.04 10:31
Deswegen hab ich das auch hingeschrieben.
Delete - Mo 02.02.04 12:14
Was hat jetzt bitte seine Signatur mit seinem Problem zu tun? Könnt ihr sowas nicht per PN oder im Offtopic klären?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!