Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: Windowsu Kapatmak  (Okunma sayısı 2661 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Windowsu Kapatmak
« : 10 Mayıs 2006 11:04:25 »
Alıntı yapılan: Memik Yanık
Bu yazı yazarın Delphi’nin .NET uyumlu versiyonunu konu ettiği kitabının Api fonksiyonları adlı bölümün bir kısmıdır. http://www.seckin.com.tr/urun.aspx?productID=6451

Windows’u Kapatmak – ExitWindowsEx() Fonksiyonu

Windows yeniden başlatılmak istendiğinde Windows’un ExitWindowsEx() fonksiyonu kullanılmaktadır. Ancak bu fonksiyon kullanılan Windows sürümünden ve Windows’un mevcut ayarlarından etkilenmektedir. Bu nedenle istenilen sonuçlar alınamayabilir.

Bildiğiniz gibi .NET Framework ile gelen MessageBox sınıfı System.Windows.Forms adlı Namespace’te tanımlıdır ve bu Namespace projelere otomatik olarak dahil edilmektedir. Ancak API fonksiyonlarını kullanmak üzere koda Borland.Vcl.Windows adlı Namespace’i projeye dahil ettiğinizde derleyici MessageBox sınıfını hangi Namespace’te arayacağına karar veremiyor. Bu nedenle kod dosyasına Borland.Vcl.Windows’u dahil ettiğinizde MessageBox sınıfının başına tanımlı olduğu Namespace’i yazmalısınız.



ExitWindowsEx() fonksiyonu 2 parametreye sahiptir. Bu fonksiyona ilk parametre olarak 0 veya EWX_LOGOFF değeri verildiği zaman o sırada programların çalışması sona erdirilir ve geçerli kullanıcının açmış olduğu oturum kapatılır. Aşağıda verilen ekran görüntüsünü ExitWindowsEx() fonksiyonunu anlatmak için hazırladığım projeyi çalıştırıp “Oturumu Kapat” başlıklı düğmeyi tıkladıktan sonra aldım.



Bu sırada Evet başlıklı düğme tıklanırsa MessageBox() fonksiyonu geriye “Yes” değerini gönderir ve ExitWindowsEx() fonksiyonu işletilerek mevcut oturum kapatılır.


ExitWindowsEx() fonksiyonu bu şekilde deklare edildikten sonra Delphi projesi dahilinde kullanılabilir. Fonksiyonun deklare edildiği satırda görebileceğiniz gibi geriye Boolean bilgi gönderilmektedir. Burada Flags parametresinin yerine 0 yazdığım için oturum kapatılır.

Kod: [Seç]
Sonuc := ExitWindowsEx(0, 0);
Yukarıda hakkında bilgi verilen ExitWindowsEx() fonksiyonu Windows’un “users32.dll” adlı DLL dosyasında tanımlıdır. Bu fonksiyonu Visual Basic projesi dahilinde kullanmak istemiş olsaydım aşağıdaki gibi deklare ederdim.



Yukarıda hakkında bilgi verdiğim ExitWindowsEx() fonksiyonundan C# veya C++ projesi dahilinde yararlanmak istemiş olsaydım bu fonksiyonu aşağıdaki gibi deklare ederdim.

Kod: [Seç]
[DllImport("User32")]
       public static extern bool ExitWindowsEx(
               int uFlags, int dwReserved);

Delphi projeleri dahilinde API fonksiyonlarını C#’taki gibi kullanmak istiyorsanız DllImport deyimi ile fonksiyonun tanımlı olduğu DLL dosyasını işaret ettikten sonra C#’taki gibi deklare edip .NET Framework ile gelen System.Runtime.InteropServices adlı namespace’i koda dahil etmelisiniz. Bu namespace’i koda dahil ettikten sonra ExitWindowsEx() fonksiyonunu aşağıdaki gibi deklare edip kullandım.


« Son Düzenleme: 10 Mayıs 2006 11:09:16 by Fatih »
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.