Gå til innhold

Skru av/starte maskinen på nytt


Anbefalte innlegg

Heisann!

I min forrige post "10 Delphi spørsmål" spurte jeg om det samme.

Der fikk jeg et svar, men det var ikke så lett for en stakkars noob som meg å forstå... ;)

Kan noen poste en hel kode, både for å skru av og å starte maskinen på nytt?

 

Takk! :)

 

EDIT: Waow, 500 posts!! :D

Endret av @kd
Lenke til kommentar
Videoannonse
Annonse

Denne lille forklaringen er å finne på http://www.torry.net/ sammen med haugevis av andre saker, ta en titt der når du lurer på noe, og du vil finne vanvittig mange tips/trix og komponenter som gjør akkurat det du ønsker (og noen ganger kansje litt til..)

 

[ot]

Torrys har litt problemer for tiden, og blir ikke lenger oppdatert som før, men for tiden ligger alle komponenter og saker enda tilgjengelig på serveren, og jeg _tror_ at det enda er mulig å bestille DVD med alt på, men er ikke sikker, en av gutta bak torrys har hatt en ulykke, som i følge en russisk delphi-kompis av meg antageligvis ikke var en ulykke allikevel, men mere en hevnaksjon fra det som vi kjenner som russisk mafia.. jeg er fanmeg glad jeg bor i norge!

[/ot]

Lenke til kommentar

Vell, jeg titta på den siden til jeg ble helt grønn.

Kunne ikke se noe om det emnet der, bare dyre programmer med absolutt ingen jordnær funksjon... :p

 

Er det noen som kan poste en kode her? please? :S

 

EDIT: Endre noen av de vanlige skriveleifene... :p

Endret av @kd
Lenke til kommentar
  • 4 uker senere...

Et par løsninger du kan teste...

 

For ME/98/95:

function ShutDownWindows: Boolean;
begin
 Result := ExitWindowsEx(EWX_SHUTDOWN, 0);
end;

 

Følgende flagg kan benyttes:

EWX_FORCE - Windows sender ikke WM_QUERYENDSESSION eller

WM_ENDSESSION meldinger til applikasjonene som kjører. Dette kan forårsake at du mister data så lagre prosjektet ditt før du tester.

EWX_FORCEIFHUNG - Litt mildere versjon av EWX_FORCE (se SDK)

EWX_LOGOFF - Logger av brukeren.

EWX_POWEROFF - Skrur maskinen helt av.

EWX_REBOOT - Restarter maskinen.

EWX_SHUTDOWN - Skrur av maskinen slik at du kan skru av strømmen selv.

 

Funksjonen krever videre at prosessen som utfører dette har SE_SHUTDOWN_NAME privilegiet (gjelder NT platform (NT,2K, XP, 2K3)) for å

kunne kjøre med noen av flaggene. SE SDK reference for utfyllende informasjon.

Windows SDK - ExitWindowsEx function

 

Løsning for NT platform (NT4, 2K, XP, 2K3):

Funksjonen tar samme flagg som ExitWindowsEx funksjonen.

function ShutDownWindowsNT(const fwFlags: Word): Boolean;
const
 ANYSIZE_ARRAY    = 1;
 SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
var
 hToken  : THandle;
 ptkp    : PTokenPrivileges;
 ptkpold : PTokenPrivileges;
 r       : DWORD;
begin
 if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
   GetMem(ptkp, SizeOf(TTOKENPRIVILEGES) + (1 - ANYSIZE_ARRAY) * SizeOf(TLUIDANDATTRIBUTES));

   LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, ptkp^.Privileges[0].Luid);

   ptkp^.PrivilegeCount := 1;
   ptkp^.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
   r := 0;
   ptkpold := nil;

   if AdjustTokenPrivileges(hToken, False, ptkp^, 0, ptkpold^, r) then
     ExitWindowsEx(fwFlags, 0);
 end;
 Result := GetLastError = ERROR_SUCCESS;
end;

 

Håper du fikk svar på det du lurte på.

 

-Kidder-

Endret av Kidder
Lenke til kommentar
  • 4 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...