Windows API Kullanımı: Temel Bilgiler ve Uygulamalar
Windows API, Windows işletim sistemi üzerinde yazılım geliştirmek için kullanılan bir dizi fonksiyon ve veri yapısını içerir. Bu makalede, Windows API'nin temel kullanımlarını ve örnek uygulamalarını inceleyeceğiz.
1. Windows Dizinini Öğrenme
Windows dizinini belirlemek için GetWindowsDirectory
API'si kullanılır. Bu, uygulamanızın Windows dizininde dosyalarla çalışmasını sağlamak için önemlidir.
Örnek:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TCHAR d[MAX_PATH];
GetWindowsDirectory(d, MAX_PATH);
ShowMessage(String(d));
}
Açıklama: GetWindowsDirectory
fonksiyonu, belirtilen d
değişkenine Windows dizinini atar. MAX_PATH
sabiti, dizin adı için gerekli maksimum uzunluğu belirler.
2. Bellek Durumunu Öğrenme
Bellek durumu hakkında bilgi almak için GlobalMemoryStatus
API'si kullanılır. Bu fonksiyon, sistemin fiziksel bellek kullanımı hakkında önemli veriler sağlar.
Bellek Durumunu Öğrenmek için MEMORYSTATUS Yapısı:
typedef struct _MEMORYSTATUS {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORD dwTotalPhys;
DWORD dwAvailPhys;
DWORD dwTotalPageFile;
DWORD dwAvailPageFile;
DWORD dwTotalVirtual;
DWORD dwAvailVirtual;
} MEMORYSTATUS, *LPMEMORYSTATUS;
Örnek:
void _fastcall TForm1::Timer1Timer(TObject *Sender)
{
MEMORYSTATUS m;
GlobalMemoryStatus(&m);
Label1->Caption = "Bellek kullanımı %" + IntToStr(m.dwMemoryLoad);
Label2->Caption = "Toplam RAM: " + FloatToStr(m.dwTotalPhys / 1024.0 / 1024.0) + " MB";
Label3->Caption = "Boş RAM: " + FloatToStr(m.dwAvailPhys / 1024.0 / 1024.0) + " MB";
}
Açıklama: Bu kod parçası, her zaman bellek durumunu güncelleyerek kullanıcı arayüzünde gösterir.
3. İşlemci Bilgisi Alma
Sistem hakkında bilgi almak için GetSystemInfo
API'si kullanılır. Bu, bilgisayarınızdaki işlemci ile ilgili bilgileri sağlar.
Örnek:
void _fastcall TForm1::FormCreate(TObject *Sender)
{
SYSTEM_INFO s;
GetSystemInfo(&s);
Caption = IntToStr(s.dwNumberOfProcessors) + " işlemci, tip: " + IntToStr(s.dwProcessorType);
}
Açıklama: Bu kod, sistemdeki işlemci sayısını ve türünü gösterir.
4. Windows Versiyonunu Alma
Windows versiyonunu ve ortamını öğrenmek için GetVersion
API'si kullanılır. Bu fonksiyon, sistemin sürümü hakkında bilgi sağlar.
Örnek:
DWORD GetVersion(void);
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD s = GetVersion();
unsigned maj = LOBYTE(LOWORD(s));
unsigned min = HIBYTE(LOWORD(s));
Label1->Caption = (s < 0x80000000) ? "Windows NT" : (maj < 4) ? "Win32s" : "Windows 95";
}
Açıklama: Bu kod, Windows sürümünü tespit eder ve kullanıcıya gösterir.
5. Windows'u Kapatma
Windows'u kapatmak veya bilgisayarı yeniden başlatmak için ExitWindowsEx
API'si kullanılır.
Örnek:
void _fastcall TForm1::Button1Click(TObject *Sender)
{
if (Application->MessageBox("Windows yeniden başlatılacak. Onaylıyor musunuz?", "ReStart", MB_YESNO) == IDYES)
ExitWindowsEx(EWX_SHUTDOWN, 0);
}
Açıklama: Bu fonksiyon, kullanıcıdan onay alarak Windows'u kapatır.
6. Formlara Şekil Verme
Formlarınız klasik dikdörtgen biçiminde olmayabilir; üçgen, elips veya başka şekillerde de oluşturabilirsiniz.
Üçgen Form Örneği:
void __fastcall TForm1::FormClick(TObject *Sender)
{
HRGN MyRgn;
TPoint P[3] = { {0, 0}, {Width, 0}, {(int)Width / 2, Height} };
MyRgn = CreatePolygonRgn(P, 3, WINDING);
SetWindowRgn(Handle, MyRgn, true);
}
Elips Form Örneği:
void __fastcall TForm1::FormDblClick(TObject *Sender)
{
HRGN sekilHandle;
sekilHandle = CreateEllipticRgn(0, 0, Width, Height);
SetWindowRgn(Handle, sekilHandle, true);
}
Kumbet Form Örneği:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
HRGN SekilHandle;
TPoint p[9] = {
{100, 100}, {350, 0}, {350, 0}, {550, 100},
{550, 200}, {350, 300}, {250, 300}, {100, 200},
{100, 100}
};
SekilHandle = CreatePolygonRgn(p, 9, 0);
SetWindowRgn(Handle, SekilHandle, true);
}
W Form Örneği:
void __fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
HRGN alan;
TPoint noktalar[10] = {
{0, 0}, {50, 0}, {180, 200}, {218, 100},
{256, 200}, {385, 0}, {435, 0}, {256, 300},
{218, 200}, {180, 300}
};
alan = CreatePolygonRgn(noktalar, 10, ALTERNATE);
SetWindowRgn(Handle, alan, true);
}
7. Kontrolleri Taşıma
Kullanıcının kontrolleri ekranda istediği noktalara taşıyabilmesi için Perform
metodu kullanılabilir.
Örnek:
void __fastcall TForm1::Button1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
ReleaseCapture();
Button1->Perform(WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}
8. Program Çalıştırma
Bir uygulamayı çalıştırmak için WinExec
API'si kullanılabilir.
Örnek:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WinExec("c:\\Windows\\calc.exe", SW_SHOW);
}
9. ShellExecute Kullanımı
Farklı dosya türlerini çalıştırmak için ShellExecute
API'si kullanılır.
Örnek:
void _fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(0, "open", "e:\\zpx.bmp", "", NULL, SW_SHOW);
}
10. Görev Çubuğundan Gizleme
Bir uygulamayı görev çubuğundan gizlemek için SetWindowLong
API'sini kullanabilirsiniz.
Örnek:
void _fastcall TForm1::FormCreate(TObject *Sender)
{
SetWindowLong(Application->Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
}
11. CD-Kapağını Açıp Kapatma
CD-ROM kapağını açıp kapatmak için mciSendString
API'si kullanılabilir.
Örnek:
mciSendString("set cdaudio door open", NULL, 0, 0);
Tepkiniz nedir

Beğendim

Beğenmedim

Muhteşem

Eğlendim

Sinirlendim

Üzüldüm

Vay