unit ms;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
Type TMEMORYSTATUS=Record
dwLength : LongInt;
dwMemoryLoad : LongInt; //Kullanılan hafıza oranı %
dwTotalPhys : LongInt; //Fiziksel hafıza (Byte)
dwAvailPhys : LongInt; //Boş hafıza alanı (Byte)
dwTotalPageFile : LongInt; //Toplam sayfa
dwAvailPageFile : LongInt; //Kullanılabilir Sayfa
dwTotalVirtual : LongInt;
dwAvailVirtual : LongInt;
End;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
API kullanımı için gereken veri yapısı tamamlandıktan sonra Fonksiyonun Delphi tarafından ulaşılabilir hale getirilmesi gereklidir. Bunun için Unit'in Interface bölümünde yeni bir fonksiyon tanımlanmalı, giriş ve çıkış parametreleri API fonksiyonu ile aynı veri tip ve yapısında olacak şekilde belirtilmelidir. Bu tanımlama içerisinde kullanılacak API'nin orijinal adı ve mensubu olduğu kütüphane de (DLL) belirtilir.
Function ():;stdcall; external ' '
name '';
Kütüphanenin sistem içerisinde tanımlanmış bir dizin içerisinde olması gereklidir. Yukarıdaki yapı sadece API kullanımı için değil, Herhangi bir kütüphaneden bir fonksiyon kulanılacağı zaman da kullanılacak bir yapıdır. Şayet kütüphanemiz global bir dizinde değilse < Kütüphane adı >tanımlama esnasında dizin adı ile birlikte yazılmalıdır.
Function GlobalMemoryStatus(var lpmstMemStat : TMEMORYSTATUS):integer;stdcall; external 'kernel32.dll' name 'GlobalMemoryStatus';
var
Form1: TForm1;
tms:Tmemorystatus;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
globalMemoryStatus(Tms);
showmessage(inttostr(Tms.dwAvailPhys));
end;
end.