How do I ? - 1

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 12:08
Namespacelerle beraber bizlere birçok işlemde yardımcı olabilicek metodlar gelmiştir. Bunların hepsini biranda öğrenmek mümkün değildir. İşe yarayanlarıyla beraber uygulamaya ve öğrenmeye başlayınca ne kadar işlevsel olduğunu görüp, zaman ve sabırla araştırmak bize namespaceler ile çeşitli metodların ne kadar önemli olduğunu gösterecektir. Bu makale de konu olarak uygulamalarımızda bize yardımcı olabilecek temel kısayolları ve ipuçlarını esas almıştır. Şimdi sorulara ve cevaplara geçelim J


1. Uygulamamızın içinden başka bir exe dosyasını nasıl çalıştırırız?

 

System.Diagnostics.Process islem = new System.Diagnostics.Process();

islem.StartInfo.FileName = "calc.exe";

islem.StartInfo.Arguments = "";

islem.Start();

FileName özelliği çalıştırılacak olan dosyanın ismini belirler. Eğer sistem içerisinde bilinen exe dosyası ise sadece adını yazmak yeterlidir. Ama sistem tarafından tanınmıyorsa tam adresini yazmak gerekir. Sistemin tanıdığı dosyaların adresleri “path” sistem değişkenine tanımlanmıştır.

Arguments özelliği ise dosya açılırken kullanılması gereken parametreler varsa onları belirlemek için kullanılır. Aşağıdaki kod parçasında Excel uygulaması test.xls dosyası ile birlikte açılmaktadır.

System.Diagnostics.Process islem = new System.Diagnostics.Process();

islem.StartInfo.FileName = @"C:\Program Files\Microsoft Office\Office11\EXCEL.EXE";

islem.StartInfo.Arguments = @"C:\test.xls";

islem.Start();

Aşağıdaki kod parçacıkları da aynı işlevi yerine getirirler:

System.Diagnostics.Process.Start("calc.exe");

//ve

System.Diagnostics.Process.Start(@"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE", @"C:\test.xls");

2.Uygulamamızın exe dosyasının çalıştığı klasör gibi çevre bilgilerini nasıl bulabilirim?

Aşağıdaki örnekte “Environment” sınıfı kullanılmıştır. Environment sınıfı ayrıca özel klasörlere ulaşmamızı da sağlar. Örneğin içerisinde bir Button ve RichTextBox bulunmaktadır. Aşağıdaki kod Button nesnesinin Click eventine yazılacak olan kod parçasıdır.

string sonmetin = "";

sonmetin += "aktif klasör:\t\t" + Environment.CurrentDirectory.ToString();

sonmetin += "\nbilgisayar ismi:\t\t" + Environment.MachineName;

sonmetin += "\nişletim sistemi:\t\t" + Environment.OSVersion.Platform + " / " + Environment.OSVersion.Version;

sonmetin += "\nsistemklasörü:\t\t" + Environment.SystemDirectory;

sonmetin += "\nbilgisayarın açık kalma süresi:\t" + Environment.TickCount / 1000;

sonmetin += "\naktif kullanıcı:\t\t" + Environment.UserName;

sonmetin+= "\nkullanılabilir hafıza:\t\t" + Environment.WorkingSet / 1024 + "KB";

sonmetin+= "\nFramework Versiyonu:\t" + Environment.Version.ToString();

this.richTextBox1.Text=sonmetin;

3. Sistemdeki IP adreslerini nasıl bulabilirim?

Formumuzda bir button ve bir listbox olduğunu düşünelim. Button’un click eventine şunları yazıyoruz:

System.Net.IPAddress[] adresler = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList;

foreach (System.Net.IPAddress adr in adresler)

{

this.listBox1.Items.Add(adr.ToString());

}

4. Uygulamanın exe dosyasının adresini nasıl bulabilirim?

Bu bilgiye ulaşmanın birden fazla yolu vardır. Aşağıdaki üç satır da bu bilgiyi bizlere bulacaktır:

-> Application.ExecutablePath

-> Environment.CurrentDirectory

-> AppDomain.CurrentDomain.BaseDirectory

5. Bir içerik menüsünü belli bir süre sonra otomatik olarak nasıl kapatabilirim?

İçerik menüleri sağ tıklayarak açılan menülerdir. Normalde by menüden bir seçenek seçene kadar kapanmazlar. Ancak aşağıdaki örnekte bu menü 2 saniye sonra kapanmaktadır. Bu örnek için bir ContextMenuStrip ve bir Timer nesnesi gerekmektedir. ContextMenuStrip nesnesine birkaç öğe ekledikten sonra kodlarımızı yazmaya başlayabiliriz.

privatevoid timer1_Tick(object sender, EventArgs e)

{

//bu satırıda kullanabiliriz

//SendKeys.Send("(ESC)";

//bu satırı da kullanabiliriz

SendKeys.Send(Keys.Escape.ToString());

this.timer1.Stop();

}

privatevoid contextMenuStrip1_Opening(object sender, CancelEventArgs e)

{

this.timer1.Interval = 2000;

this.timer1.Start();

}

SendKeys sınıfının send metodu klavye tuşlarına basılmasa da basılmış gibi davranılmasını sağlar.

6. Textbox gibi metin nesnelerinin varsayılan içerik menülerini nasıl iptal edebilirim?

privatevoid Form1_Load(object sender, EventArgs e)

{

this.textBox1.ContextMenu = newContextMenu();

}

7. Fare imlecinin o anki konumunu nasıl bulabilirim?

privatevoid button1_Click(object sender, EventArgs e)

{

Point p = Cursor.Position;

MessageBox.Show(p.X + " : " + p.Y);

}

Yukarıdaki kod parçası fare imlecinin ekranın sol üst köşesine göre koordinatlarını bulmaktadır. Formun sol üst noktasının koordinatlarını bulmak için aşağıdaki kodu kullanabilirsiniz:

privatevoid button1_Click(object sender, EventArgs e)

{

Point p = Cursor.Position;

MessageBox.Show((p.X - this.Location.X) + " : " + (p.Y - this.Location.Y));

}

8. Bir bilgisayarın Mac adresini nasıl bulabilirim ?

Bunun için öncelikle using System.Diagnostics;namespaceini mutlaka projemize eklememiz gerekmektedir.

string IP = "193.1.1.197";

string str2 = " ";

ProcessStartInfo info1 = newProcessStartInfo();

Process p = newProcess();

info1.FileName = "nbtstat";

info1.RedirectStandardInput = false;

info1.RedirectStandardOutput = true;

info1.Arguments = "-A " + IP;

info1.UseShellExecute = false;

p = Process.Start(info1);

while (str2 != null)

{

try

{

str2 = p.StandardOutput.ReadLine();

int sonuc = str2.Trim().ToLower().IndexOf("mac adress", 0);

if (sonuc > -1)

{

break;

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message + " / " + ex.StackTrace);

}

}

MessageBox.Show(str2);

Makalemizin ilk bölümü böylelikle sonlanmakta. İkinci bölümünde de yine bu şekilde birkaç ipucunu öğrenip, kısayolları kavrayacağız. Umarım faydalı olmuştur. 2. bölümde görüşmek üzere :)


Kaynaklar:

Microsoft C#.Net Step by Step – John Sharp, Jon Jagger
Visual C#.Net 2005 – Abdullah Zengin

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Yazılım Geliştirme | Makaleler | Windows



Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Paslaş

       

Anket

Mesleğinizden arta kalan zamanınızı nelere harcıyorsunuz?







Sonuçlar

Calendar

<<  Şubat 2012  >>
PaSaÇaPeCuCuPa
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

Yazıları geniş takvimde göster

Ne(ler) Okuyorum?


Ne Dinliyorum?

Zeki Müren - Dediler Zamanla Hep (3 saat önce)
Şükrü Tunar - Rast Taksim (3 saat önce)
Şükrü Tunar - Aydın Zeybeği (3 saat önce)
Şükrü Tunar - Uşşak Çiftetelli (3 saat önce)
Şükrü Tunar - Uşşak Taksim (3 saat önce)
Şükrü Tunar - Anadolu Oyun Havası (4 saat önce)
Şükrü Tunar - Hüzzam Taksim (4 saat önce)
Şükrü Tunar - Hovarda Zeybeği (4 saat önce)
Şükrü Tunar - Uşşak Çiftetelli (4 saat önce)
Şükrü Tunar - Uşşak Taksim (4 saat önce)

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı