Jump to content

How Do I ? - 1


wmismail

Recommended Posts

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.Processislem = newSystem.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.Processislem = newSystem.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.

stringsonmetin = "";

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.IPAddressadr inadresler)

{

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.

privatevoidtimer1_Tick(objectsender, EventArgse)

{

//bu satırıda kullanabiliriz

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

//bu satırı da kullanabiliriz

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

this.timer1.Stop();

}

privatevoidcontextMenuStrip1_Opening(objectsender, CancelEventArgse)

{

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?

privatevoidForm1_Load(objectsender, EventArgse)

{

this.textBox1.ContextMenu = newContextMenu();

}

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

privatevoidbutton1_Click(objectsender, EventArgse)

{

Pointp = 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:

privatevoidbutton1_Click(objectsender, EventArgse)

{

Pointp = 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 usingSystem.Diagnostics;namespaceini mutlaka projemize eklememiz gerekmektedir.

stringIP = "193.1.1.197";

stringstr2 = " ";

ProcessStartInfoinfo1 = newProcessStartInfo();

Processp = 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();

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

if(sonuc > -1)

{

break;

}

}

catch(Exceptionex)

{

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

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...