Chciałbym zmienić obecny wygaszacz ekranu dla niestandardowego (który wcześniej załadowałem jako zasób w Visual Studio) przy użyciu C#. Jak można to zrobić? Szukałem go w Google i SO, ale wszystko mówi o "Jak stworzyć wygaszacz ekranu", a nie "Jak zmienić wygaszacz ekranu". Jeśli to możliwe, to powinno działać na WinXP, Vista i 7.Jak programowo zmienić wygaszacz ekranu?
Odpowiedz
będę odpowiedzieć na moje pytanie z kawałka kodu, który pracował do mi:
public sealed class Screensaver
{
Screensaver() { }
const int SPI_SETSCREENSAVEACTIVE = 0x0011;
[DllImport("user32", CharSet=CharSet.Auto)]
unsafe public static extern short SystemParametersInfo (int uiAction, int uiParam, int* pvParam, int fWinIni);
public static void Set(string path)
{
try
{
RegistryKey oKey = Registry.CurrentUser.OpenSubKey("Control Panel",
true);
oKey = oKey.OpenSubKey("desktop", true);
oKey.SetValue("SCRNSAVE.EXE", path);
oKey.SetValue("ScreenSaveActive", "1");
unsafe
{
int nX = 1;
SystemParametersInfo(
SPI_SETSCREENSAVEACTIVE,
0,
&nX,
0
);
}
}
catch (Exception exc)
{
System.Windows.Forms.MessageBox.Show(exc.ToString());
}
}
}
Potem, kiedy wywołanie go z mojej aplikacji:
static string ResourcePath(string resource)
{
return Application.StartupPath + "\\Resources\\" + resource;
}
Program.Screensaver.Set(Program.ResourcePath("svr1.scr"));
czytałem gdzieś Powinienem napisać imię nie dłuższe niż 8 znaków (trochę dziwne, ale XP to wszystko), więc mój wygaszacz ekranu nazywa się svr1.scr
(nie jest to obiekt zorientowany, ale działa)
Brzydko, ale nie mogę znaleźć lepszego rozwiązania. 'InstallScreenSaver' w' desk.cpl' wyświetla następnie interfejs panelu sterowania, a 'SystemParametersInfo' wydaje się nie eksponować tej funkcji. – CodesInChaos
Jest to polecenie, że okna wykonuje podczas instalowania nowej
rundll32.exe desk.cpl,InstallScreenSaver %l
- 1. Programowo przerwać aktywny wygaszacz ekranu?
- 2. Windows UWP jako wygaszacz ekranu?
- 3. Wyłącz wygaszacz ekranu/tryb uśpienia za pośrednictwem strony internetowej
- 4. Jak zmienić lokalizację obrazu ekranu powitalnego?
- 5. Jak zmienić rozmiar ekranu PhoneGap?
- 6. Mój wygaszacz ekranu zatrzymuje zawieszenie ekranu, ale nie chcę tego do
- 7. Jak programowo zmienić czcionkę etykiety?
- 8. Jak zmienić card_view: cardCornerRadius programowo
- 9. Jak programowo zmienić bieżący motyw systemu Windows?
- 10. Jak programowo wykonać zrzut ekranu (Swift, SpriteKit)
- 11. IPhone/iPad: Jak programowo uzyskać szerokość ekranu?
- 12. Jak włączyć wygaszacz ekranu (Windows 7) za pomocą kodu (w cmd)?
- 13. Programowo zmienić drawableLeft Buttona
- 14. Android - Jak programowo zmienić tryb timepicker?
- 15. Jak mogę programowo zmienić rozmiar UICollectionView?
- 16. Jak programowo zmienić wartości kolumny tożsamości?
- 17. Jak programowo zmienić kolor tła okna dialogowego?
- 18. Jak programowo zmienić głośność w Ubuntu
- 19. Jak programowo zmienić zakładkę (modułu UITabViewController)?
- 20. Jak zmienić rozmiar obrazu kciuka UISlider programowo
- 21. JQuery Datatables. Jak programowo zmienić bieżącą stronę?
- 22. jak zmienić układ wysokości jako animację (programowo)
- 23. C# Jak programowo zmienić urządzenie odtwarzające?
- 24. jak wymienić/zmienić przycisk obrazu programowo Android
- 25. Jak programowo zmienić tytuł w oknie wpf?
- 26. Widok systemu Android layout_width - jak zmienić programowo?
- 27. Jak programowo zmienić obraz wyświetlany w UIImageView?
- 28. Jak zmienić poziom rejestrowania korzeniowy programowo
- 29. Jak zmienić lub zaktualizować NSLayoutConstraint programowo
- 30. Jak programowo zmienić rozmiar obrazu ImageView
Ten może być przydatny: http://bytes.com/topic/c-sharp/answers/263953-setting-up-screensaver-via-csharp-c-application Musisz to zrobić poprzez rejestr –
Dzięki za twój link. To złagodziło kroki. Jednak nie działa dla Windows XP (w Win7 działa jak urok). Czy wiesz coś o tym? – Korcholis