Avatar billede lsn Nybegynder
27. september 2000 - 08:58 Der er 4 kommentarer

Genstarte computeren

Er der nogen der  vil give mig nogle koder til Delphi, hvor man kan lave et program, som
kan genstarte og lukke computeren?

Programmet skal indeholde 2 knapper:
En hvor der skal stå \"Genstart computeren\"
og en anden en, hvor der skal stå \"Lukke computeren\"

Hvis man trykker på \"Genstart computeren\", skal computeren genstarte, og selvfølgelig lukke, når man trykker på \"Luk computeren\"

Kan nogen af jer forklare mig hvordan man laver sådan et program?

Avatar billede tknudsen Nybegynder
27. september 2000 - 09:06 #1
spsm http://www.eksperten.dk/spm/26044 omhandler shutdown og restart at WINDOWS9x. De nævnte funktioner er WindowsAPIer - så hvis det er til LSN OS (eller hvad det nu var det hed) skal du enten selv lave API\'erne (good luck) eller finde en anden måde at gøre det på. Hvis du virklig selv har lavet alt SW INT styringen (undskyld jeg tvivler - mit navn er trods alt thomas:) er det vel bare at kalde det interrupt som lukker/genstarter maskinen
Avatar billede hatecaps Nybegynder
27. september 2000 - 09:40 #2
du kan bruge ExitWindowsEx i følgende format :

ExitWindowsEx(EWX_SHUTDOWN,nil); // for at lukke ned

ExitWindowsEx(EWX_REBOOT,nil); // for at genstarte

hvis du bruger disse i et NT skal brugeren have tilladelse til at udføre disse operationer. Se evt. win32 hjælpen til ExitWindowsEx
Avatar billede borrisholt Novice
27. september 2000 - 14:04 #3
Den nedenstående procedure kan bruges på alle 32 bits versioner af Windows :

function ExitWIndows( iFlags : integer ) : boolean;

  function SetPrivilege( sPrivilegeName : string; bEnabled : boolean ) : boolean;
  var
    TPPrev, TP : TTokenPrivileges;
    Token      : THandle;
    dwRetLen  : DWord;
  begin
    Result := False;
    OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES  or TOKEN_QUERY, Token );
    TP.PrivilegeCount := 1;
    if( LookupPrivilegeValue( Nil, PChar( sPrivilegeName ), TP.Privileges[ 0 ].LUID ) )then
      begin
      if( bEnabled )then
        TP.Privileges[ 0 ].Attributes  :=  SE_PRIVILEGE_ENABLED
      else
        TP.Privileges[ 0 ].Attributes  :=  0;
      dwRetLen := 0;
      Result := AdjustTokenPrivileges( Token, False,TP, SizeOf( TPPrev ), TPPrev, dwRetLen );
    end;
    CloseHandle( Token );
  end;

begin
  Result := True;
  if( SetPrivilege( \'SeShutdownPrivilege\', True ) )then
  begin
    if( not ExitWindowsEx( iFlags, 0 ) )then
    begin
      // handle errors...
      Result := False;
    end;
    SetPrivilege( \'SeShutdownPrivilege\', False )
  end
  else
  begin
    // handle errors...
    Result := False;
  end;
end;

kan fx. kaldes således :

ExitWIndows( EWX_SHUTDOWN ); // for at lukke ned
ExitWIndows( EWX_REBOOT ); // for at genstarte


eksemplet er taget fra http://borrisholt.com

Jens B
Avatar billede borrisholt Novice
27. september 2000 - 14:11 #4
faktisk så kan du downloade et komplet eksemple fra http://borrisholt.com, under WinNT.

Jens B
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