Respond needs javascript to run. To find out more click here
c# dll örnek uygulama » Serdar Demir
RSS
 

Posts Tagged ‘c# dll örnek uygulama’

Dll kullanımı örnek uygulama

15 Mar

Dll kullanımı örnek uygulama

Şu anda dll kullanmaya yeni başlayan biri olarak bir proje geliştireyim dedim ve otel  otomasyonu yapmaya karar verdim. Yapacağım projede ana formu sadece sürükle bırak ile oluşturuyoruz diğer bütün formları olayları metotları dll sayesinde gerçekleştireceğiz. Öncelikle otel  otomasyonumuz için bir admin modülü oluşturacağız.  

Bu modül sayesinde programı kullanan otel yöneticileri ilk kez programı çalıştırdıklarında kurulum ekranı ile karşılaşacaklar(wordpress tarzı J) Program sizden veritabanı  adını ve bilgisayar (sunucu) isminizi girmenizi istiyor kurulumu tamamlayıp ana forma geçiş yapıyorsunuz. Burada önemli olan benim otel otomasyonunda kullandığım veritabanı tablolarını , store procedureleri bağlantıları otomatikman oluşturmuş oluyor.

//procedure oluşturma sorgusu

string sorgu = "Create PROCEDURE Kayit @ad varchar(50),@soyadi varchar(50),@tc varchar(50),@ilce varchar(50),@telefon varchar(50),@ceptel varchar(50),@odatipi varchar(50),@aciklama varchar(50),@adres varchar(50),@il varchar(50),@gelistarihi varchar(50),@ayrilistarihi varchar(50),@ucret varchar(50),@odemesekli varchar(50),@rezervasyonno varchar(50) AS      insert into Musteriler(adi,soyadi,tc,ilce,telefon,ceptel,odatipi,aciklama,adres,il,gelistarihi,ayrilistarihi,ucret,odemesekli,rezervasyonno) values(@ad,@soyadi,@tc,@ilce,@telefon,@ceptel,@odatipi,@aciklama,@adres,@il,@gelistarihi,@ayrilistarihi,@ucret,@odemesekli,@rezervasyonno) ";

//tablolarımızı oluşturuyoruz

string sorgu = "CREATE TABLE Musteriler (      [id] [int] IDENTITY (1, 1) NOT NULL ,[adi] [varchar] (50) COLLATE Turkish_CI_AS NULL ,    [soyadi] [varchar] (50) COLLATE Turkish_CI_AS NULL ,[tc] [varchar] (50) NULL,[ilce] [varchar] (50) COLLATE Turkish_CI_AS NULL,  [adres] [varchar] (50) COLLATE Turkish_CI_AS NULL ,[il] [varchar] (50) COLLATE Turkish_CI_AS NULL,[telefon] [varchar] (50) COLLATE Turkish_CI_AS NULL,[ceptel] [varchar] (50) COLLATE Turkish_CI_AS NULL,     [odatipi] [varchar] (50) COLLATE Turkish_CI_AS NULL ,[aciklama] [varchar] (50) COLLATE Turkish_CI_AS NULL,     [gelistarihi] [varchar] (50) NULL,[ayrilistarihi] [varchar] (50) NULL,[ucret] [varchar] (50) NULL,[odemesekli] [varchar](50) NULL,[rezervasyonno] [varchar] (50) NULL )";

Kurulumu gerçekleştirdikten sonra ana formumuza dönüyoruz  formumuzun  tasarımı aşağıdaki gibi olacak menünün İngilizce olduğuna bakmayın dil desteği ekleyeceğim için şimdilik o kısım İngilizce

C# ile dll oluşturmayı ve kullanmayı biliyoruz  using System.Reflection; sınıfını kullanarak projemize dahil edip

Program load olmadan program klasörü içerisinde /eklenti klasörünün altında dll uzantılı dosyaları süzecek eğer varsa o modülü çalıştıracak bu kısımda ise linq kullanıyoruz aşağıdaki kodu Program.cs içerisine yazıyoruz

string path = @"D:\Serdar\nesne final\Rezervasyon\Eklenti\";

DirectoryInfo dir = new DirectoryInfo(path);

ListViewItem item;

ListViewItem.ListViewSubItem subitem = new ListViewItem.ListViewSubItem();

var dosyalar = from d in dir.GetFiles("*.*")

where d.Extension == ".dll"

select d;

foreach (FileInfo f in dosyalar)

{

return true;

}

return false;

//Siz isterseniz bu kodu değiştirerek farklı işlerde kullanabilirsiniz.

Ayrıca global olarak aşağıdaki değişkenleri kullanıyoruz.

string anadosya = Environment.CurrentDirectory + “\\Resimler\\”;

string eklenti = Environment.CurrentDirectory + “\\Eklentiler\\”;

Üst menü bir listview listview dan yönetim butonuna tıklıyoruz ve bizden üye girişi yapmamızı isteyecek bu kısımda oluşturan üye giriş formunda güvenlik için

using System.Security.Cryptography; kütüphanesi ile md 5 şifrelemesi gerçekleştiriyoruz böylece ne biz nede başkası şifreyi görebilir admin bile olsa byte haline dönüştürülmüş şekilde görüntülenecektir. J

Bu arada dll dosyalarımızı  listview menüde eklenti ikonuna tıklarsanız eklenti ekler gibi dll nin dosya yolunu göstererek direk ekleyebiliyoruz.

Üye giriş butonun click olayında formun show metodunu değil de show dialog metodunu kullanarak eğer giriş yapmazsa o formu doğrulamadan ana forma geçişin yolunu kapatmış oluyoruz neyse eğer başarılı bir şekilde giriş yapabilirsek aşağıda da gördüğünüz gibi  formun sol üst kısmına  command butonu ekledik  bu işlemi peki nasıl yaptık? Dll miz forma sonradan müdahale etmek kontrol eklemek için tasarladık ana formdan dll mizi çağırdığımız zaman dll mize o form nesnesinden bir parametreyi  gönderiyoruz benim dll imde bir form nesnesi karşılıyor böylece çalışma zamanında dll yi çağıran forma istediğim kontrolü ekleyebiliyorum.

Şimdi command butonuna tıklayarak admin paneline gidiyorum burada ise veritabanına rezervasyon kaydı,  yapmış olduğum her rezervasyona ayrı bir kayıt numarası veriyorum yine bu modülden rezervasyon numarasını kullanarak arama ve kontrol işlemlerini yapabiliyoruz.

Ayrıca admin panelinden otel çalışanları için kullanıcı oluşturabiliyoruz bazı veritabanına çalışanların erişimini sınırlandırmak istersek yada yetkilendirme yapabiliyoruz bu panelden

Şimdi classımızdan çıkıp dll mizi kullanacağımız forma geçelim

foreach (ListViewItem lvitem in listView2.SelectedItems)

{

if (lvitem.Index == 0)

{

this.Hide();

fatih();

Assembly asm = Assembly.LoadFile(@"C:\Users\serdar\Documents\Visual Studio 2008\Projects\veritbn\veritbn\bin\Debug\Baglanti.dll");

Type[] tipimiz = asm.GetTypes();

ConstructorInfo[] ci = tipimiz[0].GetConstructors();

object obj = ci[0].Invoke(null);

MethodInfo mi = tipimiz[0].GetMethod("metodum");

string x = Registry.CurrentUser.GetValue("ism").ToString();

Form1 yeni = new Form1();

object nesne = mi.Invoke(obj, new object[] { yeni, yeni.groupBox1 });

}

Burda listview da admin ikonuna tıklarsak dll mizi yükleyecek ve form ve groupbox nesnesini classa paramatre olarak gönderecek.

//

public void fatih()

{

Assembly asm = Assembly.LoadFile(@"C:\Users\serdar\Documents\Visual Studio 2008\Projects\veritbn\veritbn\bin\Debug\Baglanti.dll");

Type[] tipimiz = asm.GetTypes();

ConstructorInfo[] ci = tipimiz[0].GetConstructors();

object obj = ci[0].Invoke(null);

MethodInfo mi = tipimiz[0].GetMethod("SqleBaglan");

object nesne = mi.Invoke(obj, new object[] { });

}

Kısaca  formunuzu tasarlayıp yukardaki kodu kontrolümüze yazarak bizmde bir admin panelimiz olmuş olyo Aşağıda admin panelimizin görüntüsü

Dll eklemekte ve kullanmada sorun yaşayan arkadaşlar yorum yazarak iletişime geçebilirler.

not programda vista kontrolleri kullanıldığı için xp makinelerde bazı butonlar görünmeyenilir.

Programın kaynak kodunu görmek isteyen arkadaşlar bana mail yoluyla ulaşabilirler yuhubaa@hotmail.com

DLL indir