C# Bilgisayarı Kapatma

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde kullanıcının istediği bir saatte bilgisayarı kapatmayı anlatacağım. Hadi başlayalım !
Öncelikle kullanıcıdan bir saat bilgisi alacağımız için, C# Windows Forms’ta saat seçimi yapmamıza olanak sağlayan DateTimePicker kontrolünü kullanacağız. Hemen formumuza bir tane DateTimePicker ekleyelim. Ayrıca kapatma işlemini tetikleyebilmek içinde bir tane Button ekleyelim. Kullanıcı DateTimePicker ile istediği saati seçtikten sonra Button’a tıklayacak ve seçilen saatte bilgisayar kapanacaktır. E peki bu nasıl olacak derseniz, burada Windows komutlarını kullanacağız. Peki hangi komut derseniz, shutdown komutu. Bu komutu CMD’yi açıp yazdığınızda bilgisayarınız 30 saniye sonra kapanacaktır fakat birkaç parametre ekleyerek bu kapatmayı biraz özelleştirebiliriz. Mesela -f parametresi ekleyerek bilgisayar kapatılırken açık olan tüm uygulamaları da kapattırabiliriz. -t parametresi ekleyip sonrada saniye cinsinden gecikme süresini eklersek belirttiğimiz süre sonunda bilgisayarınız kapatılacaktır. Hah işte bizde tam olarak -t parametresini kullanacağız.
Şöyle bir düşünelim, kullanıcı bilgisayarı kapatmak istediği saati seçti diyelimki. Biz şu anki saatten kullanıcının seçtiği saate kadar kaç saniye olduğunu, yani seçilen saate kaç saniye kaldığını hesaplayıp shutdown komutunun -t parametresi ile verirsek, tamda kullanıcının seçtiği saatte bilgisayar kapanır, öyle değil mi ? Cevap evet. Bizde tam olarak bunu yapacağız. Hadi şimdi gelin butona tıklandığında kapatma işlemini tetikleyeceğimiz için forma eklediğimiz Button’un tıklama eventini oluşturalım ve seçilen saat ile şu anki saat arasında kaç saniye olduğunu bulalım.
void Button1_Click(object sender, EventArgs e)
{
int toplamSaniye = Convert.ToInt32((DateTime.Now - dateTimePicker1.Value).TotalSeconds);
if(toplamSaniye < 0)
toplamSaniye *= -1;
}
İlk satırda aradaki süreyi saniye cinsinden bulduk fakat eğer seçilen saat şu anki saatten büyükse (yani örneğin saat şimdi 11:00 ama kullanıcı 21:00 seçerse) o zaman sonuç negatif olacaktır. Ama shutdown komutuna negatif bir değer gönderemeyeceğimiz için sonucun negatif olup olmadığına if şartı ile baktık ve eğer sıfırdan küçükse (yani negatif ise) -1 ile çarparak toplamSaniye değişkenini pozitife çevirdik. Şimdi geldik asıl işi yapan, yani bilgisayarı toplamSaniye değişkeninin değeri kadar saniye sonra kapatacak olan shutdown komutunu çalıştırmaya. Burada CMD komutu çalıştıracağımız için System.Diagnostics kütüphanesini kullanacağız. Tabiki doğrudan bu kütüphaneyi kullanmayacağız 🙂 Bu kütüphane altında bulunan Process sınıfına ait olan static tipteki, yani bulunduğu sınıfın yeni bir nesnesi türetilmeden ulaşılabilen Start() fonksiyonunu kullanacağız. Bu fonksiyon 6 farklı şekilde kullanılabiliyor fakat biz string tipte komut ve string tipte parametreleri aldığı halini kullanacağız. shutdown komutunu kullanacağımızı ve göndereceğimiz parametreleri söyledik, e hadi o zaman kodunu yazalım
System.Diagnostics.Process.Start("shutdown", "-s -f -t " + toplamSaniye);
Projeyi çalıştırıp bir saat seçtiğiniz zaman göreceksiniz ki seçtiğiniz saatte bilgisayarınız otomatik olarak kapanacaktır. Test etmek isterseniz yakın bi zaman seçinki çok fazla beklemek zorunda kalmayın 🙂 Evet bu dersimizde bu kadardı, yazdığımız kodları toplu olması için aşağıya bırakıyorum;
void Button1_Click(object sender, EventArgs e)
{
int toplamSaniye = Convert.ToInt32((DateTime.Now - dateTimePicker1.Value).TotalSeconds);
if(toplamSaniye < 0)
toplamSaniye *= -1;
System.Diagnostics.Process.Start("shutdown", "-s -f -t " + toplamSaniye);
}
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.