VB.NET TE API KULLANIMI

Bu yazımızda VB NET dilinde API kullanımından ve WIN32 API ile yapılabilecek uygulamalardan bahsedeceğiz.

Windows işletim sistemi içinde birçok nesneye veya özelliğe VB .NET dili ile ulaşmamız henüz mümkün değildir. Burada dikkat ederseniz "henüz" diyorum çünkü VB Dilinin gelişim süreci içerisindeki değişikliklere bakıldığında bu dilin zamanla etkin bir Windows tabanlı uygulama dili olacağı muhtemeldir. VB. NET dili elbetteki bir Windows tabanlı programlama dilidir. Ancak bu dil henüz Windows üzerindeki hakimiyetini tam anlamıyla kuramamıştır. Böyle eksik kalınan noktada Windows üzerinde C türevli dillerle yazılmış bazı fonksiyonların kullanımı devreye girer ki bizde bunlara API (Application Programmer Interface- Uygulama Programı Arabirimi) diyoruz. Ancak bir noktanın özellikle dikkatini çekmek istiyorum. VB 6.0 ile yapılabilecek işlemler oldukça sınırlı idi ve Windows un alt fonksiyonlarına ulaşamıyordu. Ama .NET ile gelen evrim ile dildeki sınırlılıklar biraz olsun azaldı. Bu nedenle size tavsiyem VB:NET içindeki bir fonksiyon yada yordam ile yapabileceğiniz bir işlemi API kullanıp tanımlayarak yapmayınız bu performans konusundan veriminizi etkiler. Ayrıca dil bütünlüğü ve veri erişimi gibi konularda bu tür bir kullanım ciddi sıkıntılar doğurur.

Bu kadar teorik bilgiden sonra asıl işimiz olan Kod yazmaya ve uygulama geliştirmeye dönelim. Bir API yada DLL VB.NET içinde dış assembly olarak algılanır ve standar bir tanımlama bloğu içinde "Imports" anahtar kelimesi ile tanımlanır.

Eğer Kullanacağınız bir fonksiyon ise:

Örneğin User32.DLL içindeki bir Beep Fonksiyonunu tanımlayıp kullanalım Önce Proje içine Bir Class ekleyelim ve adını API olarak düzenleyelim. Class Kodu Aşağıdaki şekilde düzenlenir. Dış assembly için şeklinde tanımlanır.

[Public|Private] Declare Sub "Yordam Adı" (Yordamın argümanları)

Imports System.

Imports System.Runtime.InteropServices

Public Class API

Public Shared Sub Beep(ByVal toner As Int32, ByVal sure As Int32)

End Sub

End Class

Daha sonra Form1 içindeki bir buton yerleştirelim. Kodu aşağıdaki gibi düzenleyelim.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim i, j As Integer

i = 100

j = 20

API.Beep(i, j)

Next

Next

End Sub

Şimdi butona basalım bakalım neler olacak. Bu sadece basit bir örnekti isterseniz gelişmiş uygulamalar da yapabilirsiniz. Örneğin Disk bilgilerinizi öğrenebilirsiniz. Form üzerine İki "textbox" koyalım. Şimdi Textbox1 in adını Diskname olarak değiştirelim. Diğeride info olsun. Gerekli Kodu düzenleyelim. Class içine aktarılacak kodu yazalım.

Imports System

Imports System.Runtime.InteropServices

Public Class API

Public Declare Function GetDiskFreeSpace Lib "kernel32" _

Alias "GetDiskFreeSpaceA" (ByVal diskadı As String, _

ByRef seektordebosalan As Integer, _

ByRef sektordekibytemiktari As Integer, _

ByRef bosalannumarası As Integer, _

ByRef Freespace As Integer) As Integer

End Class

Burada değişkenleri Türkçe anlam çağrıştıran değişkenler tanımladım ki hangi değişken ne işe yarıyor daha anlaşılır olsun. Şimdide Form İçindeki kodu yazalım.

Public Class Form1

Inherits System.Windows.Forms.Form

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim diskadı As String

Dim bosalan As Integer

Dim sektoralanı As Integer

Dim bosalanno As Integer

Dim freespace As Integer

diskadı = Diskname.Text + ":\"

API.GetDiskFreeSpace(diskadı, bosalan, sektoralanı, bosalanno, freespace)

Info.Text = freespace.ToString

End Sub

End Class

Hiç yorum yok:

 


BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi Bilginin Tek Kaynağı

BilgininAdresi SEO Yarışması BilgininAdresi.NET SEO Yarışması Katılımcısı

="BilgininAdresi SEO Yarismasi"" href= " http://www.bilgininadresi.net">BilgininAdresi.NET SEO Yarismasi Katilimcisi