Strona 1 z 1

Wyłączenie, restart XP z poziomu buttona

Nowy postNapisane: czwartek, 27 maja 2010, 17:17
przez PeTeKa
Witam,

mam Buildera 2007, chciałem sobie stworzyć prostą aplikację która po kliknięciu na Button wyłączy komputer.

Próbowałem w ten sposób:

Kod: Zaznacz cały
//---------------------------------------------------------------------------

#include <vcl.h>
#include <windows.h>
#pragma hdrstop

#include "Project1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponentOwner)
    : 
TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm4::BitBtn1Click(TObject *Sender)
{
ExitWindowsEx(EWX_LOGOFF,0);
}
//---------------------------------------------------------------------------
void __fastcall TForm4::BitBtn2Click(TObject *Sender)
{
ExitWindows(EWX_POWEROFF,1);
}
//---------------------------------------------------------------------------


void __fastcall TForm4::Button2Click(TObject *Sender)
{
Application->Terminate();    


Niestety na chwilę obecną działa tylko przycisk odpowiadający za wylogowanie. Czytałem, że w XPku potrzebny jest specjalny przywilej. Niestety nie wiem jak sobie z tym poradzić.

Re: Wyłączenie, restart XP z poziomu buttona

Nowy postNapisane: czwartek, 27 maja 2010, 18:43
przez dzejo
Spróbuj tego :
Kod: Zaznacz cały
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);

ExitWindowsEx(/*EWX_FORCE | EWX_POWEROFF*/EWX_SHUTDOWN | EWX_LOGOFF, 0);

Re: Wyłączenie, restart XP z poziomu buttona

Nowy postNapisane: czwartek, 27 maja 2010, 19:11
przez Cyfrowy Baron
► patrz serwis: Cyfrowy Baron

dział: porady -> API -> Zamykanie, logowanie i restartowanie systemu.
dział: porady -> API -> Zamykanie Windows z wyłączeniem zasilania za pomocą funkcji ExitWindowsEx.
dział: porady -> API -> Zamykanie z wyłączeniem zasilania systemu Windows XP.