Jak vynutit spořič obrazovky zavřete jednou spuštěna v systému Windows NT, Windows 2000 a Windows Server 2003

Překlady článku Překlady článku
ID článku: 140723 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Někdy aplikací je nutné ukončit spořiče obrazovky je již spuštěna. V systému Microsoft Windows 95 spořič obrazovky může být ukončena snadno účtování zpráva WM_CLOSE okno spořič obrazovky aktuálně aktivní jako v následujícím příkladu:
PostMessage (GetActiveWindow(), WM_CLOSE, 0, 0 L);
Windows NT však zavádí koncepci samostatné plochy tak, aby aplikace lze spustit na jednom a spořiče obrazovky lze spustit na jiném. Ukončení spořič obrazovky v systému Windows NT, Windows 2000 a Windows Server 2003 tím bitu obtížnější.

Další informace

Proces získání popisovač okna spořič obrazovky aktuálně aktivní je různé operační systémy, které jsou novější než Microsoft Windows 95. Na Microsoft Windows NT, Microsoft Windows 2000 a Microsoft Windows Server 2003 může spustit spořič obrazovky na ploše výchozí nebo na samostatné ploše, v závislosti na nastavení v vlastnosti zobrazení:
  • Zaškrtněte políčko Při pokračování, chránit heslem na kartě Spořič obrazovky v dialogovém okně Zobrazení – vlastnosti spořič obrazovky se spustí na vlastní ploše.
  • Pokud zaškrtnutí políčka, která je popsána v předchozí bod na ploše výchozí spustí spořič obrazovky.
Nelze použít funkci GetForegroundWindow() nebo FindWindow funkce zjistit, zda je aktuálně aktivní spořič obrazovky:
  • Protože je spuštěn spořič obrazovky na jiné ploše z plochy volající aplikace je spuštěna, vrátí funkce GetForegroundWindow() NULL.
  • Funkce FindWindow ("WindowsScreenSaverClass", NULL) buď nefunguje.
Společnost Microsoft proto doporučuje následující:
  • Kód zrušit spořič obrazovky nejprve určí, zda je na vlastní ploše spuštěn spořič obrazovky.
  • Pokud je spuštěn spořič obrazovky na vlastní ploše, zavře kód spořiče obrazovky došlo.
  • Pokud žádné ploše spořič obrazovky, kód používá výchozí plocha.


Získání popisovače plochu spořič obrazovky, výčet daná plocha systému windows a potom zaúčtovat WM_CLOSE okno spořič obrazovky.

Následující kód ukazuje, jak to provést. Poznámka: Pokud nastavit heslo spořiče obrazovky následující kód dialogového okna heslo, vyzve uživatele k zadání hesla a skutečně ukončí aplikace spořič obrazovky.
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); 
} 
Poznámka, ukončování spořiče obrazovky je již spuštěn jako znázorněn výše je zcela oddělený od zcela, zakázání spořič obrazovky tak, aby žádný spořič obrazovky spustí po vypršení platnosti určené časové období. To lze provést pomocí snadno:
SystemParametersInfo( SPI_SETSCREENSAVEACTIVE,
                      FALSE,
                      0,
                      SPIF_SENDWININICHANGE
                     );				
Tato metoda funguje také pro ukončení aktuálně spuštěný spořič obrazovky. Jeden problém, se kterými se můžete setkat však je, že systém nebude restartován spořič obrazovky Pokud uživatel přesune myši nebo stiskne klávesu. Pokud potřebujete znovu spustit spořič obrazovky, budete muset znovu inicializovat časového limitu. To provést pomocí následujících metod:
  • Volání SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, PRAVDA, 0 (SPIF_SENDWININICHANGE)
  • Pomocí SetCursorPos() simulovat vstup uživatele.
Obě tyto metody způsobí restartování čítač časového limitu pro spořič obrazovky systému.

Vlastnosti

ID článku: 140723 - Poslední aktualizace: 22. února 2007 - Revize: 3.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Win32 Software Development Kit (SDK) 3.1 na těchto platformách
    • 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 (32-bit x86)
Klíčová slova: 
kbmt kbcode kbhowto kbscreensaver KB140723 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:140723

Dejte nám zpětnou vazbu

 

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