[Delphi] Source Utils GetPCDir

Iniciado por d(-_-)b, 8 Octubre 2010, 20:35 PM

0 Miembros y 2 Visitantes están viendo este tema.

d(-_-)b



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 (delphi) [Seleccionar]
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 = 'elhacker.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...
Max 400; caracteres restantes: 366

Khronos14

Buen aporte VillanoSam, tal vez te interese la función de la API de Windows SHGetFolderPath, con ella puedes obtener muchas más carpetas especiales del sistema.

Saludos.

d(-_-)b

#2
Cita de: Khronos14 en  8 Octubre 2010, 21:20 PM
Buen aporte VillanoSam, tal vez te interese la función de la API de Windows SHGetFolderPath, con ella puedes obtener muchas más carpetas especiales del sistema.

Saludos.

Si gracias, de echo hace mucho que este code esta escrito, solo la captura es nueva.

------------------

por cierto VillanoSam y Dominicano son los mismo.

por ejemplo.
http://foro.elhacker.net/programacion_general/manuales_y_libros_de_delphi-t212733.0.html

saludos...
Max 400; caracteres restantes: 366