Sosyal Eklentiler

Kimler Sitede

Åžu anda 10 ziyaretçi Ã§evrimiçi

Bağış

Bu siteyi beğendiyseniz bağış yapabilirsiniz.


Visualbasic ile Api Kullanımı
Makale - Visual Basic
Yazar by Hasan   
Çarşamba, 05 Aralık 2007 18:34
Öncelikle Api nedir? Yenilir mi, içilir mi, bunu öÄŸrenelim. Api’ler bizi, alçak seviyeli programlama yapmaktan kurtaran, birileri tarafından C / C++ ile yazılmış program parçalarıdır. Visual Basic ile yazdığımız programlara biraz daha hız ve taşınabilirlik katmamızı saÄŸlarlar. Ayrıca Visual Basic’te olmayan en basitinden CD-Room'a eriÅŸme veya bellek miktarını öÄŸrenme gibi konularda bize yardımcı olur.

Api’ler dll veya ocx dosyalarının içine yerleÅŸtirilmiÅŸlerdir.  Windows'un içinde kesin olarak bulunan 3 adet dll dosyası vardır.

  1. User32.dll : Kullanıcı arayüzü ile ilgili komutlar bulunur. (pencere iÅŸlemleri ...vs.)
  2. Kernel32.dll : İşletim sisteminin çalışması (Windows serisi), dosyaların iÅŸlenmesi, hafıza yönetimi ... vb. Kısaca iÅŸletim sisteminin kalbi diyecegimiz komutlar bulunur.
  3. Gdi32.dll : Grafik ile ilgili komutlar bulunur.

Dll nedir?

Windows system/system32 klasorunun altında bulunan bu dosyalar api’lerin kalbi gibidir.Yukarıdaki dll’leri de bu klasörler altında bulabilirsiniz. DLL (Dynamic Link Library) yani dinamik link kütüphaneleri olarak isimlendirilen, Windows'un en önemli parçalarından birisidir. Bir DLL dosyası exe gibi çalıştırılabilir. Bir programın icrası anında çağırabileceÄŸi fonksiyonları barındırmaktadır. Yani diÄŸer bir deÄŸiÅŸle dll, programların dinamik olarak baÄŸlantı kurabileceÄŸi fonksiyonların bir kütüphanesidir.

BaÄŸlantılar statik ve dinamik olmak üzere ikiye ayrılmaktadır:

  1. Statik baÄŸlantılar icra sırasında deÄŸiÅŸmezler ve programınızın icrası sırasında kütüphane içindeki fonksiyonlara eriÅŸim için gerekli tüm adres bilgileri icra edilebilir dosya derlendiÄŸi sırada  belirlenmiÅŸtir ve sabittir.
  2. Dinamik baÄŸlantılar ise sadece gerektiÄŸi zaman kurulurlar. EÄŸer programınız ihtiyaç duyduÄŸu bir fonksiyonu kendi içinde bulamazsa o zaman Windows gerekli dll'i yükler ve içindeki fonksiyonları programınızın emrine verir. Bu sırada Windows, dll içindeki tüm fonksiyonların adreslerini çözümler  ve dinamik olarak programınız arasında baÄŸlantı kurulmasını saÄŸlar.
Alıntı : http://www.planindir.com/odevdetay.asp?id=832
 
Uygulama
 
Bir Api’yi kullanabilmeniz için önce declare etmeniz yani tanımlamanız gerekir.

Private/Public  Declare Sub/Function isim LİB “dll ismi veya kütüphane ismi diye de geçer” [(paremetreler)] [(veri tipleri (programda kullanılan tanımlamalar)]
 
mesela;
 
Public Declare Function GetForegroundWindow Lib "user32" () As Long
Public Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
 
gibi.
 
Artık bir api kullanalım…
 
İlk aklıma gelen sürücüler oldu. Sürücü türlerini gösteren bir program yazmaya baÅŸlayalım. Uppss biÅŸey unuttuk api’ler nerde.. Hemen görelim. Visual Basic'i açalım.
 
www.gokhanca.com

EÄŸer ilk defa kullanıyorsanız bu bölüm belki yüklü olmayabilir. Herhangi bir eklentiyi yüklemek için;
 
www.gokhanca.com
 
Add-In Manager’ı kullanıcaz oraya tıklayın…
 
www.gokhanca.com
 

Tamam ÅŸimdi ApiView’mızı açalım;

www.gokhanca.com

Win32api.txt dosyasının yolu:

c:\Program Files\Microsoft Visual Studio\Common\Tools\Winapi\Winapi32.txt

Forma bir tane DriveListBox ve Label koyun. İsimlerini kendinize göre belirleyebilirsiniz. Programın bütün kodları aÅŸağıdaki gibidir.

gokhanca

Option Explicit
'coded by hasan
Dim sysinfo As SYSTEMTIME

Private Sub Form_Load()
    GetSystemTime sysinfo 'ilgili bilgileri caÄŸrılıyor
    txtTarih.Text = sysinfo.wDay & "-" & sysinfo.wMonth & "-" & sysinfo.wYear
End Sub

Private Sub Timer1_Timer()
    GetSystemTime sysinfo
    txtSaat.Text = sysinfo.wHour & ":" & sysinfo.wMinute & ":" & sysinfo.wSecond & ":" &     sysinfo.wMilliseconds
End Sub

AÅŸağıdaki kodları bir modül içine koyun.

Option Explicit
Public Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)

Public Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

Åžimdi ÅŸöyle diyenler olabilir: time/date komutları ile zaten bunu öÄŸreniriz ne gerek var api falan diye. Amacım api kullanımını ögretmek tabii ki, gidip de bunun için api kullanmaya gerek yok di mi yani. Bu api’yi cracker arkadaÅŸlar daha yakından tanır. Time trial programlarda kullanılır. Forma bir Timer ve Label textbox koyalım. Gerekli açıklamalar aÅŸağıdaki proje dosyasında kodların arasına yazılmış vaziyette mevcut. Mümkün olduÄŸunca API kullanmaya bakın. Böylelikle programınızın ocx hatası azalır. Mesala CommonDialog içinde api kullanabilirsiniz ilgili ocx’i eklemeden.

Sistem zamanını gösteren API uygulamasına ait projeyi buradan indirebilirsiniz. 

 

Yorum ekle

TCK'ya aykırı, yasadışı ve genel ahlaka aykırı yazılar ile konu dışında yazılar, istekler, spam ve reklam amaçlı mesajlar yazılması YASAKTIR. Bu tür yazılar görüldüğü anda tarafımdan silinecektir. Herhangi bir uygunsuzluğun olduğunu düşündüğünüz yazılar için lütfen bana eposta yoluyla haber veriniz.


Güvenlik kodu
Yenile