Ver Mensaje Individual
  #5  
Antiguo 04-04-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Mis dos céntimos, como suele decirse:

Código Delphi [-]
function IsUserAnAdmin(): boolean;
var
  hShell32: HMODULE;
  _IsUserAnAdmin: function(): bool; stdcall;
begin
  result := false;
  hShell32 := LoadLibrary('shell32.dll');
  if (hShell32 <> 0) then
  begin
    try
      _IsUserAnAdmin := GetProcAddress(hShell32, 'IsUserAnAdmin');
      if Assigned(_IsUserAnAdmin) then result := _IsUserAnAdmin();
    finally
      FreeLibrary(hShell32);
    end;
  end;
end;

La idea principal es que la función retorne "false" en lugar de "true" si no consigue cargar la librería o al cabo no consigue obtener un puntero a la función que nos interesa de la librería. También, como puede verse, liberamos en la propia función la librería que previamente cargamos. Y, como también puede verse, todo queda reducido a una función, sin necesidad de variables globales.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-04-2007 a las 23:52:49.
Responder Con Cita