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:

Software | Articles | Windows

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading





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

Şifahen değil acilen!

Anket

Yazılım geliştirirken en keyif aldığınız alan hangisi?




Sonuçlar

Son Yorumlar

Comment RSS

Calendar

<<  Ocak 2009  >>
PaSaÇaPeCuCuPa
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

Yazıları geniş takvimde göster

Ne Dinliyorum?

Kirpi - TearDrop (8 saat önce)
Kirpi - My Name Is Kirpi (9 saat önce)
Kirpi - The Song (9 saat önce)
Kirpi - Spell (9 saat önce)
Huseyin Karadayi - Bonus Track Funk Clarinet (String Mix) (9 saat önce)
Huseyin Karadayi - Sacred Gate (9 saat önce)
Huseyin Karadayi - Exotica (9 saat önce)
Huseyin Karadayi - Take Me Away / No Time To Waste (Vocal By Melis Sökmen) (9 saat önce)
Huseyin Karadayi - Eyes Don't Lie (Duet By Enoi & Funky C) (9 saat önce)
Huseyin Karadayi - This Way (Usy Groove) (9 saat önce)

Ne Okuyorum?


Haftanın Sözü


"Sukûnetim asaletimdendir;
Lâkin her lâfa verilecek bir cevabım var.
Bir bakarım lâf lâfmı diye,
Birde bakarım söyleyen adammı diye.."

Mevlânâ Celaleddin-i Belhi Rumi
(1207-1273)

Adanmış Hayatlar

"Zaten aşklar hep yalan dolan,
Sonu hep acı hüsran.
Bize her sevdadan geriye kalan
Sadece Galatasaray..
"

Son Dakika

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı

Ziyaretçi Sayısı