SEAS Windows Zamanlayıcı ( Otomatik Windows Kapatma )

Admin tarafından yazılmıştır. 25. Kasım 2008 20:40

Program Adı : SEAS Windows Zamanlayıcı

Framework  : .NET 3.5

IDE : Visual Studio 2008

Açıklama : Kullanıcının belirlediği saatte windows kapanması veya bu sırada alarm ekleyerek hatırlatma notu oluşturması.

download

 ------------------------------------------------------------------------

Yapısal bilgileri verdikten sonra gelelim yazımızın amacına . Program çok kompleks bir yapı izlenilmeden oluşturulup yeni başlayanlara yol göstermesi açısından örnek bir projedir.Böyle yapsan iyi olur falan demeyin oldukça basit anlamda oluşturuldu kodlama dediğim gibi  :)  . Kaynak kodu paylaşıma açık olduğundan projeyide paylaşıyorum.Yeni başlayanların registry kayıt , tarih işlemleri vb.  meraklarını giderebilir.

 Kodlarımızıda açıklamaya başlayabiliriz artık :)

 

 

Form1 > Anaform kod başlangıç

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Media;

namespace WindowsKapanma
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //bilgisayar kapatma saatini girdikten sonra Alarm kur dersek o kapatma işleminden önce programın uyarmasını sağlayabiliriz.Bu uyarma işlemi içinde çalan sesin ve hatırlatma notunun bulunucağı değişkenleri tanımlıyoruz.
        string dosyaYol = @"icons/alarm.wav";
        string hatirlatmaNotu;

        //Programda genel olarak saat değer kontrolü yapıyoruz.numericUpDown'da saat 3 seçildiğinde göze kötü gözüktüğünden eğer seçilen değer 10'dan küçükse numericUpDown nesnesinden seçilen rakamın önüne 0 eklemesini değilse yani seçilen değer 10 ve üstüyse direk yazmasını sağlıyoruz.Programda bir daha seçilen saati almak istersek sadece bu metotdu çağırmamız yetecektir.Çünkü return ile oluşan değeri döndürüyoruz.
        string Saat()
        {
            if (nuSaat.Value <10)
                return "0" + nuSaat.Value.ToString();
            else
                return nuSaat.Value.ToString();
        }

        //Saat metodunda yapılan işlemin aynısını Dakika metodu içinde yapıyoruz.
        string Dakika()
        {
            if (nuDakika.Value < 10)
                return "0" + nuDakika.Value.ToString();
            else
                return nuDakika.Value.ToString();
        }

        //Süreyi başlan butonumuzun click olayı...
        private void btnBasla_Click(object sender, EventArgs e)
        {
                //Programımızı çalıştırabilmemiz için Registry'e olusturulanAnahtar adında bir değer atıyoruz.Bu işlemi frmKayıt'ta anlatıcam.Sadece burada frmKayıt'ta kaydedilen değeri Registry'den okuyup kod adındaki string değişkenimize aldığımızı bilmemiz yeter.Demekki Registry'den çok kolay okuyabiliyoruz bir veriyi.
                string kod = Registry.CurrentUser.OpenSubKey("SEAS").GetValue("olusturulanAnahtar").ToString();
               
                //Burada frmKayıt formunu kullanarak Registry'ye kayıt yapıldıysa veya yapılmadıysada kod adındaki değerimizden anlıyoruz.Eğer kod değişkenimizin uzunlugu 1'den büyükse bu anahtarın Registry'ye kayıt edildiği anlamına gelir.1'den uzunsa uzunlugu if blogunu çalıştırıyoruz.
                if (kod.Length > 1)
                {
                    //Anahtar kayıt edildiğine göre artık üst taraftaki menümüzde bulunan Kayıt Et isimli menümüzü gizleyebiliriz.Göstermeye gerek yok.
                    kayıtEtToolStripMenuItem.Visible = false;
                    btnBasla.Enabled = true;

                    //Kapatma işlemini yapan Timer'ızmıı başlatıyoruz.
                    timer1.Start();

                    //lblDurum isimli label'a ise o anda seçilen değerler ile kapanma saatini gösteriyoruz.Yukarıdaki metotlarımızı çağırıyoruz.
                    lblDurum.Text = "Sistem kendini saat " + Saat() + ":" + Dakika() + " olduğunda kapatacaktır.";

                    //Basit mantık işlemleri ile butonlarımızı işlemimize uyguluyoruz.
                    pbIslem.Visible = true;
                    nuDakika.Enabled = false;
                    nuSaat.Enabled = false;
                    btnIptal.Enabled = true;
                    btnBasla.Enabled = false;
                    pbIslemDurdu.Visible = false;

                    //Başla butonuna basıncada sağ alt tarafda balon çıkartıp programın aktif olduğunu ve kapanma saatini gösteriyoruz.O balonun adı notifyIcon oldugunu öğrenmiş olduk.
                    notifyIcon1.ShowBalloonTip(0, "Seas Windows Zamanlayıcı", "Program aktif\nSistemin kapanma saati " + Saat() + " : " + Dakika(), ToolTipIcon.Info);

                    //Seçilen saat isimli değişkenimize kapatma işlemini başlattıgımızdaki değerlleri kaydediyoruz.Bu numericUpDown'daki değerleride Registry'e kaydedeceğiz.
                    string secilenSaat = nuSaat.Value.ToString()+ ":"+ nuDakika.Value.ToString();

                    //Registry sınıfını kullanarak registry'in altına Current User'ın altına SEAS adında bir klasör oluşturup SetValue diyerek deger atacağımızı belirliyoruz.Set Valuenin parametrelerine Registry'e kaydedilecek isimi ve o isime kaydedilecek değeri belirliyoruz.Bu değer kapatma işleminin başladığı yani numericUpDown'daki değerler.
                    Registry.CurrentUser.CreateSubKey("SEAS").SetValue("alarmSaati",secilenSaat);
                    süreyiDurdurToolStripMenuItem1.Enabled = true;
                    asdToolStripMenuItem2.Enabled = false;
                }
               
                //if blogunun üstünde registry'den okudugmuz deger 1'den büyük degilse yani deger yoksa programımız kayıt edilmemiş oluyor.Bu yüzdende kontrollerimizi pasif hale getiriyoruz.
                else
                {
                    nuDakika.Enabled = false;
                    nuSaat.Enabled = false;
                    btnIptal.Enabled = true;
                    süreyiDurdurToolStripMenuItem1.Enabled = true;
                    btnBasla.Enabled = false;
                    pbIslemDurdu.Visible = false;
                }
        }

        //inrerval degeri 1000'dir. Yani 1 saniye.Bu timer kapatma değerlerini girdikten sonra saymaya başlayacak olan timerimiz.
        private void timer1_Tick(object sender, EventArgs e)
        {
            //Saati belirlediğimiz nesnedeki değer ile her saniye almış oldugumuz sistem saati değerini karşılaştırıyoruz.Datetime struct'ının Now metodunu kullanıp hour dersek int olarak o anki saati verir.Bu değeri metinsel olarak karşılaştırma için ise stringe çeviriyoruz.
            if (nuSaat.Value.ToString() == DateTime.Now.Hour.ToString())
            {

                //Yukarıdaki sistem saati ile Saat kontrolümüzdeki değer aynı ise bu sefer Dakika kontrolümüz ile her saniye sistem dakikasını alarak kontrol ediyoruz.Eğer sistem dakikası ile kontrolümüzdeki dakika aynı ise çalışacak olan if blogu.
                if (nuDakika.Value.ToString() == DateTime.Now.Minute.ToString())
                {
                    //Saat ve Dakika kontrollerimiz sistem saatiyle aynı ise  Diagnostics namespace'in Process sınıfının Start metodunu kullanarak parametrelerine yapacak oldugumuız işlemi yani shutdown yazarak yapacak oldugumuz işlemi belirliyoruz.
                    System.Diagnostics.Process.Start("shutdown", "-f -s");
                    lblDurum.Text = "Süre doldu.30 saniye sonra sistem kendini kapatacaktır";
                }
            }
            lblStatusAlt.Text = "Sistem Tarihi : " + DateTime.Now.ToString();
        }

        //Sistem saatini kurduktan sonra iptal etmek istersek kullanacagımız buton.
        private void btnIptal_Click(object sender, EventArgs e)
        {
            //Timer nesnemizi durduruyoruz yani kapatma işlemini kontrol eden timer'ımız.
            timer1.Stop();
            lblDurum.Text = "Kapatma işlemini durdurdunuz";

            //Doğal olarak kapatma işlemimizide iptal ediyoruz.
            System.Diagnostics.Process.Start("shutdown", "-a");
            pbIslem.Visible = false;
            pbIslemDurdu.Visible = true;
            nuDakika.Enabled = true;
            asdToolStripMenuItem2.Enabled = true;
            nuSaat.Enabled = true;
            btnBasla.Enabled = true;
            süreyiDurdurToolStripMenuItem1.Enabled = false;
            btnIptal.Enabled = false;

            //Alt tarafta balon olarak uyarımızıda veriyoruz.
            notifyIcon1.ShowBalloonTip(0, "Seas Windows Zamanlayıcı", "Program aktif\nKapatma işlemi iptal edildi" , ToolTipIcon.Info);
        }

        //Formumuzun çarpısına basınca çalışacak olay
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;

            //Formu gizliyoruz
            this.Visible = false;

            notifyIcon1.ShowBalloonTip(0, "Seas Windows Zamanlayıcı", "Program aktif\nSistemin kapanma saati " + Saat() + " : " + Dakika(), ToolTipIcon.Info);
        }

        //
        private void açToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Sağ alt taraftaki iconumuzun aç menüsüne tıklayınca formumuzu görünür yapıyoruz.
            this.Visible = true;
        }

        private void kapatToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //iconumuzun kapat'ına basarsak uygulamamızı kapatıyoruz.
            Application.ExitThread();
        }

        private void hakkındaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Hakkında bölümümünü açıyoruz
            frmHakkinda f = new frmHakkinda();
            f.ShowDialog();
        }

        private void notifyIcon1_DoubleClick(object sender, EventArgs e)
        {
            //iconumuza çift tıklarsakda formumuza eklemiş oldugumuz notifyIcon'umuzun DoubleClick Eventine formuzmu göster diyorz.
            this.Visible = true;
        }

        //Anaformumuzun yüklenmesi
        private void Form1_Load(object sender, EventArgs e)
        {
           
            lblStatusAlt.Text = "Sistem Tarihi : " + DateTime.Now.ToString();
            try
            {
                //Alt taraftaki Menu Gizle metodumuzumu çağırıyoruz.Bunu try blogunda belirtiyoruz.Eger bu blok'ta problem olursa Catch bloguna geçip program oradan devam edecektir.MenüGizle() metodundaki if blogu yani kayıt işlemi yapıldıysa formumuzdaki menüleri ve butonları aktif yapıcak
                MenuGizle();
                nuSaat.Value = (decimal)DateTime.Now.Hour;
                nuDakika.Value = (decimal)DateTime.Now.Minute + 2;
            }
            catch
            {
                lblStatusAlt.Text = "Sistem Tarihi : " + DateTime.Now.ToString();
                nuSaat.Value = (decimal)DateTime.Now.Hour;
                nuDakika.Value = (decimal)DateTime.Now.Minute+1;
                menuleriYokSay();
                lblDurum.Text = "Programı kullanabilmek için " + "İşlemler/Kayıt Et" + " menüsünden anahtarı giriniz";
            }
            süreyiDurdurToolStripMenuItem1.Enabled = false;
         }

        //Kayıt yapıldıysa menüleri aktif yapan metod
        public void MenuGizle()
        {
            string kod = Registry.CurrentUser.OpenSubKey("SEAS").GetValue("olusturulanAnahtar").ToString();
            if (kod.Length > 1)
            {
                kayıtEtToolStripMenuItem.Visible = false;
                btnBasla.Enabled = true;
                asdToolStripMenuItem2.Enabled = true;
                süreyiDurdurToolStripMenuItem1.Enabled = true;
                nuDakika.Enabled = true;
                nuSaat.Enabled = true;
                alarmKurToolStripMenuItem.Enabled = true;
                alarmKurToolStripMenuItem1.Enabled = true;
                lblDurum.Text = "Kayıt işlemi başarıyla tamamlanmıştır";
            }
        }


        //açılışta kapalı olacak menüler
        public void menuleriYokSay()
        {
            btnBasla.Enabled = false;
            asdToolStripMenuItem2.Enabled = false;
            süreyiDurdurToolStripMenuItem1.Enabled = false;
            nuDakika.Enabled = false;
            nuSaat.Enabled = false;
            alarmKurToolStripMenuItem.Enabled = false;
            alarmKurToolStripMenuItem1.Enabled = false;
        }

        //Bu üst menümüzdeki başlat menüsünün kodları.Formda gözüken Süreyi Başlat olayının aynısı..
        private void süreyiBaşlatToolStripMenuItem_Click(object sender, EventArgs e)
        {
            timer1.Start();
            lblDurum.Text = "Sistem kendini saat " + Saat() + ":" + Dakika() + " olduğunda kapatacaktır.";
            pbIslem.Visible = true;
            nuDakika.Enabled = false;
            nuSaat.Enabled = false;
            btnIptal.Enabled = true;
            btnBasla.Enabled = false;
            pbIslemDurdu.Visible = false;
        }

        //Formda gözüken Süreyi Durdur butonun özelliklerini barındırır bu üst tarafta bulunan süreyi durdur menüsü.
        private void süreyiDurdurToolStripMenuItem_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            lblDurum.Text = "Kapatma işlemini durdurdunuz";
            System.Diagnostics.Process.Start("shutdown", "-a");
            pbIslem.Visible = false;
            pbIslemDurdu.Visible = true;
            nuDakika.Enabled = true;
            nuSaat.Enabled = true;
            btnBasla.Enabled = true;
            btnIptal.Enabled = false;
            notifyIcon1.ShowBalloonTip(0, "Seas Windows Zamanlayıcı", "Program aktif\nKapatma işlemi iptal edildi", ToolTipIcon.Info);
        }

        //Uygulamamızı kapatır
        private void çıkışToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.ExitThread();
        }

        //Hakkında sayfasını açar
        private void sEASToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmHakkinda f = new frmHakkinda();
            f.ShowDialog();
        }

        //Güncelleme formumuzu açıyoruz.
        private void güncellemeKontrolToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmGuncelle f = new frmGuncelle();
            f.ShowDialog();
        }

        //Hakkında sayfasını açar
        private void sEASToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            frmHakkinda f = new frmHakkinda();
            f.ShowDialog();
        }

        //Uygulamamızı kapatıyoruz
        private void kapatToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Application.ExitThread();
        }


        //Formumuzda süreyi başlat butounun menüdeki hali.İşlemler aynı
        private void asdToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            timer1.Start();
            lblDurum.Text = "Sistem kendini saat " + Saat() + ":" + Dakika() + " olduğunda kapatacaktır.";
            pbIslem.Visible = true;
            nuDakika.Enabled = false;
            nuSaat.Enabled = false;
            btnIptal.Enabled = true;
            asdToolStripMenuItem2.Enabled = false;
            süreyiDurdurToolStripMenuItem1.Enabled = true;
            btnBasla.Enabled = false;
            pbIslemDurdu.Visible = false;
            notifyIcon1.ShowBalloonTip(0, "Seas Windows Zamanlayıcı", "Program aktif\nSistemin kapanma saati " + Saat() + " : " + Dakika(), ToolTipIcon.Info);
            süreyiDurdurToolStripMenuItem1.Enabled = true;
        }

        //Formumuzda süreyi durdur butounun menüdeki hali.İşlemler aynı
        private void süreyiDurdurToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            lblDurum.Text = "Kapatma işlemini durdurdunuz";
            System.Diagnostics.Process.Start("shutdown", "-a");
            pbIslem.Visible = false;
            pbIslemDurdu.Visible = true;
            nuDakika.Enabled = true;
            nuSaat.Enabled = true;
            asdToolStripMenuItem2.Enabled = true;
            süreyiDurdurToolStripMenuItem1.Enabled = false;
            btnBasla.Enabled = true;
            btnIptal.Enabled = false;
            notifyIcon1.ShowBalloonTip(0, "Seas Windows Zamanlayıcı", "Program aktif\nKapatma işlemi iptal edildi", ToolTipIcon.Info);
        }

        private void versiyonKontrolToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmGuncelle f = new frmGuncelle();
            f.ShowDialog();
        }

        private void kayıtEtToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmKayit f = new frmKayit();
            f.ShowDialog(this);
        }

        //Registry'den tekrar okuyoruz bu metodumuzdaki degeri.Eger kod değişkenini uzunlugu 1'den büyükse bu kayıt yapılmış anlamına geldigini bilgidimizden Kayıt Et menüsünü gizliyoruz.
        private void ProgramCalisma()
        {
            string kod = Registry.CurrentUser.OpenSubKey("SEAS").GetValue("olusturulanAnahtar").ToString();
            if (kod.Length > 1)
            {
                kayıtEtToolStripMenuItem.Visible = false;
            }
        }

        //Alarm kur  menüsü
        private void alarmKurToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //Süreyi Başlat butonu pasifse yani süre başlatıldıysa Alarm formunu açıyorz.
            if (btnBasla.Enabled == false)
            {
                frmAlarm f = new frmAlarm();
                f.ShowDialog(this);
            }
           
                //Süre başlamamışsa mesaj olarak uyarı veriyoruz
            else
            {
                MessageBox.Show("Kapatma zamanlayıcısını başlatmadan hatırlatma işlemi yapamazsınız", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        //AlarmKur adında metod tanımlayıp 2 tane parametre veriyoruz.Bu parametreleri Registry'e kaydedeceğiz.
        public void AlarmKur(string _saat, string _dakika)
        {
            //Parametreleri label'a yazıyoruz.
            lblAlarm.Text = " * Alarm aktif  |  " + _saat + " : " + _dakika;

            //Daha sonra 2 tane değişken oluşturup bu değişkenlere metodumuzun parametrelerini atıyoruz
            string alarmSaati = _saat;
            string alarmDakikasi = _dakika;

            //Parametreden alıp değişkenlerimize attığımız değerleri Current User'ın altına SEAS adındaki dizinin altına alarmSaat ve alarmDakika keywordlerine değişkenlerimizdeki değerleri atıyoruz.
            Registry.CurrentUser.CreateSubKey("SEAS").SetValue("alarmSaat", alarmSaati);
            Registry.CurrentUser.CreateSubKey("SEAS").SetValue("alarmDakika", alarmDakikasi);

            //ve hatırlatma işlemi için timerımızı başlatıyoruz.
            timerAlarm.Start();
        }

        //Buradaki metodumuz Sağ allta hatırlatma süre doldugunda çıkacak ulan nottur.1 tane parametre alan metot yazıyoruz.
        public void HatirlatmaNotu(string _not)
        {

            //Ve bu parametreyi programımızın en başında tanımlamış olduğumuz hatirmatlaNotu isimli değişkene atıyoruz.
            hatirlatmaNotu = _not;
        }

        //Hatırlam için kullanmış olduğumu timerımızın tick olayı..
        private void timerAlarm_Tick(object sender, EventArgs e)
        {
            //AlarmKur metodu ile kaydettiğimiz değerleri Registry'den
            string alarmSaat = Registry.CurrentUser.OpenSubKey("SEAS").GetValue("alarmSaat").ToString();
            string alarmDakika = Registry.CurrentUser.OpenSubKey("SEAS").GetValue("alarmDakika").ToString();

            //bilgisayarı kapatma timer'ımızdaki gibi aynı şekilde registry'den kaydettiğimiz değerleri okuyoruz ve her saniye sistem saatini ve dakikasını kontrol ediyoruz.
            if (alarmSaat.ToString() == DateTime.Now.Hour.ToString())
            {
                //Sistem saati ve dakikası registry'den gelen değerle aynı ise aşağıdaki if blogu çalışıyor.
                if (alarmDakika.ToString() == DateTime.Now.Minute.ToString())
                {
                    AlarmCal();
                    lblAlarm.Text = "";
                    timerAlarm.Stop();
                }
            }
        }
       
        //Alarm çal metodumuzu hatırlatma süresü doldugunda uyarıda kullandıgımız ses.
        private void AlarmCal()
        {
            //SoundPlayer sınıfından bir nesne yaratıyoruz çalmak için.Basit ses işlemlerini bu nesne üzerinden halledebiliriz.wav destekler.
            SoundPlayer player = new SoundPlayer();

            //Programın en üstündeki ses dosyamızın yolunu oluşturduğumuz nesnenin SoundLocation propery'sine atıyoruz.
            player.SoundLocation = dosyaYol;

            //Ve o nesnemizi play() metodunu kullanarak sesimizi çalıyoruz.
            player.Play();

            //Alarm kur formundan eger hatırlatma notu girilmemişse doğal olarak buradaki hatirlatmaNotu değişkenimize değer gelmeyecektir ve içi boş olacaktır.Bu değişkenimizi yukarıda tanımlamıştık.Eğer boş degilse diyerek yani hatırlatma notu girildisye aşagıdaki if blogunu çalıştırıyoruz.
            if (hatirlatmaNotu != "")
            {
                notifyIcon1.ShowBalloonTip(0, "Seas Windows Zamanlayıcı", "Alarm süresi doldu.\nHatırlatma Notu : " + hatirlatmaNotu, ToolTipIcon.Info);
            }

            //Hatırlatma formunda not girilmemişse ise aşagıdaki if blogunu çalıştıroyoruz.
            else
            {
                notifyIcon1.ShowBalloonTip(0, "Seas Windows Zamanlayıcı", "Alarm süresi doldu.", ToolTipIcon.Info);
            }
        }

        //Süre başladı ise alarm kur formunu açıyruz süre başlamamış ise mesaj veriyoruz.
        private void alarmKurToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (btnBasla.Enabled == false)
            {
                frmAlarm f = new frmAlarm();
                f.ShowDialog(this);
            }
            else
            {
                MessageBox.Show("Kapatma zamanlayıcısını başlatmadan hatırlatma işlemi yapamazsınız", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}


Form1 > Anaform kod bitiş

------------------------------------------------------------------------

frmAlarm > Alarm formunun kod başlangıcı

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsKapanma
{
    public partial class frmAlarm : Form
    {
        public frmAlarm()
        {
            InitializeComponent();
        }
        //Anaformumuzdaki işlemlerin aynısı yapılıyoruz Saat() ve Dakika() metotlarında...
        string Saat()
        {
            if (nuAlarmSaat.Value < 10)
                return "0" + nuAlarmSaat.Value.ToString();
            else
                return nuAlarmSaat.Value.ToString();
        }
        string Dakika()
        {
            if (nuAlarmDakika.Value < 10)
                return "0" + nuAlarmDakika.Value.ToString();
            else
                return nuAlarmDakika.Value.ToString();
        }

        //Alarmkur butonunun olayı...
        private void btnAlarmKur_Click(object sender, EventArgs e)
        {
            //Anaformumuzda Alarm Kur menüsüne bastıgımızda yeni formu açarken f.ShowDialog(this); dediğigimizden oradaki this keyword'ü yeni açılacak olan formun sahibi oldugunu belirliyor.Yani bu sebeple açılan frmAlarm formunun sahibi Anaformumuz olan Form1 oluyor.Anaformumuzdaki AlarmKur metodumuza ulaşabailmek için ise(hatırlamak için bakınız Form1'de AlarmKur() metoduna ,2 tane parametre alıyordu işte burada o parametrelere değerleri bu formdan yolluyoruz.) aşağıdaki yapıyı uyguluyoruz.
            ((Form1)this.Owner).AlarmKur(Saat(), Dakika());

            //DialogResult enum'ından bir değişken oluşturup fırlattıgımız mesaj kutusunun buttons degerini oluşturdugumuz sonuc değişkenine atıyoruz.
            DialogResult sonuc = MessageBox.Show("Alarm işlemini başlattınız", "Uyarı",MessageBoxButtons.OK,MessageBoxIcon.Information);

            //Eğer mesageBox kutusunda Ok butonuna tıklandıysa bu form kapanıyor.
            if (sonuc == DialogResult.OK)
            {
                this.Close();
            }

            //Ve anaformumuzdaki HatırlatmaNotu değişkenimizde aynı AlarmKur metoduna parametreden değer atatıgımız gibi buradan da HatırlatmaNotu değişkenimize değeri atıyoruz.
            ((Form1)this.Owner).HatirlatmaNotu(txtHatirlatma.Text);
        }

        //Formumuz yüklendiğinde numericUpDown kontrollerimize sistem saat ve dakika değerlerini yazdırıyoruz.
        private void frmAlarm_Load(object sender, EventArgs e)
        {
            nuAlarmSaat.Value = (decimal)DateTime.Now.Hour;
            nuAlarmDakika.Value = (decimal)DateTime.Now.Minute;
        }
    }
}

frmAlarm > Alarm formunun kod bitişi

------------------------------------------------------------------------

frmGuncelle > Güncelleme formunun kod başlangıcı

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsKapanma
{
    public partial class frmGuncelle : Form
    {
        public frmGuncelle()
        {
            InitializeComponent();
        }

        //Webbrowser'ın işlemi değiştiginde çalışacak event.
        private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
        {
            if (e.MaximumProgress != 0)
                toolStripProgressBar1.Visible = true;

            toolStripProgressBar1.Maximum = (int)e.MaximumProgress;
            toolStripProgressBar1.Value = (int)e.CurrentProgress;
        }

        //site yüklendiğinde yükleme boyutunu gösterdiğimiz alt taraftaki progressBar ı yok ediyoruz.
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            toolStripProgressBar1.Visible = false;
        }

        //Formumuzun load olayına güncellemeleri kontrol eden sayfamıza yolluyoruz.
        private void frmGuncelle_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://www.serhattas.net/Programlar/SeasWindowsZamanlayici/Default.htm");
        }
    }
}

 frmGuncelle > Güncelleme formunun kod bitişi

 ------------------------------------------------------------------------

frmKayıt > Kayıt anahtarının girilmiş oldugu formun kod başlangıcı

using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;

namespace WindowsKapanma
{
    public partial class frmKayit : Form
    {
        public frmKayit()
        {
            InitializeComponent();
        }

        private void frmKayit_Load(object sender, EventArgs e)
        {
            //frmKayıt menüsünde programı sisteme kayıt ediyoruz.Burada defaultAnahtar adındaki keyword'ümüze 0 degerini atıyıyorum ki defaul olan değerimizi registry'e yazayım.0'sa kayıt edilmemiş 1 ise kayıt edilmiş mantıgını kullanacagız.
            Registry.CurrentUser.CreateSubKey("SEAS").SetValue("defaultAnahtar", 0);

            //Değeri kaydettikten sonra okuyoruz.
            string gelen = Registry.CurrentUser.OpenSubKey("SEAS").GetValue("defaultAnahtar").ToString();

            //Registry'den gelen deger eger 0 ise anaformumuzdaki menuleriYoksa() metodunu çağırıyoruz bu oluyor ki program kayıt edilmedi ve yeni bir anahtar oluştur.
            if (gelen == "0")
            {
                ((Form1)this.Owner).menuleriYokSay();
                AnahtarOlustur();
            }
           
            //Eğer gelen deger 0 değil ise yine anaformumuzdaki MenuGizle() metodunu çağırarak değer 0 olmadıgından buda programın kayıt edilmiş anlamına geleceğinden pasif menüleri aktif yapıyoruz.
            else
            {
                ((Form1)this.Owner).MenuGizle();
            }
        }

        //Okunan deger 0 oldugunda frmKayıt formunun her açılışında değişecek olan anahtarOlustur metodu.
        private void AnahtarOlustur()
        {
            //Random sınıfından bir nesne oluşturuyoruz.Bu nesne ile rastgele anahtar oluşturucaz.
            Random r = new Random();

            //oluşturdugumuz sayıları bir diziye atmak için 10 elemanlı anahtar adında bir dizi oluşturuyoruz.
            int[] anahtar = new int[10];
            for (int i = 0; i < 10; i++)
            {
                //Ve dizimize 1,99 arsında bir sayı oluşturup ekliyoruz.
                anahtar[i] = r.Next(1, 99);
            }

            //10 farklı sayıyı dizimi oluşturduktan sonra foreach ile dizimizin içinde dönüyoruz ve dizimizdeki anahtarımızı lblOlusturulanAnahtar isimli label'a yazıyoruz
            foreach (int a in anahtar)
                lblOlusturulanAnahtar.Text += a.ToString();
        }

        //Anahtarı Onayla butonu
        private void btnAnahtarKaydet_Click(object sender, EventArgs e)
        {
            //rastgele oluşturup label'a yazılan anahtar textBox'tan kullanıcının girdiği ile aynı değilse mesajBox ile yanlı oldugunu belirtip textBox'taki degerleri siliyoruz.
            if (txtAnahtar.Text != lblOlusturulanAnahtar.Text)
            {
                MessageBox.Show("Yanlış anahtar girdiniz");
                txtAnahtar.Clear();
            }
            
            //Eğer kullanıcı anahtarı doğru şekilde girdiyse aşagıdaki if blogu çalışıyor.
            else
            {
                //Programımızın Anahtarı girilip girilmedigini registry deki defaultAnahtar isimli alandan anlıyorduk ve 0 oldugunda oradaki deger programa anahtar girilmedigini biliyorduk.Ama artık anahtar doğru şekilde girildiğinden buradaki değeri 1 yapacaz ve programımız har açıldıgında full olarak kullanabileceğiz.İlk önce bir değişken oluşturup buna 1 değerini atıyoruz.
                string defaulAnahtarDegistir = "1";

                //Daha sonra bu oluşturulan degeri Registry'de 0 degerine sahip olan defaulAnahtar isimli alana atıyoruz ve artık degeri 1 oluyor.
                Registry.CurrentUser.CreateSubKey("SEAS").SetValue("defaultAnahtar", defaulAnahtarDegistir);

                //Oluşturulan anahtarıda yazıyoruz kayıt defterine.
                Registry.CurrentUser.CreateSubKey("SEAS").SetValue("olusturulanAnahtar", lblOlusturulanAnahtar.Text);
                MessageBox.Show("İşlem başarıyla yapıldı", "Tebrikler", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //Program full oldugundan anaformumuzkida menugizle metodunu çagırarak işlemimizi tamamlamış oluyoruz.
                ((Form1)this.Owner).MenuGizle();
                 this.Close();
            }
        }

        private void btnKapat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

 

 

 

 frmKayıt > Kayıt anahtarının girilmiş oldugu formun kod bitişi

 ------------------------------------------------------------------------

Setup olarak indirmek için tıklayın

Visual Studio projesi olarak indirmek için tıklayın

 

 Projenin faydalı olması dileğiyle ...

windows otomatik kapatma


Serhat TAŞ

 

6 kişi tarafından 5.0 olarak değerlendirildi

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

Etiketler: , , ,

C# & .NET

Yorumlar

Yorum ekle


(Gravatar simgesini gösterecek)  

biuquote
  • Yorum
  • Canlı önizleme
Loading



Powered by BlogEngine.NET 1.4.5.0
Bu tema Mads Kristensen tarafından yapılmıştır ve Türkçeleştirilmesi Blog Engine Türkiye ekibi tarafından yapılmıştır.

Son Yorumlar

Comment RSS

Yasal Uyarı

Bu sitede sunulan tüm bilgi ve dökümanların kullanımından ve sitede yapılan kullanıcı yorumlarından (siyasi içerik,hakaret vb.) doğacak sorunlardan yazar sorumlu tutulamaz. 

İçeriğin kaynak belirtilmeden kopyalanması yasaktır !

SERHAT TAŞ

© Copyright 2010