PascalProgramlama

Delphi Programlama Dili – İşlemci ve Sistem Temelli Bazı Fonksiyonlar

Bu bölümde bilgisayara ait işlemci, bios, bellek, network bilgileri nasıl alınır onları göstereceğiz. Aşağıdaki Delphi fonksiyonları kopyala-yapıştır yaparak kendi kodlarınız içinde kullanabilirsiniz.

[fac_icon icon=”file-code-o”] Çalışan bilgisayarın işlemci adını getiren fonksiyon

Kullanılan unit’ler : Windows, Registry
function IslemciAdi: string;
var
  Reg: Registry.TRegistry;
begin
  Result := '';
  Reg := Registry.TRegistry.Create(Windows.KEY_READ);
  try
    Reg.RootKey := Windows.HKEY_LOCAL_MACHINE;
    if not Reg.OpenKey('HARDWARE\DESCRIPTION\System\CentralProcessor\0\', False) then Exit;
    Result := Reg.ReadString('ProcessorNameString');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;

Daha detay bilgilere ihtiyacınız varsa buradaki makalemize göz atınız.

[fac_icon icon=”file-code-o”] Çalışan bilgisayarın işlemci tanımını (identifier) getiren fonksiyon

Kullanılan unit’ler : Windows, Registry
function IslemciTanimi: string;
var
  Reg: Registry.TRegistry;
begin
  Result := '';
  Reg := Registry.TRegistry.Create(Windows.KEY_READ);
  try
    Reg.RootKey := Windows.HKEY_LOCAL_MACHINE;
    if not Reg.OpenKey(
      'HARDWARE\DESCRIPTION\System\CentralProcessor\0\', False
    ) then
      Exit;
    Result := Reg.ReadString('Identifier');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;

[fac_icon icon=”file-code-o”] Çalışan bilgisayarın MAC adresini getiren fonksiyon

Kullanılan unit’ler : SysUtils, Windows, Nb30
function MacAdres: string;
type
  TAStat = packed record
    Adapt: Nb30.TAdapterStatus;
    NameBuff: array[0..29] of Nb30.TNameBuffer;
  end;
var
  Adapter: TAStat;              // Network adaptörle ilgili bilgi
  AdapterList: Nb30.TLanaEnum;  // Kaç tane network adaptörü var
  Ncb: Nb30.TNCB;               // network control block
  I: Integer;                   // Network adaptörlerini sırasıyla taramak için döngü değişkeni
  // ---------------------------------------------------------------------------
  function NetBiosSucceeded(const RetCode: AnsiChar): Boolean;
  begin
    Result := Windows.UCHAR(RetCode) = Nb30.NRC_GOODRET;
  end;
  // ---------------------------------------------------------------------------
begin
  Result := '';
  // Network adaptör listesini alalım
  FillChar(Ncb, SizeOf(Ncb), 0);
  Ncb.ncb_command := AnsiChar(Nb30.NCBENUM);
  Ncb.ncb_buffer := PAnsiChar(@AdapterList);
  Ncb.ncb_length := SizeOf(AdapterList);
  if not NetBiosSucceeded(Nb30.Netbios(@Ncb)) then
    Exit;
  // Adaptörlerin durumuna bakalım
  for I := 0 to Pred(Integer(AdapterList.length)) do
  begin
    // Adaptörü resetleyelim
    FillChar(Ncb, SizeOf(Ncb), 0);
    Ncb.ncb_command := AnsiChar(Nb30.NCBRESET);
    Ncb.ncb_lana_num := AdapterList.lana[I];
    if not NetBiosSucceeded(Nb30.Netbios(@Ncb)) then
      Exit;
    // Durumunu alalım
    FillChar(Ncb, SizeOf(Ncb), 0);
    Ncb.ncb_command := AnsiChar(Nb30.NCBASTAT);
    Ncb.ncb_lana_num := AdapterList.lana[I];
    Ncb.ncb_callname := '*               ';
    Ncb.ncb_buffer := PAnsiChar(@Adapter);
    Ncb.ncb_length := SizeOf(Adapter);
    if NetBiosSucceeded(Nb30.Netbios(@Ncb)) then
    begin
      with Adapter.Adapt do
        Result := SysUtils.Format(
          '%.2x-%.2x-%.2x-%.2x-%.2x-%.2x',
          [
            Ord(adapter_address[0]),
            Ord(adapter_address[1]),
            Ord(adapter_address[2]),
            Ord(adapter_address[3]),
            Ord(adapter_address[4]),
            Ord(adapter_address[5])
          ]
        );
      Exit;
    end;
  end;
end;

[fac_icon icon=”file-code-o”] Çalışan bilgisayarın IP adresini getiren fonksiyon

Kullanılan unit’ler : SysUtils, Windows, WinSock
function IPAdresim: string;
var
  WSData: WinSock.TWSAData;             
  HostName: array [0..14] of AnsiChar;  // bilgisayarın standard adı (hostname)
  HostEnt: WinSock.PHostEnt;            // Host adı ile ilgili bilgi
  Addr: PAnsiChar;                     
begin
  Result := '0.0.0.0';
  if WinSock.WSAStartup(Windows.MakeWord(1, 1), WSData) <> 0 then
    Exit;
  try
    WinSock.GetHostName(HostName, SizeOf(HostName));
    HostEnt := WinSock.GetHostByName(HostName);
    if Assigned(HostEnt) and Assigned(HostEnt^.h_addr_list) then
    begin
      Addr := HostEnt^.h_addr_list^;
      if Assigned(Addr) and (HostEnt^.h_length >= 4) then
      begin
        Result := SysUtils.Format(
          '%d.%d.%d.%d',
          [Ord(Addr[0]), Ord(Addr[1]), Ord(Addr[2]), Ord(Addr[3])]
        );
      end;
    end;
  finally
    WSACleanup;
  end;
end;

[fac_icon icon=”file-code-o”] Çalışan bilgisayarın Bios üreticisi kim?

Kullanılan unit’ler : Windows, Registry
function BiosUreticisi: string;
var
  Reg: Registry.TRegistry;
begin
  Result := '';
  Reg := Registry.TRegistry.Create(Windows.KEY_READ);
  try
    Reg.RootKey := Windows.HKEY_LOCAL_MACHINE;
    if not Reg.OpenKey('HARDWARE\DESCRIPTION\System\Bios\', False) then
      Exit;
    Result := Reg.ReadString('BIOSVendor');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;

[fac_icon icon=”file-code-o”] Çalışan bilgisayarın toplam fiziksel bellek boyutu

Kullanılan unit’ler : Windows
function ToplamFizikselBellekBoyutu: Int64;
var
  MemoryEx: Windows.TMemoryStatusEx;
begin
  begin
    MemoryEx.dwLength := SizeOf(TMemoryStatusEx);
    Windows.GlobalMemoryStatusEx(MemoryEx);
    Result := MemoryEx.ullTotalPhys;
  end;
end;

[fac_icon icon=”file-code-o”] Çalışan bilgisayarın boşta kalan fiziksel bellek boyutu

Kullanılan unit’ler : Windows
function BostaFizikselBellekBoyutu: Int64;
var
  MemoryEx: Windows.TMemoryStatusEx;
begin
  begin
    MemoryEx.dwLength := SizeOf(Windows.TMemoryStatusEx);
    Windows.GlobalMemoryStatusEx(MemoryEx);
    Result := MemoryEx.ullAvailPhys;
  end;
end;

[fac_icon icon=”file-code-o”] Çalışan bilgisayarın kullanılan fiziksel bellek yüzdesi

Kullanılan unit’ler : Windows
function BostaFizikselBellekBoyutuYuzde: Byte;
var
  MemoryEx: Windows.TMemoryStatusEx;
begin
  begin
    MemoryEx.dwLength := SizeOf(Windows.TMemoryStatusEx);
    Windows.GlobalMemoryStatusEx(MemoryEx);
    Result := Byte(MemoryEx.dwMemoryLoad);
  end;
end;

 

Daha Fazla Göster

İlgili Makaleler

Başa dön tuşu
Kapalı

Reklam Engelleyici Algılandı

Lütfen Add Blocker uygulamanızı bu site için devre dışı bırakın. Rahatsız edici bir reklam uygulamamız yoktur. Please turn the Add Blocker off as you may see there is no annoying ads in the blog.