Sayfalar

7 Eylül 2013 Cumartesi

Bilgisayar kapat, yeniden başlat, oturum kapatma işlemleri

Bugün sizlere Bilgisayar kapat, yeniden başlat, oturum kapatma işlemlerinin nasıl yapıldığını göstermek istiyorum. Öncelikle bu işlemleri yapan programları internetten arama yaparsanız çokça bulabilirsiniz. Ancak benim anlatmaya çalışacağım windows da hazır olarak gelenshutdown.exe kullanarak bu işlemleri yapacağız. 
Bunu yapmak için ilk önce Başlat sonra Çalıştır diyoruz. Veya Win + R tuşlarını kullanıyoruz.
Çalışma mantığı ise şöyle; 
Komut: shutdown [-i | -l | -s | -r | -a] [-f] [-m \\Bilgisayar Adı] [-t xx] [-c "yorum"] [-d up:xx:yy]
No args  Buradaki iletiyi göstermek için help veya ? kullanılır.
-i GUI arabirimini görüntüle, ilk seçenek olmalı
-l Oturumu Kapat (-m seçeneği ile kullanılamaz.)
-s Bilgisayarı Kapat
-r Bilgisayarı Kapat ve yeniden başlat.
-a Tüm kapatma işlemlerini iptal et.
-m \\bilgisayar adı Bilgisayarı kapatma veya yeniden başlatmak için bilgisayar adı
-t xx kapatmak için zamanı (saniye) olarak belirle
-c "yorum" Kapatma yorumu (en fazla 127 karakter)
-f çalışan programları kapanmaya zorla.
-d [u] [p]:xx:yy Kapatma için neden kodu
u kullanıcı kodu
p planlı kapatma kodu
xx asıl neden kodu (256' dan küçük pozitif tamsayı)
yy ikincil neden kodu (65536' dan küçük pozitif tamsayı)
Yukarıda da açıklandığı üzere shutdown komutundan sonra yapmak istediğimiz işlemi seçiyoruz ve varsa zamanlamayı seçiyoruz ve bilgisayar kapanırken iletmek istediğimiz mesajı yazıyoruz. Birazda örneklerle anlatmaya çalışalım.
Bilgisayarı kapatmak için; 
shutdown -s -t 120 -c "Deneme amaçlıdır. Bilgisayar 2 dakika içinde kapatılacak."
Bilgisayarı yeniden başlatmak için; 
shutdown -r -t 120 -c "Deneme amaçlıdır. Bilgisayar 2 dakika içinde yeniden başlatılacak."
Sadece açık olan kullanıcının oturumunu kapatmak için; 
shutdown -l

Yukarıdaki örneklerden 120 olan saniye bakımından zamanı belirler siz eğer hemen işlemin yapılmasını isterseniz onu 00 yapabilirsiniz, yada -c ile mesaj vermek istemezseniz 120 yazan yerden sonra yazmayabilirsiniz.
Son olarak da bu komutları bir kısayol yada .bat , .cmd olarak da kaydedip uygulayabilirsiniz.
Bunu yapmak için ise yeni bir not defteri oluşturup, farklı kaydet diyoruz.
Şimdilik bu kadar bir daha ki yazımda görüşmek üzere.

Email ile bilgisayarı kapatmak

Email ile bilgisayarı kapatmak evet artık şu ilerleyen teknoloji sayesinde hiç de zor değil.Hemde cep telefonu da dahil olmak üzere sadece kapatmak değil çeşitli komutlar vermek mümkün ancak eposta ayarları yapılan bir telefon gerekebilir.
Ancak email yolu ile yapılabilecekler sadece bunla sınırlı değil tabi ki bilgisayarı kapatabilir,yeniden başlatabilir,herhangi bir program çalıştırabilir ya da istediğiniz komutu verebilirsiniz.Bu sizin ne yapmak istediğinize veya bilgisayarda neler yapabileceğinize bağlı.

Sözü fazla uzatmadan nasıl yapacağımıza geçelim.Gerekli olanlara bakalım.
1 - microsoft office 2003 veya üstü bir sürüm
2 - gmail hesabı
bunlar benim kullandıklarım msn veya diğer mail adreslerini denemedim ancak yukarıdaki iki seçenekleri ve aşağıdaki tarifi uygularsanız başarı ile olacağını sizlerde göreceksiniz.
1.Aşama masaüstüne yeni bir not defteri açıp 
 c:\windows\system32\shutdown -s -f -t 00
yazıyoruz.farklı kaydet diyerek adını shutdown.bat olarak "C:\" dizinine kaydediyoruz.




2.Aşama microsoft office outlook 2003 programını çalıştırıyoruz.karşımıza çıkan menüden pop3 seçeneğini seçerek ileri diyoruz.Aşağıdakileri kendinize göre değiştirin.
E-Posta Hesapları
Kullanıcı Adınız :"kullanıcıadı"
E-Posta Adresi : "kullanıcıadı@gmail.com"
Oturum açma bilgileri
Kullanıcı Adınız :"kullanıcıadı"
Parola :"şifreniz"
Sunucu Bilgileri
gelen posta sunucusu(Pop3) : "pop.gmail.com"
Giden posta sunucusu(Smtp) : "smtp.gmail.com"



daha sonra diğer ayarlardan giden sunucusu bölümündeki Giden sunucum(SMTP) için kimlik doğrulaması gerekir.seçeneğini işaretliyoruz.
Bu menüden çıkmadan devam ediyoruz.Gelişmiş menüsüne geliyoruz.Gelen sunucusu(POP3) : 110 yazan yere 995 yazıyoruz.ve aşağıdakileri işaretliyoruz.bu sunucu şifreli bir bağlantı(SSL)gerektirir.tamam diyoruz ve son diyoruz.Artık bir kullanıcı hesabını tanımlamış olduk.
Outlook programını kapatmadan Üstteki menüden Araçlar daha sonra Kurallar ve uyarıları açıyoruz.Yeni Kural diyoruz.Karşımıza Kural Sihirbazı çıkacak boş bir kuraldan başlayı seçiyoruz 



ve ileri diyoruz.listelenmiş seçeneklerden konuda belirli sözcükler bulunan ve de yalnızca bu makinede yi işaretliyoruz.Altte ki 2.adım kutusundan konuda sözcükler bulunan tıklayıp açıyoruz ve kapat yazıp ekliyoruz.tamam deyip ileri ye basıyoruz.bu listeden de uygulamayı başlat ı işaretliyoruz.altta ki 2.adım kutusundan uygulama yı başlatı seçerek açıyoruz.son olarak shutdown.bat dosyasını nereye kaydettiysek onu bulup seçiyoruz.tamam diyoruz son olarak ileri ve uygula diyoruz.




İşte ayarların hepsi bu kadar şimdi ayarlardan tanımladığınız eposta adresin email göndererek deneyebilirsiniz.Ancak konuyu kapat olarak yazın.İster bilgisayar üzerinden isterseniz de bu email gönderimini eposta ayarları yapılmış bir cep telefonundan gönderebilirsiniz.

Ekran resmini çekmek[programsız]

Bilgisayarımızın Ekran görüntüsünü almak veya resmini çekmek için bazı programlar var ancak program kullanmadan da ekranın resmini çekebiliriz. 

Bu işlem aslında hiç de zor değil. Klavyemizde olan Print Screen SysRq tuşuna basarak bu işlemi yababiliriz. Print Screen SysRq tuşu ile Ekranın resmini çektik ancak resmi görebilmek veya kaydetmek için resim düzenleme programına ihtiyacımız olacak. Photoshop benzeri programı bilgisayarımızda yüklü değil ise windows un Paint programı işimizi görecektir.

Başlat menüsünden veya çalıştır komut satırına mspaint yazarak paint programını açalım. Çektiğimiz resimi görüntülemek için Ctrl + V tuşlarına basarak yapıştır diyoruz artık resmimiz hazır. Kaydetmek için ise Farklı Kaydet diyerek istediğiniz formatta kaydedebilirsiniz.

Son olarak ekran resmini çekerken tam ekran görüntüsü değil de sadece açık pencerelerden birinin resmini çekmek istersek yapmamız gereken şey istediğimiz pencereye tıklayarak aktif etmek ve Alt Gr + Print Screen SysRq tuşlarına basmak kalıyor.

Systeminfo Sistem Bilgileri[Programsız]

Bilgisayarımızın özelliklerini öğrenmek için yapmamız gereken CMD komut satırına systeminfo yazmak.
Bunun için Win + R tuşlarına basarak çalıştırı açıyoruz ve cmd yazıp enter diyoruz. Daha sonrada komut satırı penceresine systeminfo yazarak enter tuşuna basıyoruz. 
systeminfo
Bu Sorgulamadan çıkan sonuçlar ise; 
  • Bilgisayar Adı
  • İşletim Sistemi
  • OS sürümü
  • İşletim Sistemi Üreticisi
  • İşletim Sistemi Yapılandırması
  • İşletim Sistemi Oluşturma Türü
  • Kayıtlı Kullanıcı
  • Ürün kimliği
  • Format Atma Zamanı
  • Sistem Önyükleme Zamanı
  • Anakart
  • Anakart Modeli
  • Sistem Türü
  • İşlemci
  • BIOS Sürümü
  • Windows Dizini
  • Sistem Dizini
  • Ön Yükleme Aygıtı
  • Sistem Yerel Ayarları
  • Giriş yerel ayarları
  • Saat dilimi
  • Toplam Fiziksel Bellek
  • Kullanılabilir Fiziksel Bellek
  • Sanal Bellek: En Büyük Boyut
  • Sanal Bellek: Kullanılabilir
  • Sanal Bellek: Kullanılan
  • Disk Belleği Konumları
  • Etki alanı
  • Oturum Açma Sunucusu
  • Ethernet Ağ Kartı
  • Bağlantı Adı
  • DHCP Etkin
  • DHCP Sunucusu
  • IP adresleri

Listview içeriğini kaydetmek c#

Listview deki tüm içeri bir text dosyasına kaydetmek istersek aşağıdaki kod işimize yarayacaktır.

using (StreamWriter sw = new StreamWriter("C:\\test.txt"))
  {
   if (listView1.Items.Count > 0) // listview boş değil ise 
     {
      StringBuilder sb = new StringBuilder();
      foreach (ColumnHeader baslik in listView1.Columns) // columns
        {
          sb.Append(string.Format("{0}\t", baslik.Text));
        }
      sw.WriteLine(sb.ToString());
      foreach (ListViewItem lvi in listView1.Items)
        {
          sb = new StringBuilder();
      foreach (ListViewItem.ListViewSubItem listViewSubItem in lvi.SubItems)
        {
          sb.Append(string.Format("{0}\t", listViewSubItem.Text));
        }
          sw.WriteLine(sb.ToString());
         }
          sw.WriteLine();
         }
    }
 }

settings [uygulamamızı kaydettiğimiz gibi açalım]

Zaman zaman yaptığımız uygulamalarda bazı ayarların veya değişikliklerin programın her açılışında en son kaydettiğimiz ayarlara göre açılmasını isteyebiliriz.
Ve ya bazı ayarların kulanıcı tarafından kendisine göre ayarlayabilmesine izin verebiliriz.
Bu durumda settings dosyası devreye giriyor.
İlk önce ayarları yapabilmemiz için yukarıda ki resimdeki gibi Properties klasöründekiSettings.settings dosyasını açmamız gerekiyor.
Biraz da kodlarla anlamaya çalışalım...

Kullanıcının formun arkaplanını değiştiren bir uygulamada 
Settings dosyamıza Name kısmına formrenk adında bir değer girelim ve Type iseSystem.Drawing.Color olarak seçelim.
formumuza 1 adet colorDialog ekleyelim
1 adet de buton ekleyelim(renkleri ayarlamak için)
Form1_ Load kısmına

this.BackColor = Properties.Settings.Default.formrenk;
buton için ise;
colorDialog1.ShowDialog();
color.BackColor = colorDialog1.Color;
arkaplan rengini değiştirdik sıra geldi kaydetmeye ister bir buton aracılığı ile kaydedebiliriz isterseniz de form kapatılırken de kaydedebiliriz.
Properties.Settings.Default.formrenk = color.BackColor;
Properties.Settings.Default.Save();
this.BackColor = Properties.Settings.Default.formrenk;
uygulamamızın boyutu için;
Settings dosyamıza Name kısmına FormSize adında bir değer girelim ve Type iseSystem.Drawing.Size olarak seçelim.
Form1_ Load kısmına

this.Size = Properties.Settings.Default.FormSize;
kaydetmek için ise;
Properties.Settings.Default.FormSize = this.Size;
Properties.Settings.Default.Save();
uygulamamızın en son bulunduğu x ve y deki konumuna göre açmak için;
Settings dosyamıza Name kısmına Location adında bir değer girelim ve Type iseSystem.Drawing.Point olarak seçelim.
Form1_ Load kısmına

this.Size = Properties.Settings.Default.Location;
kaydetmek için ise;
Properties.Settings.Default.Location = this.Location;
Properties.Settings.Default.Save();
TextBox olan bir uygulama da ayarları kaydetmek için;
Settings dosyamıza Name kısmına textboxayar adında bir değer girelim ve Type ise stringolarak seçelim.
Form1_ Load kısmına

textBox1.Text = Properties.Settings.Default.textboxayar;
kaydetmek için ise;
Properties.Settings.Default.textboxayar = textBox1.Text;
Properties.Settings.Default.Save();
ListBox olan bir uygulama da ListBoxa verileri yüklemek için;
Settings dosyamıza Name kısmına listboxayar adında bir değer girelim ve Type iseSystem.Collections.Specialized.StringCollection olarak seçelim.
Form1_ Load kısmına

if (Properties.Settings.Default.listboxayar != null)
                foreach (string liste in Properties.Settings.Default.listboxayar)
                {

                    listBox1.Items.Add(liste);

                }
kaydetmek için ise;
Properties.Settings.Default.listboxayar = new System.Collections.Specialized.StringCollection();
            foreach (object item in listBox1.Items)
                {
        Properties.Settings.Default.listboxayar.Add(item.ToString());
                }
            Properties.Settings.Default.Save();
checkBox olan bir uygulama da;
Settings dosyamıza Name kısmına checkboxayar adında bir değer girelim ve Type ise boololarak seçelim.
Form1_ Load kısmına

checkBox1.Checked = Properties.Settings.Default.checkboxayar;
kaydetmek için ise;
Properties.Settings.Default.checkboxayar = checkBox1.Checked;
Properties.Settings.Default.Save();
Son olarak comboBox için;
Settings dosyamıza Name kısmına ComboItem adında bir değer girelim ve Type iseSystem.Collections.Specialized.StringCollection olarak seçelim.
Form1_ Load kısmına

foreach (string s in Properties.Settings.Default.ComboItem)
            {
                comboBox1.Items.Add(s);
            }
kaydetmek için ise;
foreach (string s in comboBox1.Items)
            {
      Properties.Settings.Default.ComboItem.Add(s);
            }
           Properties.Settings.Default.Save();
Aslında örnekler bunlarla sınırlı değil siz uygulamanızın çeşidine göre değiştirebilirsiniz...
Bu yazımın da sonuna gelmiş bulunuyoruz. Bir sonraki yazımda görüşmek dileğiyle...

Linq To XML Örneği

XML



CLASS

public class INPUT
{
    public string GGUID { get; set; }
    public string TABLE { get; set; }
    public string NAME { get; set; }
    public string VALUE { get; set; }
}

INSERT

public void InsertItem(INPUT _item)
{
XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));                       

    doc.Element("NAV").Add(new XElement("INPUT",
                 new XElement("TABLE", _item.TABLE),
                 new XElement("VALUE", _item.VALUE),
                 new XElement("NAME", _item.NAME),
                 new XElement("GGUID", _item.GGUID)
             ));
    doc.Save(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
}

DELETE

public void DeleteItem(string GGUID)
{
    XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
    doc.Elements("NAV").Elements("INPUT").Where(s => s.Element("GGUID").Value == GGUID).Remove();

    doc.Save(HttpContext.Current.Server.MapPath("~/App_Data/Data/INPUT.xml"));
}

Klasör boyunu öğrenme

Zaman zaman yaptığımız programlarda klasör boyutunu öğrenme veya kullanıcıya bilgilendirme gereği duyabiliriz. Bu ve bunun gibi durumlarda aşağıdaki örnekler bize bu konuda yardımcı olabilir.
C#
Kütüphanemize eklemeyi unutmayalım.
using System.IO;
Tüm klasör ve alt klasörlerin boyutunu gösteren metotumuzu oluşturalım.
public static long KlasorBoyut(DirectoryInfo yol)
 {
   return yol.GetFiles().Sum(fi => fi.Length) +
   yol.GetDirectories().Sum(di => KlasorBoyut(di));
 }
Örnek kullanımı ise;
DirectoryInfo klasoryolu  = new DirectoryInfo("C:\\test");
long boyutyol = KlasorBoyut(klasoryolu);
MessageBox.Show(boyutyol.ToString());
Visual Basic
Public Shared Function KlasorBoyut(yol As DirectoryInfo) As Long
  Return yol.GetFiles().Sum(Function(fi) fi.Length) + 
  yol.GetDirectories().Sum(Function(di) KlasorBoyut(di))
End Function
Örnek kullanımı;
Dim klasoryolu As New DirectoryInfo("C:\test")
Dim boyutyol As Long = KlasorBoyut(klasoryolu)
MessageBox.Show(boyutyol.ToString())
Programımızın çıktısı ise şu şekilde;
6996850

Programsız İp Değiştirme Proxy İle[Resimli Anlatım]

İp Değiştirmenin Farklı Yolları Var Tabiki. Ancak Biz programsız Değiştirmeyi Göreceğiz... İlk Önce Firefox ta nasıl oluyor onu görelim.
Firefox için Araçlar / Seçenekler / Ağ / Ayarlar yolunu izleyerek bağlantı ayarlarından gerekli ayarları yapacağız. Aşağıdaki resimdeki gibi;
çıkan ekranda Vekil sunucuyu elle ayarla: seçeneğini işaretleyerek HTTP vekil sunucusu : 72.64.146.135 iletişim noktası olarak da 8080 yazıyoruz ve tamam diyoruz.

chrome için ise Ayarlar / Gelişmiş ayarları Göster / Ağ / Proxy ayarlarını değiştir...yolunu izleyerek 

Yukardaki resimdeki gibi yolu izlediğimizde Yerel Ağ Ayarları / Proxy Sunucusu / Yerel ağınız için bir proxy sunucu kullan ı işaretleyerek Adres 72.64.146.135 Bağlantı Nok. 8080 yazıyoruz.

İnternet Explorer için ise Araçlar oradan da İnternet Seçenekleri menüsüne giriyoruz. Resimdeki gibi. 


Daha sonrada Yerel Ağ Ayarları na geliyoruz. Proxy Sunucusu bölümündeki Seçeneğini İşaretliyoruz Ve Yazı alanlarını aşağıdaki gibi dolduruyoruz... Adres : 72.64.146.135 Bağlantı Adresi(Port) : 8080


İşte Bu Kadar... Ancak İnternet Daha Hızlı Açılmasını İsterseniz Gelişmiş Bölümünden FTP ve Güvenli Seçeneğindekileri Siliyoruz. Sadece Http Bölümündekiler Kalsın. İşte Resimdeki Gibi... 
Proxy numarası olarak rasgele bir numaraydı siz İnternet daha farklı veya daha hızlısını bulabilirsiniz.Amacınız sadece ip değiştirmek ve internetin daha hızlı açılmasını isterseniz.Türkiyedeki proxy leri araştırabilirsiniz...
Sonuç olarak


Son olarak proxy seçerken proxy türlerini de bilmekte fayda var.
Anonymous(Anonim)
Gizlilik derecesi düşük olan bir proxy dir.
High Anonymous
Gizlilik derecesi yüksek olduğundan gerçek ip adresimiz gizli durumdadır.

proxy bulmanıza yardımcı olacak freeproxylists.net sitesini ziyaret edebilirsiniz.Ayrıca sol üst tarafta ülke ve port numarasını seçerek güncel adresleri bulabilirsiniz...

c# List Kullanımı

Bu yazımda c# ta list kullanımını örneklerle anlatmaya çalışacağım.
Öncelikle kütüphanemizde using System.Collections.Generic yüklü olduğundan emin olun.
List elemanımız istersek sayısal istersek string bir değer alabilir. Sayısal olarak şöyle bir örnek olabilir.

List liste = new List(new int[] { 1, 2, 3, 4, 5 });
            foreach (int sayilar in liste) // sayısal olarak
            {
                Console.WriteLine(sayilar);
            }
Programızı çalıştırdığımızda aşağıdaki gibi bir sonuç alırız.
1
2
3
4
5

Veya string olarak;

List gunler = new List(new string[] {"cuma", "cumartesi", "pazar"});
            foreach (string hafta in gunler) // string
            {
                Console.WriteLine(hafta);
            }

sonucumuz ise
cuma
cumartesi
pazar
List i tanımlarken aşağıdaki gibi bir örnekte olabilir.
List gunler = new List();
            gunler.Add("cuma");
            gunler.Add("cumartesi");
            gunler.Add("pazar");
            foreach (string hafta in gunler) // string
            {
                Console.WriteLine(hafta);
            }
Add
list e değer ekleyebiliriz.

gunler.Add("pazartesi");
AddRange
list in sonuna ekleme yapar.

List gunler = new List();
            gunler.Add("cuma");
            gunler.Add("cumartesi");
            gunler.Add("pazar");

            List aylar = new List();
            aylar.Add("ocak");
            aylar.Add("şubat");
            aylar.Add("mart");
            gunler.AddRange(aylar);
            foreach (string hafta in gunler) // string
            {
                Console.WriteLine(hafta);
            }
programın çıktısı ise şöyle;
cuma
cumartesi
pazar
ocak
şubat
mart
Clear
list te olan tümünü temizler.

List gunler = new List();
            gunler.Add("cuma");
            gunler.Add("cumartesi");
            gunler.Add("pazar");
            gunler.Clear();
Count
Toplam değer

List gunler = new List();
            gunler.Add("cuma");
            gunler.Add("cumartesi");
            gunler.Add("pazar");
 Console.WriteLine(gunler.Count);
list 3 elemandan oluştuğu için çıktı 3 olur;
3
Insert
İndex numarası ile elaman ekleme yapabiliriz.

List gunler = new List();
            gunler.Add("cuma");
            gunler.Add("cumartesi");
            gunler.Add("pazar");
            gunler.Insert(3,"pazartesi");
            foreach (string hafta in gunler)
            {
                Console.WriteLine(hafta);
            }
çıktısı ise şöyle;
cuma
cumartesi
pazar
pazartesi
Remove
elemanı silmeye yarar.

List gunler = new List();
            gunler.Add("cuma");
            gunler.Add("cumartesi");
            gunler.Add("pazar");
            gunler.Remove("pazar");
örnek çıktısı;
cuma
cumartesi
RemoveAt
list te olan değerin index numarasına göre elemanı silmeye yarar. Bu arada index 0 dan başlar.

List gunler = new List();
            gunler.Add("cuma");
            gunler.Add("cumartesi");
            gunler.Add("pazar");
            gunler.RemoveAt(1);
örnek çıktısı;
cuma
pazar

Bu yazımında sonuna gelmiş bulunuyoruz. Bir sonraki yazımda görüşmek dileğiyle...