Avatar billede eklander Nybegynder
10. juli 2003 - 20:31 Der er 5 kommentarer og
1 løsning

Nedlukning af computer i c++

Findes der nogle indbyggede funktioner i c++ der kan bruges til at slukke en computer???
Avatar billede squashguy Nybegynder
10. juli 2003 - 20:45 #1
prøv og kig lidt på ExitWindowsEx()
Avatar billede arne_v Ekspert
10. juli 2003 - 21:07 #2
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/exitwindowsex.asp

#include <windows.h>
...
ExitWindowsEx( EWX_SHUTDOWN + EWX_FORCE, 0 );
Avatar billede segmose Nybegynder
11. juli 2003 - 09:10 #3
Hvilket OS?
Avatar billede driis Nybegynder
11. juli 2003 - 11:05 #4
Det er korrekt at ExitWindowsEx skal bruges for at lukke Windows ned, men på NT4 / 2000 / XP fungerer det kun hvis processen har rettigheder til nedlukningen. ( Fra MSDN : "To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege.")
Avatar billede driis Nybegynder
11. juli 2003 - 11:44 #5
Flg. virker på alle Windows versioner.

#include <windows.h>

.....

bool ShutDownSystem(long flag)
{
    OSVERSIONINFO        vi ;
    LUID                luid ;
    HANDLE                hProcess, hToken ;
    long                ret = -1 ;
    DWORD                s ;
    TOKEN_PRIVILEGES    tp, tpOld ;

    vi.dwOSVersionInfoSize = sizeof(vi) ;
    GetVersionEx(&vi) ;
    if ( vi.dwPlatformId == VER_PLATFORM_WIN32_NT )
    {
        // Der køres NT, og vi skal have lavet rettigheder til at lukke systemet ned
        if ( LookupPrivilegeValue(0,SE_SHUTDOWN_NAME,&luid) )
        {
            hProcess = GetCurrentProcess()  ;
            if ( hProcess )
            {
                if ( OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) )
                {
                    tp.PrivilegeCount = 1 ;
                    tp.Privileges->Attributes = SE_PRIVILEGE_ENABLED ;
                    tp.Privileges->Luid.HighPart = luid.HighPart ;
                    tp.Privileges->Luid.LowPart = luid.LowPart  ;
                    ret = AdjustTokenPrivileges(hToken, FALSE,&tp,sizeof(tp),&tpOld,&s) ;
                }
                CloseHandle(hToken) ;
            }
        }
    }
   
    if ( ExitWindowsEx(flag,0) )
        return true ;
    else
        return false ;   
}
Avatar billede driis Nybegynder
11. juli 2003 - 11:47 #6
ShutDownSystem kaldes så med en af følgende konstanter defineret i winuser.h (eller en kombination af disse):

#define EWX_LOGOFF          0
#define EWX_SHUTDOWN        0x00000001
#define EWX_REBOOT          0x00000002
#define EWX_FORCE          0x00000004
#define EWX_POWEROFF        0x00000008
#if(_WIN32_WINNT >= 0x0500)
#define EWX_FORCEIFHUNG    0x00000010
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester