Ekran koruyucusu bir kez kapanmaya zorlamak için Windows NT, Windows 2000 ve Windows Server 2003 başlatıldı

Makale çevirileri Makale çevirileri
Makale numarası: 140723 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Bazen, çalışmakta olan bir ekran koruyucusunun sona erdirmek uygulamaları gerekir. Microsoft Windows 95'te bir ekran koruyucusunun kolayca WM_CLOSE ileti bu örnek olarak şu anda etkin ekran koruyucu penceresinde deftere naklederek sona erdirilecek:
PostMessage (GetActiveWindow(), WM_CLOSE, 0 L 0);
Microsoft Windows NT, uygulamalar üzerinde çalışabilir ve üzerinde başka bir ekran koruyucular çalıştırabilirsiniz, ancak ayrı bir masaüstü kavramını tanıtır. Bu ekran koruyucusunu sonlandırma Windows NT, Windows 2000 ve Windows Server 2003 altında biraz daha güçleştirir.

Daha fazla bilgi

Etkin ekran koruyucusu penceresi için bir tanıtıcı elde etme işlemi, Microsoft Windows 95'den sonraki işletim sistemleri için farklıdır. Microsoft Windows NT, Microsoft Windows 2000 ve Microsoft Windows Server 2003'te, ekran koruyucusunu varsayılan masaüstünde veya ayrı bir masaüstü, görüntü özelliklerinde bir ayarına bağlı olarak çalışabilir:
  • <a0>Görüntü Özellikleri</a0> iletişim kutusunun Ekran koruyucu sekmesinde açık Devam edildiğinde parola koruması onay kutusunu seçerseniz, ekran koruyucusunu kendi masaüstünde çalıştırır.
  • Önceki noktasını içinde açıklanan onay kutusunu temizlerseniz, ekran koruyucusunu varsayılan masaüstünde çalıştırır.
GetForegroundWindow() işlevi ya da FindWindow kullanamazsınız işlevi, ekran koruyucusunu etkin olup olmadığını belirlemek için:
  • Çağıran uygulama çalıştıran masaüstü farklı bir masaüstündeki ekran koruyucusunu çalışmadığından GetForegroundWindow() işlevini NULL döndürüyor.
  • FindWindow işlev ("WindowsScreenSaverClass", NULL) ya da çalışmaz.
Bu nedenle, Microsoft aşağıdakileri önerir:
  • Kod ekran koruyucusunu kapatmak için önce kendi masaüstünde ekran koruyucusunu çalışır durumda olup olmadığını belirler.
  • Kodu, kendi masaüstünde ekran koruyucu çalışıyorsa, ekran koruyucusu kapatır.
  • Hiçbir Masaüstü için ekran koruyucusunu ise, varsayılan masaüstünün kullanır.


Bunu yapmak için <a0></a0>, ekran koruyucusunu kullanıcının masaüstünde bir tanıtıcı elde, bu masaüstünün windows numaralandırmak ve ekran koruyucusunu penceresine bir WM_CLOSE deftere nakil işlemini.

Aşağıdaki kod, bunun nasıl yapılacağını gösterir. Ekran koruyucusu parolası ayarlarsanız, aşağıdaki kodu parola iletişim kutusunu görüntüler, kullanıcıya parola sorar ve ekran koruyucusunu uygulama gerçekten sonlandırır, Not.
BOOL CALLBACK KillScreenSaverFunc(HWND hwnd, LPARAM lParam) 
{ 
	if(IsWindowVisible(hwnd)) 
		PostMessage(hwnd, WM_CLOSE, 0, 0); 
	return TRUE; 
} 
HDESK hdesk; 
hdesk = OpenDesktop(TEXT("Screen-saver"), 0, FALSE, DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS); 
if (hdesk) 
{ 
	EnumDesktopWindows(hdesk, KillScreenSaverFunc, 0);
	CloseDesktop(hdesk); } 
else 
{ 
	// Windows 2000 and later: 
	// If there is no screen saver desktop, the screen saver 
	// is on the default desktop. Close it by sending a 
	// WM_CLOSE. PostMessage(GetForegroundWindow(), WM_CLOSE, 0, 0L); 
} 
belirtilen süre dolduktan sonra ekran koruyucusu yok olan için yukarıda gösterildiği gibi çalışmakta olan bir ekran koruyucusunun sonlandırılıyor tamamen, ekran koruyucusunu devre dışı tümüyle farklı olduğunu unutmayın. Bu kolay kullanılarak yapılabilir:
SystemParametersInfo( SPI_SETSCREENSAVEACTIVE,
                      FALSE,
                      0,
                      SPIF_SENDWININICHANGE
                     );				
bu yöntem iyi çalışan ekran koruyucusunu sonlandırılıyor çalışır. Ancak, kullanıcı fare taşır veya bir tuşa bastığında sistem ekran koruyucu başlatılmaz karşılaşabileceğiniz bir sorun değildir. Ekran koruyucusunun yeniden başlatma gerekiyorsa, zaman aşımı süresini yeniden başlatmak gerekir. Bunu, aşağıdaki yöntemlerden birini kullanarak:
  • SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, TRUE, 0, SPIF_SENDWININICHANGE) çağrılıyor.
  • Kullanıcı girişi benzetimini yapmak için SetCursorPos() kullanıyor.
Bu yöntemlerin her ikisi de, sistemin zaman aşımı sayacı için ekran koruyucusunu yeniden neden olur.

Özellikler

Makale numarası: 140723 - Last Review: 22 Şubat 2007 Perşembe - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Win32 Software Development Kit (SDK) 3.1, Ne zaman ne ile kullanilir:
    • Microsoft Windows NT Advanced Server 3.1
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • Microsoft Windows Server 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kbcode kbhowto kbscreensaver KB140723 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:140723

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com