Shutdown mit ShellExecute

SebastianHL

Mitglied
Hi,

ich benutze den Borland C++Bulider 6. Nun möchte ich, das mein Programm Windows herunterfährt. Dazu habe ich schon foldenden Quellcode zum Ausführen einer Datei.

Code:
ShellExecute(0, static_cast<const char*>(x.data()), "shutdown.exe", NULL, NULL, SW_SHOW);

Leider muß hinter das shutdown.exe noch ein -a damit er den Rechner runterfährt. Wenn ich also schreibe shutdown -a nimmt er das nicht mehr an. Es passiert nix.
Kann mir jemmand helfen ?

Gruß
 
moin


Dafür gibt es ne viel bessere Möglichkeit, ExitWindowsEx heisst die Funktion die extra dafür da ist.

Code:
ExitWindowsEx(EWX_POWEROFF+EWX_FORCE, 0);

Ich weiss nciht ob es die auch im Borland gibt, probier es einfach mal aus.


mfg
umbrasaxum
 
Hi,


ich habe das mal ausprobiert. Bei Borland gibts das auch. Nur leider stellt sich weiterhin ein problem. Ich kann nur EWX_LOGOFF & EWX_FORCE werwenden. Ich will das ganze auf einen XP System laufen lassen. Irgendwie fehlen ihm da noch die "Privileges". Nur leider kenn ich mich mit Privileges noch nicht aus & ich habe bei :google: auch nichts gefunden.

Gruß
Seb
 
moin


Dann benutz die Boardsuche: http://www.tutorials.de/tutorials191789.html&highlight=countdown

Da ha ich das folgendermaßen gemacht:
Code:
HANDLE hToken;
TOKEN_PRIVILEGES tPrivs;

OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, "SeShutdownPrivilege", &tPrivs.Privileges[0].Luid);
tPrivs.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tPrivs.PrivilegeCount = 1;
AdjustTokenPrivileges(hToken, FALSE, &tPrivs, 0, (PTOKEN_PRIVILEGES)NULL, 0);

ExitWindowsEx(EWX_POWEROFF+EWX_FORCE, 0);


mfg
umbrasaxum
 
Hallo,

das ist viel einfacher:

system("C:\\WINDOWS\\System32\\shutdown.exe -s -f -t 0 "); :-)

und funktioniert bei XP
( nicht Windows 9x , ME )
 
umbrasaxum hat gesagt.:
Ich weiss nciht ob es die auch im Borland gibt, probier es einfach mal aus.

Das hat nix mit Borland zu tun, das ist WinApi...
...Höchstens das Borland hätte nicht die nötigen Headerfiles mitgeliefert.. was aber sehr sehr verdammt unwahrscheinlich wär und selbst dann könnte man die Funktion noch dynamisch mit LoadLibrary und GetProcAddress aufrufen.


SebastianHL hat gesagt.:
Hi,


ich habe das mal ausprobiert. Bei Borland gibts das auch. Nur leider stellt sich weiterhin ein problem. Ich kann nur EWX_LOGOFF & EWX_FORCE werwenden. Ich will das ganze auf einen XP System laufen lassen. Irgendwie fehlen ihm da noch die "Privileges". Nur leider kenn ich mich mit Privileges noch nicht aus & ich habe bei auch nichts gefunden.

Gruß
Seb

Mein Tipp an dich für die Zukunft: MSDN
Bei WinApi-Funktionen und -Themen weiß die fast immer Hilfe.
Also ich hab, als ich das Teil das erste mal benutzt hab au nix von Privileges gewusst, aber dadrin ist das zb beschrieben, wie das geht..
 
Zuletzt bearbeitet:
Zurück