Imagen


Bueno aqui les dejo unas mini funciones que nos permite obtener el direcorio de windows, archivos de programas, system, etc.. sin importar en que unidad esta instalado el sistema operativo, estas funciones resultan muy utiles ya que si queremos copiar un archivo u otra cosa en tales directorio se copiara sin problemas, sin importar que el directorio raiz sea C, D, o lo que sea.

Código: Seleccionar todo

program GetPCInfo;

{$APPTYPE CONSOLE}

uses
  SysUtils, Windows, Registry, ShellApi;

Type 
 //Directorios y nombres
 WinSysTemp = (WindowsDir, SystemDir, TempDir);
 ComputerUser = (GComputerName, GUserName);

 Const
 //Nombres, tonterias pero util, LOL XD
 U = 'User name: ';
 C = 'Computer name: ';
 W = 'Windows: ';
 S = 'System: ';
 T = 'Temp folder: ';
 P = 'Program files: ';
 DT = 'System date time: ';
 SYSLANG = 'System language: ';
 TEXT = 'indetectables.net by Dominicano. (-_-) XD';
 LINE = '-----------------------------------------';

 //Windows, system y carpeta temporal (Temp)
function GetDirectory(DirWST: WinSysTemp): String;
var
 Path: Array[0..MAX_PATH] of Char;
 SizePath: Cardinal;
 begin
 SizePath := sizeof(Path);
  Case DirWST of
   WindowsDir: GetWindowsDirectory(Path, SizePath);
   SystemDir: GetSystemDirectory(Path, SizePath);
   TempDir: GetTempPath(MAX_PATH, Path);
   end;
  Result := (Path);
 end;

//Archivos de programa 
//Si queremos obtener Archivos comunes, Usar CommonFilesDir
function GetProgramFilesDir: String;
var
 Regedit: TRegistry;
 begin
  Regedit := TRegistry.Create;
   try
     RootKey := HKEY_LOCAL_MACHINE;
     Regedit.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion', false);
     Result := Regedit.ReadString('ProgramFilesDir');
   Regedit.CloseKey;
   finally
  Regedit.Free;
 end;
end;

//Idioma del systema
function GetUserLanguage: String;
var
 Language: Array[0..150] of Char;
 ID: LangID;
 LangSize: Cardinal;
 begin
  LangSize := SizeOf(Language);
  ID := GetUserDefaultLangID;
  VerLanguageName(ID, Language, LangSize);
  Result := (Language);
end;

//Computadora y usuario
function GetComputerUserName(CUN: ComputerUser): String;
var
 csName: Array[0..230] of Char;
 csSize: Cardinal;
 begin
  csSize := Sizeof(csName);
  Case CUN of
   GUserName: GetUserName(csName, csSize);
   GComputerName: GetComputerName(csName, csSize);
   end;
  Result := (csName);
 end;

//Fecha y hora del sistema
function SystemDateTime: String;
var
 SysDateTime: TSystemTime;
 begin
  GetLocalTime(SysDateTime);
  Result := DateTimeToStr(SystemTimeToDateTime(SysDateTime));
 end;

//Mostramos resultados en pantalla
begin
 Writeln(LINE + #10 + TEXT + #10 + LINE + #10);

 Writeln(U + GetComputerUserName(GUserName));
 Writeln(C + GetComputerUserName(GComputerName )+ #10);

 Writeln(W + GetDirectory(WindowsDir));
 Writeln(S + GetDirectory(SystemDir));
 Writeln(T + GetDirectory(TempDir));
 Writeln(P + GetProgramFilesDir + #10);

 Writeln(DT+SystemDateTime);
 Writeln(SYSLANG+GetUserLanguage);

 Readln;
end.
saludos...
Developer.
Buen trabajo .

Para acortar el código puedes quitar todas las APIs que usaste para obtener la ruta de las carpetas y sustituirlas por el API GetEnvironmentVariable para poder obtener las rutas usando variables de entorno...

Una ejemplo del api seria:

Código: Seleccionar todo

function Rutas(Path: PAnsiChar): string;

begin

  SetLength(Result, 255);
  SetLength(Result, GetEnvironmentVariable(Path, PChar(Result), Length(Result)));

end;
y Si digamos quisiéramos obtener la ruta del directorio de windows podríamos colocar Rutas('WinDir') y nos devolvería la ruta completa del directorio de windows. Incluso lo puedes utilizar también para obtener el nombre del PC y el nombre de usuario usando COMPUTERNAME y USERNAME.


Bendiciones¡! viva cristo.
¿Si usted muriera hoy esta seguro que iría al cielo?
http://www.antesdelfin.com/salvo.html

© Indetectables Team
Para acortar el código puedes quitar todas las APIs que usaste para obtener la ruta de las carpetas y sustituirlas por el API GetEnvironmentVariable para poder obtener las rutas usando variables de entorno...
Exelente, muy bueno, Gracias...

saludos...
Developer.
Responder

Volver a “Fuentes”