Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Reiniciar, cambiar de usuario, apagar cualquier Windows

No me peregunten que significa eso de privilegios, cambiar privilegios, y esas cosas, yo solo necesitaba un programa que me apagase el ordenador usando una unidad a control remoto; traduje un codigo visual basic que me pasaron y bueno a mi me funciona, actualmente tengo XP Profesional.

Código Delphi [-]
function GetCurrentProcess:THandle; stdcall; external 'kernel32.dll';

function OpenProcessToken(ProcessHandle:THandle;DesiredAccess:DWord;
  TokenHandle:PHandle):bool; stdcall;external 'advapi32.dll';

procedure EnableShutDown();
var
   hProc   : THandle;
   hToken  : THandle;
   mLUID   : int64;
   mPriv   : TOKEN_PRIVILEGES;
   mNewPriv: TOKEN_PRIVILEGES;
   mVar    : DWord;
begin
    hProc := GetCurrentProcess;
    OpenProcessToken(hProc,TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY,@hToken);
    LookupPrivilegeValue(Pchar(''),Pchar('SeShutdownPrivilege'), mLUID);
    mPriv.PrivilegeCount := 1;
    mPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    mPriv.Privileges[0].Luid := mLUID;
    mVar := 4 + (12 * mNewPriv.PrivilegeCount);
    AdjustTokenPrivileges(hToken, False, mPriv, 4 + 12 * mPriv.PrivilegeCount, mNewPriv,mVar)
end;

function IsWinNT():Boolean;
var
   myOS:OSVERSIONINFO;
begin
    myOS.dwOSVersionInfoSize:=sizeof(myOS);
    GetVersionEx(myOS);
    IsWinNT:=(myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
end;

procedure ShutDownNT(Force:Boolean);
var
   Flags  : Longint;
begin
    Flags := EWX_SHUTDOWN;
    If Force Then Flags := Flags + EWX_FORCE;
    If IsWinNT Then EnableShutDown;
    ExitWindowsEx(Flags, 0)
end;

procedure RebootNT(Force:Boolean);
var
   Flags  : Longint;
begin
    Flags := EWX_REBOOT;
    If Force Then Flags := Flags + EWX_FORCE;
    If IsWinNT Then EnableShutDown;
    ExitWindowsEx(Flags, 0)
end;

procedure LogOffNT(Force:Boolean);
var
   Flags  : Longint;
begin
    Flags := EWX_LOGOFF;
    If Force Then Flags := Flags + EWX_FORCE;
    If IsWinNT Then EnableShutDown;
    ExitWindowsEx(Flags, 0)
end;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:05:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi