Win32 API'leri nedir? [Rehber]

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Seçkin Üye
Katılım
22 Kas 2020
Mesajlar
315
Çözümler
1
Tepki puanı
95
Ödüller
3
5 HİZMET YILI
Selamlar, bu gün Native Win32 API'leri hakkında bilgi vereceğim. Bu konu diğer tüm .NET konularından daha fazla ilginizi çekecek. Bu konu sadece C#, VB gibi dilleri değil tüm .NET ailesi için geçerlidir.
Bir çok .NET ile yazılmış hilelerde olsun, donanım erişimlerinde olsun, yüksek izin gerektiren işler için bu API'ler çok önemlidir. Çünkü .net makine diline çok yakın bir dil değildir. Assembly, C++, C gibi diller ile C#-VB.net dilleri aynı değildir.

Nedir bu Win32 API'si?
Native Win32 API'ler, Windows da birleşik olarak bulunan API'lerdir. .NET ailesinde yerleşik olarak bulunmayan Windows ile alakalı fonksiyonları kullanmamızı sağlayan ise InteropServices adında bir classdır. Yani tüm Windows fonksiyonları aslında özel olarak yazılmış API'ler ile yapılır.

Nerden geliyor bu API?
Bu API fonksiyonları harici bir kaynaktan (DLL'den) alınır. Bu API'ler C++ ve C gibi makine diline çok yaklaşmış dillerde yazılmıştır, ve bu dillerde zaten bulunur. W32 API'leri tümleşik olarak .Net ailesinde yoktur. (Aslında saydığım diller harici hiç bir dilde yoktur. Harici olarak kullanılması gerekir.) Interopservices sayesinde bu dillerde bulunan apileri .net ailesinde de kullanabiliyoruz.

Neden C++, C gibi dillere özel?
Bu fonksiyonlar neden .net ailesinde yok? çünkü .net dilleri (C#, VB, F#) managed olarak yazılmıştır. Bu diller yazılırken güvenli olması amacıyla yazılmıştır örnek verecek olursak .NET'de bulunan GC (garbage collector) otomatik olarak bellek yönetimi yapar. Yani .net ailesi güvenliği amaçlamış dillerdir, C++, C, ASM gibi diller de bazı fonksiyonlar tehlikeli olabilir. İşte bu yüzden C, C++ fonksiyonlarının bazıları .NET'de yoktur.


.NET ailesinde de, System.Runtime.InteropServices sınıfı ile bu API'leri aktarıp .net ailesinde de kullanabiliriz.

Not: Sadece C# bilgim olduğundan aşağıda yazıcağım kodlar csharp içindir. Diğer .net dilleri için de syntaxlar benzerdir.

C#:
[DllImport("User32.dll")]
    public static extern int SetForegroundWindow(IntPtr ptr);

Örneğin yukarda User32 APIsinin SetForegroundWindow API'sini kullanıyoruz. Bu Dll'leri kafanıza göre yazamazsınız, ama bunun için tüm Windows dll'lerini içeren depoya bakabilirsiniz.
Bağlantıları görmek için lütfen Giriş Yap


Kısaca anlatımı böyle, bu dll'ler başınıza iş açabilir ama çokda yararlı olabilir. Doğru kullanmasını bilirseniz gerçekten çok yararlı ve dil bilginizi çok güçlendirecek, uygulamanıza yeni bir soluk getirecektir.

Bu konuyu ayak üstü yazdım bugün duzenleyeceğim.
Okuduğunuz için teşekkürler.
 
Üye
Katılım
26 Nis 2022
Mesajlar
10
Tepki puanı
1
Yaş
27
4 HİZMET YILI
Çok yararlı bir rehber olmuş teşekkürler ;)
 
Onaylı Üye
Katılım
10 Mar 2022
Mesajlar
59
Çözümler
1
Tepki puanı
4
Ödüller
3
Yaş
27
4 HİZMET YILI
aga nerden baksan mükemmel rehber eyw cansın discord gurubumda arkadaşlarımada atayım onlarda görsün
 
Game Developer
Seçkin Üye
Katılım
23 Şub 2017
Mesajlar
430
Çözümler
2
Tepki puanı
70
Ödüller
8
9 HİZMET YILI
Abstract classlar ve implement'ler hakkinda da bir rehber yaparsan hos olur. Eline saglik guzel anlatim.
 
Seçkin Üye
Katılım
22 Kas 2020
Mesajlar
315
Çözümler
1
Tepki puanı
95
Ödüller
3
5 HİZMET YILI
Abstract classlar ve implement'ler hakkinda da bir rehber yaparsan hos olur. Eline saglik guzel anlatim.
İlerde gelebilir belki. Temel konulardan daha çok forumda daha önce hiç açılmamış konuları açıp milletin farklı şeyleri öğrenmesini istiyorum daha çok :) önerin için sağol.
 
Onaylı Üye
Katılım
1 Nis 2022
Mesajlar
57
Tepki puanı
3
Ödüller
2
Yaş
25
4 HİZMET YILI
teşekürler kanka eline sağlık
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst