كيفية تعديل إعدادات سجل Windows Screensaver بشكل برمجي

StackOverflow https://stackoverflow.com/questions/1369754

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أعمل على الرمز الذي من المفترض أن يبدأ شاشة الشاشة المحددة بواسطة تفضيلات المستخدم. (الكود موجود في Java ، ولكن سيتم تشغيله فقط تحت Windows.) نهجاتي الحالية هو تعيين قيمة ScreenSaVeTimeout في السجل إلى 1 ؛ من الناحية النظرية ، يجب أن يركل هذا الشاشة بعد تأخير ثانية واحدة فقط.

ولكن في الممارسة العملية ، لا شيء من هذا القبيل. لقد ضربت القيم في كل من Hey_Current_User Control Panel Desktop ScreenSavetimeout و Hkey_users.default Control Panel Desktop ScreenSavetimeout بدون نتائج. أستطيع أن أرى القيم تتغير عندما أقوم بإطلاق النار على Regedit ، لكن قيمة "الانتظار" في خصائص العرض -> لا تتغير توفير الشاشة.

أشار خيط تبادل الخبراء إلى أنه يجب علي القيام بذلك لجعل التغييرات فعالة على الفور:

%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters

... لكن هذا لا يبدو أنه يفعل أي شيء.

أي نصيحة أو رؤى حول ما أفعله خطأ؟

هل كانت مفيدة؟

المحلول

لتفعيل توفير الشاشة ، قد تجد أنه من الأسهل فقط تنفيذ ملف .scr باستخدام معلمة "/s" ، مثل ذلك:

C:\WINDOWS\system32\ssstars.scr /s

أو لا يمكنني أن أقول الكثير عن كيفية القيام بذلك من Java ، ولكن إذا كان يمكنك الاتصال بالوظائف في user32.dll ، يمكنك التحكم في توفير الشاشة مثل المستخدم النهائي. فيما يلي روابط زوجين:

(أخيرًا ، هناك طريقة .NET ، لكن مرة أخرى ليس لدي أي فكرة عن كيفية الحصول على ذلك من Java: http://zayko.net/post/c-how-to--disable-windows-screensaver-programmally.aspx)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top