Respond needs javascript to run. To find out more click here
Projelerim » Serdar Demir
RSS
 

Archive for the ‘Projelerim’ Category

C# Sinema Programı

14 May

Ünivresite 3.sınıfta yaptığım bir proje proje bugları mevcut fakat bu projeyi yapmaktaki amacım reflection toolkitler ve object oriented mimarisi konularında kendimi geliştirmekti programı incelemenizi öneririm program konusunda hertürlü yardıma hazırım

Projeyi İndir

 
 

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

 
 

C#’ ta uygulama kısayolu oluşturma

06 Mar

Kısayol SimgesiArkaplan-Resmi:com sitemi biliyor musunuz, bilmiyorum ? Eğer biliyorsanız bu site için yaptığım duvarkağıdı değiştiriciyi belki görmüşsünüzdür. Tee 10 ay önce yapmıştım o programı. Eksikleri çoktu hatta yeni bir sürüm üzerinde çalışıyordum. Bu arada eski sürümünü de güncelleyeyim dedim ki, şu yüzden: son zamanlarda indiren kişi sayısı anlayamadığım bir şekilde arttı. Bende yarım yamalak çalışan bir program kullanmasınlar diye eski sürümü güncelledim.

Yine başlangıç kısmı fazla uzun sürdü.

Sadete geleyim, programımın en büyük sorunu UAC engeline takılmasıydı. Çünkü ben programı Kayıt Defterinden başlangıç programlarına kendisini ekleyecek şekilde ayarlamıştım ve bu ayara erişmek için Yönetici izni gerekiyordu. Bugün düşündüm, bunu yapacağıma daha az gürültülü bir yol daha var: Başlat menüsünde ki Başlangıç içerisinde link yerleştirmek. Evet, konuya yaklaştığımızı sizde farketmişsinizdir. Bende araştırdım “bu nasıl yapılır?” diye. Karşıma iki yöntem çıktı, birincisi daha profesyonelce, ikinicisi ise gayet basit. İkisini de anlatayım.

1. Yol

Windows içerisinde ki bir COM nesnesinden faydalanıyoruz. Öncelikle Solution Explorer’ da References’ ın içerik menüsünden Add Reference’a tıklıyoruz. Sonra bu listeden Windows Script Host Object Model’ i seçiyoruz.

Referans EklemeReferans Ekle Formu

Daha sonra aşağıdaki kodları kullanarak kısayolumuzu oluşturabiliriz.
En önce kütüphaneyi dosyaya dahil edelim :

  1. using IWshRuntimeLibrary;

Daha sonra;

  1. private WshShellClass WshShell;
  2. private void btnShortcut_Click(object sender, System.EventArgs e)
  3. {
  4. WshShell = new WshShellClass();
  5. // Kısayol değişkeni
  6. IWshRuntimeLibrary.IWshShortcut MyShortcut;
  7. // Kısayolu oluşturacağımız yolu seçiyoruz. (Kısayolun yeri)
  8. MyShortcut = (IWshRuntimeLibrary.IWshShortcut)WshShell.CreateShortcut(@”C:\MyShortcut.lnk”);
  9. // Kısayolun hedefini belirliyoruz.

10.  // Burada uygulamanın çalıştırılabilir dosyası gösteriliyor. İsterseniz başka dosyanın yolunuda verebilirsiniz

11.  // Örnek : MyShortcut.TargetPath = @”C:\Windows\notepad.exe”;

12.  MyShortcut.TargetPath = Application.ExecutablePath;

13.  // Kısayol için açıklama. Çok gerekli değil ama koysanız iyi olur

14.  MyShortcut.Description = “Launch My Application”;

15.  // Kısayol simgesini belirtiyoruz. Bu satırı koymazsanız kısayolun simgesi uygulamanın simgesi ile aynı olur

16.  MyShortcut.IconLocation = Application.StartupPath + @”\app.ico”;

17.  // En son kayıt işlemi

18.  MyShortcut.Save();

19.  }
Birinci adım bu kadar.

2. Yol

Bu adım biraz daha kolay. Şöyle ki; normalde uygulamalar için kullanılan kısayol dosyaları(.lnk) çok karmaşıktır. Oysaki internet kısayol dosyaları(.url) çok basittirler. Bizde bir internet kısayolu oluşturacağız ama bu kısayolunun gideceği yer bilgisayarımızdaki bir dosya olacak. Evet yanlış duymadınız o bizim istediğimiz uygulama dosyası olacak.
Sizin için direkt kullanabileceğiniz bir fonksiyon vereyim

  1. private void KisayolOlustur(string link, string target)
  2. {
  3. string deskDir = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
  4. if (File.Exists(linkName))
  5. {
  6. return;
  7. }
  8. using (StreamWriter writer = new StreamWriter(linkName))
  9. {
  10. writer.WriteLine(“[InternetShortcut]“);
  11. writer.WriteLine(“URL=file:///” + target);
  12. writer.WriteLine(“IconIndex=0″);
  13. string icon = app.Replace(‘\\’, ‘/’);
  14. writer.WriteLine(“IconFile=” + icon);
  15. writer.Close();
  16. }

17.  }
Kullanımı:

1.  KisayolOlustur(“Kısayol dosyasının konumu”, “Kısayol dosyasının hedefi”);
İşte bu kadar. Umarım işinizi görür. Eğer işinizi görürse beni de görürsünüz artık.