Kendi DLL imizi (ComClass) Yapalım
#1
Merhaba arkadaşlar;

Bugünkü konumuz kendi DLL imizi nasıl yaparız?
Bu DLL i vb6, Access, Excel, Word, .Net vb. projelerimizde istediğimiz gibi kullanabiliriz. Benim kullanma amacım ise daha çok VBA da zorlanarak ya da sorunlu şekilde gerçekleştirdiğimiz olayları Framework kullanarak çok daha hızlı ve rahat bir şekilde oluşturabilmek. Aklıma ilk gelen Web servislerden veri çekmek ya da güvenlik amaçlı konular olabilir. Tabii örneğimizde ben çok basit 2 fonksiyon kullandım. Biri sadece bir string değeri döndürmeke, diğeri ise yazdığımız stringe karşılık doğru-yanlış sonucunu vermekte. Sizler istediğiniz gibi çok kompleks fonksiyonlar üretip kullanabilirsiniz. Hatta benim daha önce yine paylaştığım “Fonksiyon Kutusu” örneğinde olduğu gibi bir çok fonksiyonu hazır araç haline getirebilirsiniz. Aşağıdaki linkte bu konuyu bulabilirsiniz. Ayrıca başka pc lerde çalıştırmak için gerekli olan register işlemleri için açıklamayı da bulabilirsiniz.
http://www.access-sql.com/Konu-Access-Fonksiyon-Kutusu


Şimdi ilk ilk DLL imizi oluşturmaya başlayalım. Öncelikle Visual Studiomuzu eğer Vista ya da Win7 kullanıyorsak yönetici modunda çalıştıralım( Com objesi oluşturacağız ve bu objeyi kullanabilmemiz için register edilmesi gerekiyor. Register edebilmek için de VS yi yönetici modunda açıyoruz.)

[Resim: 1.jpg]


“New Project” diyelim ve resimde göründüğü gibi “Class Library” i seçelim. Proje oluşunca kendi oluşturduğu Class ı silelim ve proje üstüne sağ klik yaparak “Add New Item” diyerek alttaki resimdeki gibi “Com Class” seçelim ve altında ismini verelim.


[Resim: 2.jpg]


Oluşturduğumuz comclass içine basit 2 tane fonksiyon yazalım.

vb.net
  1. Public Function beab() As String
  2. Return "Access-Sql.com"
  3. End Function



Beab isimli fonksiyonu artık istediğimiz gibi çağırabiliriz ve gördüğünüz gibi bize “Access-Sql.com” şeklinde bir string döndürmekte.
Şimdi diğer fonksiyonumuzu yazalım;
vb.net
  1. Public Function Kontrol(ByVal Sifrem As String) As Boolean
  2. If Sifrem = "access-sql" Then
  3. Return True
  4. Else
  5. Return Fals
  6. End If
  7. End Function



Bu fonksiyon ise bize belirli bir string girişine göre doğru-yanlış sonucunu vermektedir. Bu basit fonksiyon sizlere güvenlik amaçlı işlemler için biraz fikir verebilir.
Kodların görünümü alttaki gibi olacaktır.

[Resim: 6.jpg]


Kodlama işi bittikten sonra projeyi kaydedip debug yapalım ve kullanıma hazır hale getirelim. Debug yapınca alttaki resimdeki mesajı alacaksınız bu sizi korkutmasın oluşan dosyanın direkt başlatılamayacağını ve çalıştırılabilir bir dosya olmadığını söylüyor.

[Resim: 5.jpg]

Biz bu DLL i Access içinde kullanalım( Excel, Word vb..) uygulamalar için de aynı yöntem takip edilecektir.

Access dosyamızı açalım ve hemen referans ekleme işine girelim. Resimde görüldüğü gibi DLL ve Tlb dosyaları vardır. Biz referans ekleme işini şimdilik VS projemizde oluşan bin/debug klasoru içinden tlb dosyasını seçerek yapacağız. Elbette daha sonra bu DLL ve TLB dosyalarını system32 içine atarak daha rahat bir kullanım sağlayabiliriz.

[Resim: 7.jpg]


Referansımızı alttaki gibi ekledikten sonra artık kullanıma geçebiliriz.


[Resim: 10.jpg]

Access içinde bir modul oluşturalım ve oluşan Dll deki clasımızı tanıştıralım. Rahat bir kullanım için bunu public olarak ta tanımlayabiliriz.

[Resim: 8.jpg]


Visual Basic
  1. Public BenimCls As New beabComClass
  2. 'Public BenimCls As New AccessSqlComCls.beabComClass bu şekilde de olabilir.



Ve ilk testlerimizi yapalım.

Visual Basic
  1. Private BenimCls As New AccessSqlComCls.beabComClass
  2.  
  3. Sub Testbeab()
  4.  
  5. MsgBox BenimCls.beab
  6.  
  7. End Sub
  8.  
  9. Sub SifreKontrol()
  10. MsgBox BenimCls.Kontrol("access-sql")
  11. End Sub



[Resim: 9.jpg]

Bu prosedurlerin üstündeyken F5 yaparsanız sonucu hemen görebilirsiniz. Tabii bu prosedurleri public fonksiyon olarak tanımlayabiliriz ve form, sorgu, raporlarda dilediğimiz gibi kullanabiliriz.


Ben burada bir Com objesi yaratıp kullanmayı çok basitçe anlatmaya çalıştım. Umarım faydası olur.

Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:
#2
Teşekkürler Berkant Bey.
"Gönül deniz, dil kıyıdır. Denizde ne varsa kıyıya o vurur"



  Alıntı
Bu mesajı beğenenler:
#3
Teşekkürler Berkant Hocam,

iyi çalışma.
"Amacımız; zorlaştırmak değil, kolaylaştırmak..." Abdullah Uğur
bayrak



  Alıntı
Bu mesajı beğenenler:
#4
Paylaşım için teşekkürler Berkant.

Ek bilgi olarak VB6' da küçük bir hile ile API dll yapabiliyoruz.

Visual Basic
  1. Declare Function BirFonksiyon Lib "benim.dll" (ByVal arg1, ByVal arg2) As Long





  Alıntı
Bu mesajı beğenenler:
#5
Berkant bey ve Zeki bey bu paylaşım için teşekkürler.YesWinkSmile
Eğer vaktiniz varsa bir tane calendar ve/veya datetimepicker çalışması(nesnesi) yapabilirmisiniz bu çalışma ile.
Teşekkür ederim tekrar.



  Alıntı
Bu mesajı beğenenler:
#6
Vb.Net ile ActiveX olmuyor sanırım ama vb6 ile yapılabiliyor sanırım. Ben vb6 hiç kullanmadım belki Zeki bu konuda bilgi verebilir bize..
Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi