Wyłączenie, restart XP z poziomu buttona

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Wyłączenie, restart XP z poziomu buttona

Nowy postprzez PeTeKa » czwartek, 27 maja 2010, 17:17

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ć.
"Nie kochaj rzeczy, które z tego świata są i w nim są
Nie patrzaj w blask, który świeci, bo świeci odbiciem tylko"
Avatar użytkownika
PeTeKa
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): czwartek, 27 maja 2010, 17:06
PodziÄ™kowaÅ‚ : 2
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Microsoft Windows 7 x64
Kompilator: C++ Builder 2010
Gadu Gadu: 0
    Windows XPFirefox

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

Nowy postprzez dzejo » czwartek, 27 maja 2010, 18:43

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);
Avatar użytkownika
dzejo
Bladawiec
Bladawiec
 
Posty: 8
Dołączył(a): sobota, 11 października 2008, 13:36
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 1
    Windows XPOpera

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

Nowy postprzez Cyfrowy Baron » czwartek, 27 maja 2010, 19:11

► 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.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron