19 Ara 2007 Programcının Bayram Tebriği Kategori: Benden Etiketler: C#Vatan&Millet 4 Yorum string Type= "Bayram"; Message.To = "Tüm Müslüman Alemi"; Message.From = "Sem GÖKSU"; Message.Date = "20 - 23 Aralık 2007"; if (Type== "Bayram") { MessageBox.Show("Bayramınızı En içten Dileklerimle Kutlarım.."); } else { MessageBox.Show("Her Gününüzün Bayram Olmasını Dilerim..."); }
06 Haz 2007 Basit bir FTP Uygulaması Kategori: C#.NET Etiketler: C#C# 2.0 7 Yorum Uzun bir aradan sonra tekrardan merhaba arkadaşlar :) Bu makalemizde özellikle web uygulamaları geliştirenlerin işine yarayacak c# ile basitçe bir FTP Client programının nasıl geliştirildiğini anlatacağım. FTP FTP (File Transfer Protocol) Internete baglı bir bilgisayardan digerine (her iki yönde de) dosya aktarımı yapmak için gelistirilen bir internet protokolü ve bu isi yapan uygulama programlarına verilen genel addır. Ilk gelistirilen internet protokollerinden biridir. FTP protokolü ile bir baska bilgisayardan bir baska bilgisayara dosya aktarımı yapılırken, o bilgisayar ile etkilesimli-aynı anda (on-line) baglantı kurulur ve protokol ile saglanan bir dizi komutlar yardımıyla iki bilgisayar arasında dosya alma/gönderme islemleri yapılır. Bir web projesi yada web sitesi yaptıgımızda bunu yayınlamak için bir FTP programına ihtiyaç duyarız. Bunu nasıl yaparız? FTP programını açar, ftp bilgilerimiz ile ftp'ye baglanır ilgili dosyaları ftp alanına transfer ederiz.FTP kullanımı sadece bununla da sınırlı degildir elbette. Örnegin kendi sistemimiz üzerinden (bu bir winform uygulaması olabilir) web sitemize içerik girmemiz gerektiginde ilgili içerige bir dosya eklemek istedigimizde isimizi çok kolaylastıracak bir yöntemdir. .Net Framework da bu isi FtpWebRequest classı ile yaparız. Simdi kısaca bu classı tanıyalım.FtpWebRequestFramework 2.0 içersinde FTP ile çalısmamızı saglayan yeni bir class eklendi. Bu classın adı FtpWebRequest. Bu class System.net namespace'si altında bulunmaktadır. Webclient sınıfını kullanarak uzaktaki bir sunucudan FTP'ye baglanarak bir dosya indirebilir yada sunucuya bir dosya yükleyebiliriz. ÖRNEKBiz bu uygulamamızda kendi uygulamamız üzerinden bir ftp'ye baglanıp FTP'ye bir dosya upload edip yine FTP'en kendi makinemize bir dosya download edecegiz.Ilk olarak yeni bir windows projesi olusturalım;Formumuz üzerine 2 buton ekleyelim. Ilk butona bastıgımızda upload islemini gerçeklestirecek. Diger butonda FTP'den dosya indirmemizi saglayacak. Benim hazırlamıs oldugum form asagıdaki gibidir.Ilk olarak FTP'ye baglanarak bir dosya indirelim. Bunun için gerekli kodları yazmaya baslayalım; FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.xxxxxx.com/xxx/sem.swf"); //Sunucu ile haberlesecek bir FtpWebRequest objesi yarattık. Simdi bu obje için login olmak için gerekli bilgilerini olusturalım.request.Credentials = new NetworkCredential("xxxxx", "xxxxx");using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()){Stream data = response.GetResponseStream();string targetPath = "C:/sem.swf";//Local makinedeki dosyanın tam yolunu belirtelimif (File.Exists(targetPath)) // Dosya varsa sil.File.Delete(targetPath);byte[] byteBuffer = new byte[4096];// Dosyayı loacal makinemize aktarıyoruzusing (FileStream output = new FileStream(targetPath, FileMode.CreateNew)){int bytesRead = 0;do{bytesRead = data.Read(byteBuffer, 0, byteBuffer.Length);if (bytesRead > 0){output.Write(byteBuffer, 0, bytesRead);}}while (bytesRead > 0);}}FTP'den dosyayı indirme islemini tamamladık. Simdi de sunucuya bir dosya yükleyelim. Bunun için gerekli kodlar; FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www. xxxxxx.com/xx/sem.jpg"); // FTP'den indirecegimiz dosyayı belirtiyoruz.request.Method = WebRequestMethods.Ftp.UploadFile;request.Credentials = new NetworkCredential("xxxxx ", " xxxxx ");// Login olmak için gerekli bilgilerini olusturalım.StreamReader sourceStream = new StreamReader("c:/sem.jpg");byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());sourceStream.Close();request.ContentLength = fileContents.Length;Stream requestStream = request.GetRequestStream();requestStream.Write(fileContents, 0, fileContents.Length);requestStream.Close();Upload islemimiz de bu kadar. Simdi bu yaptıklarımızı test edelim ;) Ilk Olarak Yükle butonuna tıklayalım;FTP'ye baglanalım, bakalım upload islemini gerçeklestirmismi?Evet Sem.jpg isimli dosya sunucu da artık J Simdi hemen altındaki sem.swf isimli dosyayı Bilgisayarımıza indirelim. Bunun için indir butonuna tıklayalım.Sonucu görmek için C: sürücüsüne bakalım;Evet sem.swf'yi bilgisayarımıza indirdik. Gerçekten güzel ve ise yarayacak bir class'mıs JBu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim. Sem GÖKSUMCP | MCAD.NET | MCTS Örnek Kodlar için mail adresimi kullanabilirsiniz sem.goksu@yazilimgunlugu.comwww.yazilimgunlugu.comKaynaklar http://msdn.com
27 Mar 2007 ASP.NET Custom Control Geliştirme – Karakter Sayan Textbox Kategori: ASP.NET Etiketler: ASP.NETC# 5 Yorum Merhaba arkadaşlar, custom controller dizisi makalesine textbox içerisine girilen karakterleri sayacak ve bu textbox’ı limitlendirecek yeni bir kontrol yazacağız…Karakter Sayan Textbox Bazı durumlarda textbox içerisine girilecek karakter sayısı bizim için önemli olabilir. Bu durumlar da textbox içerisindeki karakter sayısını kontrol edip kaç karakter girdigimizi kontrol etmemiz gerekir. Örnegin firmamız için bir sms gönderme programı yazıyorsak bu bizim için çok önemlidir. Toplu sms gönderimi yaparken kullanıcılara gönderilecek sms'in tek seferde yani en fazla 160 karakter girilerek gönderilmesi gerekir. Iste biz bu sorunu çözmek için hem limitlenen hemde karakter sayan bir textbox yazacagız. Ilk olarak yeni bir web control library projesi olusturalım. Evet, projemizi olusturduktan sonra kodlamaya baslıyalım. using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace SemControls { //Ilk olarak toolbox'da kontrolümüze verilecek ismi belirliyoruz.. [DefaultProperty("Text")] [ToolboxData("<{0}:SemLimitliTextbox runat=server></{0}:SemLimitliTextbox>")] public class SemLimitliTextbox : WebControl { string _KarakterLimiti; string _Text; // Kontrol olusturulurken textbox içerisindeki karakteri sayacak ve bunu sınırlandıracak olan javascript kodunu yaziyoruz. protected override void OnInit(EventArgs e) { string script = ""; script += "<script language=\"javascript\">"+System.Environment.NewLine; script += "function textCounter(field, countfield, maxlimit)" + System.Environment.NewLine; script += "{if (field.value.length > maxlimit) field.value = field.value.substring(0, maxlimit);" + System.Environment.NewLine; script += "else countfield.value = maxlimit - field.value.length; }" + System.Environment.NewLine; script += "</script>"; if (!this.Page.IsClientScriptBlockRegistered("SemLimitedTextbox")) { this.Page.RegisterClientScriptBlock("SemLimitedTextbox", script); } } // Property penceresine LimitliTextbox grubu altında karakterLimiti adında yeni bir özellik ekliyoruz. Bu bizim textboxımızı limitlendirecek [Category("LimitliTextbox")] [Browsable(true)] [Description("Textbox'a kaç karakter girilsin?")] public string KarakterLimiti { get { return _KarakterLimiti; } set { _KarakterLimiti = value; } } // Property penceresine LimitliTextbox grubu altında Text adında yeni bir özellik ekliyoruz. Bu bizim textboxımızın text özelligi olacak. [Category("LimitliTextbox")] [Browsable(true)] [Description("Textbox'ın Text'i")] public string Text { get { return _Text; } set { _Text = value; } } //Simdi kontrolümüzü olusturuyoruz. protected override void Render(HtmlTextWriter writer) { try { string LimitedTextbox = ""; LimitedTextbox += "<textarea rows=3 name=LimitliTextbox onKeyDown=\"textCounter(this.document.all.LimitliTextbox,this.document.all.KarakterSayisi,"+KarakterLimiti+");\""; LimitedTextbox += "onKeyUp=\"textCounter(this.document.all.LimitliTextbox,this.document.all.KarakterSayisi," + KarakterLimiti + ");\" cols=38 tabindex=5>"+Text+"</textarea>"; LimitedTextbox += "<br/>"; LimitedTextbox += "<input readonly type=text name=KarakterSayisi size=4 maxlength=3 value=\"" + KarakterLimiti + "\" style=\"font-family: Tahoma; font-size: 8pt; border: 1px solid\">"; LimitedTextbox += "<font color=#6699CC face=Verdana size=1> Karakter Daha Yazabilirsiniz...</font>"; writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(LimitedTextbox.ToString()); writer.RenderEndTag(); } catch { writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write("Kontrol Olusturulamadı..."); writer.RenderEndTag(); } } } } Kontrolümüzü olusturduktan sonra; projemize yeni bir web site ekleyelim. Daha sonra Web projesinin referanslarına bu web control libraryi ekleyelim. Simdi toolboxımıza gidelim bakalım kontrol gelmismi? Sem Limitli textbox kontrolü gelmis. Sayfamıza yeni bir SemLimitliTextbox ekliyelim ve özelliklerini ayarlıyalım... Textbox içerisine en fazla 100 karakter girilsin. Simdi web projemizi çalıstıralım. Simdi textbox içerisine birseyler yazalım. Gerçekten de sayıyor. : ) Bu makalemizinde de sonuna geldik. Tesekkür eder iyi çalısmalar dilerim. Sem GÖKSUMCP | MCAD.NET | MCTS | ASP.NET MVP Örnek Kodlar için mail adresimi kullanabilirsinizsemgoksu@semgoksu.com Kaynaklar www.codeproject.com
08 Mar 2007 ASP.NET Custom Control Geliştirme – Popup Açtıran Button Kategori: ASP.NET Etiketler: ASP.NETC# 0 Yorum Merhaba arkadaşlar, ilk makalemizde diğer web geliştirme editörlerinde olan ama .net toolbox’da olmayan marquee kontrolünü geliştirmiştik. Bu makalemiz de ise farklı bir custom web control geliştireceğiz. Popup Açtıran Button Hemen hemen her web sitesinde kullandıgımız Popup pencereler bizi çok fazla ugrastırır. Her defasında yeni bir javascript olusturup olusturdugumuz javascripti kontrollerin eventlerinde çagırırız. Bu hem bizi çok ugrastırır hemde çok fazla zaman kaybettirir. Iste bu zaman kaybanı önlemek için popup açtıran bir buton gelistirecegiz. Bir button olusturup bu butona tıklandıgında popup pencere açtıracagız. Butonun ve açılacak olan bu pencerenin boyutlarını kullanıcı degistirebilecek. Simdi ilk olarak yeni bir WebControl Library projesi olusturalım. Kodlamaya baslıyalım; using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace PopupButton { [DefaultProperty("Text")] [ToolboxData("<{0}:semPopupButton runat=server>")]//kontrolümüze verilecek olan ID Tabiki kendi adımla baslıyor (: public class semPopupButton : WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] //Kontrolümüzün özelliklerini tutacak olan degiskenler string _text; string _windowName; string _windowUrl; string _windowWidth; string _windowHeight; string _buttonWidth; string _buttonHeight; //SemPopupButton adlı bir özellik grubuna eklenecek bu özellik Açılacak olan Window'un URL'ni tutan bir özelliktir. [Category("SemPopupButton"), DefaultValue("WindowUrl"), Description("Açılacak olan Popup Pencerenin URL'i")] public string WindowURL { get { return _windowUrl; } set { _windowUrl = value; } } //SemPopupButton adlı bir özellik grubuna eklenecek bu özellik Açılacak olan Window'un Title'ni tutan bir özelliktir. [Category("SemPopupButton"), DefaultValue("WindowsName"), Description("Açılacak olan Popup Pencerenin Title'i")] public string WindowName { get { return _windowName; } set { _windowName = value; } } //SemPopupButton adlı bir özellik grubuna eklenecek bu özellik Açılacak olan Window'un genisligini tutan bir özelliktir. [Category("SemPopupButton"), DefaultValue("PopupWidth"), Description("Açılacak olan Popup Pencerenin genisligi")] public string WindowWidth { get { return _windowWidth; } set { _windowWidth = value; } } //SemPopupButton adlı bir özellik grubuna eklenecek bu özellik Açılacak olan Window'un yüksekligini tutan bir özelliktir. [Category("SemPopupButton"), DefaultValue("WindowHeight"), Description("Açılacak olan Popup Pencerenin yüksekligi")] public string WindowHeight { get { return _windowHeight; } set { _windowHeight = value; } } //SemButton adlı bir özellik grubuna eklenecek bu özellik butonun textini tutan bir özelliktir. [Category("SemButton"), DefaultValue("TextName"), Description("Butonn Text Özelligi")] public string Text { get { return _text; } set { _text = value; } } //SemButton adlı bir özellik grubuna eklenecek bu özellik butonun genisligini tutan bir özelliktir. [Category("SemButton"), DefaultValue("ButtonWidth"), Description("Butonun Genisligi")] public string ButtonWidth { get { return _buttonWidth; } set { _buttonWidth = value; } } //SemButton adlı bir özellik grubuna eklenecek bu özellik butonun yüksekligini tutan bir özelliktir. [Category("SemButton"), DefaultValue("ButtonHeight"), Description("Butonun Yüksekligi")] public string ButtonHeight { get { return _buttonHeight; } set { _buttonHeight = value; } } protected override void RenderContents(HtmlTextWriter writer) { try { string popupButton; catch { writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write("Popup Pencere..."); writer.RenderEndTag(); } } } } Kodumuzu tamamladık simdi testing için projemize bir web site ekleyelim. Ekledikten sonra Web Site'in referanslarına Projects sekmesinden WebControl Libraryi ekleyelim. Simdi toolbox'a bakalım eklenmismi (: Kontrolümüz eklendi Simdi sayfamıza ekleyelim. Simdi özelliklerimizi ayarlayalım. Evet olusturdugumuz özellik grupları geldi. Ve biz özelliklerimizi yazdık. Simdi projeyi çalıstıralım. Ve butona tıklayalım (: Bu makalemizinde de sonuna geldik. Tesekkür eder iyi çalısmalar dilerim. Sem GÖKSU MCP | MCAD.NET | MCTS | ASP.NET MVP Örnek Kodlar için mail adresimi kullanabilirsiniz semgoksu@semgoksu.com Kaynaklar www.codeproject.com
12 Oca 2007 Visaul Studio ile CommandLine(CMD) Aracını Çalıştırmak Kategori: .NET Framework Etiketler: C#.NET Framework 5 Yorum Merhaba arkadaşlar bu makalemizde Visaul Studio içerisinde commandline aracının nasıl çalıştırıldığına bakacağız.GirisWindows uygulamaları içinde Dos Command Line aracı üzerinde yapabildigimiz herseyi yapabiliriz. Windows formaları içerisine bi takım kodlar ekleyerek CommandLine aracını kullanmak oldukça basitdir. Bu kodları System.Diagnostics NameSpace'i içerisindeki Process classının altında bulabiliriz.System.DiagnosticsProcess Class Local Sistem processlerini baslatmak ve durdurmamamıza, remote processlere ve locale erismemize izin veren bir classtır. Kullanımı asagıdaki gibidir.VBPublic Class Process Inherits ComponentDim instance As ProcessC#Public Class Process: ComponentProcess instance;Process, PC üzerinde çalısarak bir processe erismeyi saglar. Bir Process belirli zamanlarda bir uygulamayı çalıstırır. Process görüntüleme ve kontrol uygulamalarını baslatmak ve durdurmak için çok kullanıslıdır. Process componenetini kullanarak yeni bir process baslatabilir yada çalıstırılacak processlerin listesini belirleyebilirsiniz. Evet arkadaslar Projemizde kullanacagımız namespace ve sınıfımızı tanıdıktan sonra örnegimize geçelim.ÖrnekÖrnek uygulamamızda Command Line aracındaki gibi komutları yazıp çalıstıracagız. Örnek vermek gerekirse Ipconfig yazıp ip bilgimizi, ping 127.0.0.1 yazıp kendi makinamızı pinglememizi, notepad yazıp Notepad'i çalıstıracagız(Simdilik aklıma gelenler bunlar).Bu açıklamalardan sonra Visual Studio üzerinde bir windows uygulaması açalım. Projemizi olusturduktan sonra formumuza, 1 Button ve 2 de textbox ekleyelim. 1. Textbox'a cmd üzerinde yazdıgımız komutları yazacagız ve 2. textboxda da sonucu ekrana yazdıracagız. Evet yukarıdada belirttigim gibi butona tıkladıgımızda CMD'deki gibi komutumuz çalıstırılacak. Simdi bu söylediklerimizi koda dökelim.C#private void btnRun_Click(object sender, EventArgs e){System.Diagnostics.Process p = new System.Diagnostics.Process();//process’in instancesini aldıkp.StartInfo.FileName = "cmd";//Çalıstırılacak filep.StartInfo.Arguments = "/c " + textBox1.Text;//file içerisine gönderilecek argumentsp.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;//Komut çalıstıgında Cmd penceresinin açılmasını engelledikp.StartInfo.CreateNoWindow = true;//Pencere Açılmasını engellerp.StartInfo.RedirectStandardOutput = true;p.StartInfo.UseShellExecute = false;p.Start();//process Çalıstırılırstring output = p.StandardOutput.ReadToEnd();//Çalısan Processin sonucutextBox2.Text = output;//Sonuç textboxa yazılır}VB#Private Sub btnRun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRun.ClickDim p As New System.Diagnostics.Process()p.StartInfo.FileName = "cmd"p.StartInfo.Arguments = "/c " + textBox1.Textp.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hiddenp.StartInfo.CreateNoWindow = Truep.StartInfo.RedirectStandardOutput = Truep.StartInfo.UseShellExecute = Falsep.Start()Dim output As String = p.StandardOutput.ReadToEnd()textBox2.Text = outputEnd SubEvet kodumuzu yazdık ve artık deneyebiliriz. Ipconfig yazdık ve sonucumuzu bizim arayüzümüze verdi. Baska bir komut deneyelim. Kendimizi pingleyelim.Son olarak Hesap makinasınıda çalıstıralım : )Evet gördügümüz gibi basarılı bir sekilde vs.net içerisinde cmd de yaptıgımız tüm islemleri yaptık.Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim.Sem GÖKSUMCP | MCAD.NET | MCTSÖrnek Kodlar için mail adresimi kullanabilirsinizsemgoksu@semgoksu.comKaynaklarhttp://msdn.microsoft.com