Displayname | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar displayname

Windows Phone 8 SaveRingtoneTask ile melodi kaydetme

19 August 2013 Yorum yapılmamış

Windows Phone 8 için geliştirdiğiniz uygulamada, kullanıcıya telefonun çalma melodisi kaydetme özelliği vermek istiyorsunuz. Örneğin bir bankaya ait olacak uygulama geliştiriyorsunuz ve uygulamanın kullanıcısının telefonun çalma melodisi olarak bankanın reklam jingle‘ını seçebilmesini istiyorsunuz.

Windows Phone SDK ile gelen SaveRingtoneTask sınıfı sayesinde bunu başarabilirsiniz. SaveRingtoneTask sınıfının kullanımı oldukça basit, Windows Phone 8 için Share Task’larının kullanımı makalesinde bahsettiğim share task‘ların kullanımına çok benziyor;

var task = new SaveRingtoneTask();
task.Completed += delegate(object _sender, TaskEventArgs _e)
{
	if(_e.TaskResult == TaskResult.OK)
	{
		MessageBox.Show("Ringtone kaydedildi!..");
	}
};
task.Source = new Uri("appdata:/cemilusta.wma");
task.DisplayName = "cemil usta akçaabat köftesi :)";
task.Show();

cemil usta akçaabat köftesi reklam jingle indir

C# Bir Windows Service’in Durumunu Belirlemek

02 September 2010 1 yorum

Bir Windows Service‘ine bağımlı uygulama geliştirdiğiniz zaman, ilgili Windows Service‘in durumunu belirlemek kritik öneme sahip oluyor. Service, uygulamamızı destekleyen, kendi geliştirdiğimiz bir service olabileceği gibi, Windows ile birlikte gelen service’lerden biri de olabilir.

ServiceController Sınıfı

ServiceController sınıfı, System.ServiceProcess namespace’inde yer alır. Lokal makinadaki veya Uzak makinadaki bir windows service‘ini temsil eder, ilgili service’in sorgulanmasına ve çeşitli özelliklerinin değiştirilmesine izin verir.

ServiceController Sınıfının Kullanımı

ServiceController sınıfını projelerimizde kullanabilmek için, projemize System.ServiceProcess.dll dosyasını referans olarak eklemeliyiz.

Daha sonra, kodumuzun using kısmına System.ServiceProcess eklemeliyiz;

using System.ServiceProcess;

Lokal makinadaki bir service’in durumunu belirleme
Lokal makinadaki bir service’in durumunu belirlemek için, öncelikle ServiceController sınıfından yeni bir örnek oluşturmamız lazım.

Sordulamak istediğimiz windows servis’i ile değişkenimizi ilişkilendirmek için kullanabileceğimiz üç yöntem var.

  • ServiceName özelliği
  • DisplayName özelliği
  • ServiceController constructor‘ı

Örnek olarak Print Spooler servisini sorgulamak için;

ServiceController ServiceByServiceName = new ServiceController();
ServiceByServiceName.ServiceName = "Spooler";

ServiceController ServiceByDisplayName = new ServiceController();
ServiceByDisplayName.DisplayName = "Print Spooler";

ServiceController ServiceByConstructor = new ServiceController("Spooler");

Yukarıdaki kodda görebileceğiniz gibi ServiceController sınıfımızı tanımladıktan sonra, Status özelliğini kullanarak, servis’in durum bilgisini sorgulayabiliriz.

Status özelliği ServiceControllerStatus enum tipinde değer döndürür;

  • ContinuePending: Servis durdurulmuş ve başlatılıyor
  • Paused: Servis durdurulmuş
  • PausePending: Servis durduruluyor
  • Running: Servis çalışıyor
  • StartPending: Servis başlatılıyor
  • Stopped: Servis çalışmıyor
  • StopPending: Servis durduruluyor

Servis’in çalıştığı durumu kontrol etmek için kodumuzu aşağıdaki gibi yazabiliriz;

ServiceController sc = new ServiceController("Spooler");

if (sc.Status == ServiceControllerStatus.Running)
{
	MessageBox.Show("Servis çalışıyor");
}

Not: Servis durumunu sorgulayan uygulamayı çalıştıran kullanıcının yeterli yetkisi bulunmalıdır. Aksi taktirde bir hata fırlatılacaktır.

Uzak makinadaki bir service’in durumunu belirleme

Uzak makinadaki bir service’in durumunu belirleme, lokal makinadaki service’in durumunu belirlemek kadar kolaydır. Tek yapmamız gereken MachineName özelliğine uzak makinanın adresini girmek.

Uzak makinadaki Print Spooler servisini sorgulamak istediğimizde;

ServiceController sc = new ServiceController("Spooler", "UzakSunucu");

if (sc.Status == ServiceControllerStatus.Running)
{
	MessageBox.Show("Servis çalışıyor");
}

LINQ ile Bilgisayara Kurulu Programları Sorgulamak

30 January 2010 3 yorum

Bu yazımda, bilgisayarda kurulu programları, LINQ kullanarak nasıl sorgulayacağımızı inceleyeceğim.

Bilgisayara kurduğumuz her program bilgisayarın Registry‘sine kurulum ile ilgili bir kayıt bırakır.

Bilmeyenler için not: Registry’yi açmak için komut satırına regedit yazmanız yeterli.

Registry ile ilgili daha detaylı bilgi için MSDN: Registry sayfasına bakmanızı tavsiye ederim.

Registry‘nin LocalMachine\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall dalında, bilgisayara kurulu olan uygulamalara ve bu uygulamalar ile ilgili bilgilere ulaşılabilir.

Uygulamamızda, Registry class’ını kullanabilmek için, kodumuza aşağıdaki namespace’i eklememiz gerekiyor.

using Microsoft.Win32;

Hemen form tasarlamakla başlayalım.

Bilgisayarda Kurulu Programlar Ana Form Ekran Görüntüsü

Yukarıdaki formu oluşturduktan sonra btnGetir butonunun Click olayına aşağıdaki kodu yazalım;

using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"))
{
	var programlar = from k in rk.GetSubKeyNames()
					 let r = rk.OpenSubKey(k)
					 select r.GetValue("DisplayName");

	foreach (string program in programlar)
		if (!string.IsNullOrWhiteSpace(program))
			lbProgramlar.Items.Add(program);
}

Registry sınıfının static LocalMachine üyesi üzerinden OpenSubKey() method’unu çağırıyoruz.

Daha sonra yaptığımız;

from k in rk.GetSubKeyNames()
let r = rk.OpenSubKey(k)
select r.GetValue("DisplayName");

LINQ sorgusunu yazmak oluyor. Bu sorgu, ilgili Registry dalının altında bulunan tüm dalları açar ve içlerindeki DisplayName anahtarının değerini getirir.

Son olarak basit bir foreach döngüsü ile bu değerleri lbProgramlar Listbox kontrolüne dolduruyoruz.

İşte benim bilgisayarımdaki sonuç;

Bilgisayarda Kurulu Programlar Çalıştıktan Sonraki Ekran Görüntüsü