Her junior yazılımcının karşılaşacağı ödev babında program ile merhaba. BEnzer konu her ne kadar paylaşılmışsa da alternatif olarak paylaşmak istedim.
Aşağıdaki bağlantıdan indirebileceğiniz zamanlı bilgisayar işlem programı ile bilgisayarı belirlediğiniz zaman kapatıp veya yeniden başlatabilirsiniz. Yada resimdeki gibi bir form ekranı tasarlayarak alttaki kodlar yardımı ile yapabilirsiniz.
[wpdm_file id=11]
Form tasarlarken kullandığım kontroller; birkaç label, buton, maskedtextbox(zamanı saat ve dakika formatın da girebilmek için), datetimepicker, radiobuton, timer ve notifyicon. Yaptığım işlemleri kod tarafına geçmeden adım adım anlatırsam konuyu daha verimli aktaracağımı düşünüyorum;
- Anlık zamanı gösterebilmek için timer kontrolünün tick olayına bir label a anlık saati gösterdik. Timer ın Interval değerini 1000 yaparak saniyede bir anlık saati label da otomatik gösterdik.
- Zamanlayıcı çalıştırmak için ilgili buton yardımı ile maskedtextbox ve datetimepicker seçilen değeri metod yardımı ile datetime tipli değişkene atadık. Zamanlayıcı çalıştırmak için eklenen timer ı aktif ettik.
- Aktif edilen zamanlayıcı timer ı her saniyede bir şimdiki zaman(saat) ile ayarlanan saati karşılaştırdık.
- Ayarlanan zaman ile şimdiki zaman eşit ise radiobuton da seçilen işlemi yapmasını istedik.
- NotifyIcon kontrolü ile programı yani formu gizlediğimiz de sağ alt köşede mesaj iletisi vermesi için ayarladık.
[cc lang=’csharp’ ] private void tmrSimdikiZaman_Tick(object sender, EventArgs e)
{
lblSimdikiSaat.Text = DateTime.Now.ToLongTimeString();
}
DateTime alarmZamani;
DateTime ayarZamani;
private void btnKur_Click(object sender, EventArgs e)
{
if (txtSaat.Text == “”)
{
MessageBox.Show(“Girilen değerleri kontrol et \n Alanlardan herhangi birini boş bırakma !”);
return;
}
else
{
alarmayar(dateTimePicker1.Value.Date);
}
}
private void alarmayar(DateTime zaman)
{
alarmZamani = zaman;
alarmZamani = alarmZamani.AddHours(Convert.ToInt32(txtSaat.Text.Substring(0, 2)));
alarmZamani = alarmZamani.AddMinutes(Convert.ToInt32(txtSaat.Text.Substring(3, 2)));
if (DateTime.Now >= alarmZamani)
{
MessageBox.Show(“Geçmiş zamana alarm kuramazsınız !!!”);
return;
}
else
{
tmrAlarmZamani.Enabled = true;
btnKur.Enabled = false;
if (rbKapat.Checked == true)
{
lblMesaj.Text = “Bilgisayar ” + txtSaat.Text + ” zamanına kapatılması için ayarlandı.”;
}
else if (rbYeniden.Checked == true)
{
lblMesaj.Text = “Bilgisayar ” + txtSaat.Text + ” zamanına yeniden başlatılması için ayarlandı.”;
}
else
{
lblMesaj.Text = txtSaat.Text + ” için herhangi bir görev ayarlanmamış”;
}
}
}
private void tmrAlarmZamani_Tick(object sender, EventArgs e)
{
ayarZamani = DateTime.Now;
if (ayarZamani.ToString() == alarmZamani.ToString())
{
tmrAlarmZamani.Enabled = false;
if (rbKapat.Checked)
{
notifyIcon1.BalloonTipText = “Bilgisayarınız kapatılıyor…”;
notifyIcon1.ShowBalloonTip(3);
System.Diagnostics.Process.Start(“shutdown”, “-s -f -t 0”);
}
else if (rbYeniden.Checked)
{
notifyIcon1.BalloonTipText = “Bilgisayarınız yeniden başlatılıyor…”;
notifyIcon1.ShowBalloonTip(3);
System.Diagnostics.Process.Start(“shutdown”, “-r -f -t 0”);
}
else
{
lblMesaj.Text = “Zaman Geldi”;
notifyIcon1.BalloonTipText = “Zaman Geldi”;
notifyIcon1.ShowBalloonTip(5);
}
}
}
private void btnIptal_Click(object sender, EventArgs e)
{
tmrAlarmZamani.Enabled = false;
btnKur.Enabled = true;
rbYeniden.Checked = false;
rbKapat.Checked = false;
lblMesaj.Text = “Herhangi bir görevi yok !”;
}
private void Form1_Resize(object sender, EventArgs e)
{
if (FormWindowState.Minimized == WindowState)
{
Hide();
notifyIcon1.BalloonTipText = lblMesaj.Text;
notifyIcon1.ShowBalloonTip(5);
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (tmrAlarmZamani.Enabled == true)
{
if (MessageBox.Show(“Zamanlandırlmış bir görev olduğu için uygulama kapatılamıyor. \nUygulamayı ve görevi kapatmakta karalımısınız ?”, “Uyarı !”, MessageBoxButtons.YesNo) == DialogResult.Yes)
{
Application.Exit();
}
}
}
private void notifyIcon1_Click(object sender, EventArgs e)
{
this.Show();
WindowState = FormWindowState.Normal;
}[/cc]