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
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