نوافذ النوم من جافا
سؤال
هل هناك أمر لاستخدامه على Windows من Java لجعل الكمبيوتر ينام؟
المحلول
يمكنك القيام بذلك عن طريق تنفيذ أمر Shell ، إذا كان تطبيق Java لديه حقوق كافية للقيام بذلك. الأمر ...
Runtime.getRuntime().exec("Rundll32.exe powrprof.dll,SetSuspendState Sleep");
يتم عرض أوامر أخرى هنا.
نصائح أخرى
يجب تصوير أي شخص يقترح RunDLL32 ، وتم تصميم عدد قليل جدًا من الوظائف ليتم استدعاؤها بواسطة RunDLL32 و setSusPendState ليس واحد منهم. ستحصل على سلوك عشوائي (السبات مقابل الاستعداد والإجبار مقابل عدم الإجبار وما إلى ذلك) انظر إدخال المدونة هذا لمزيد من التفاصيل.
لقد حللت هذا باستخدام هذا باستخدام https://github.com/twall/jna. معلومات حول المكالمة من http://www.pinvoke.net/default.aspx/powrprof.setsuspendstate
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class WindowsSuspend {
public static native boolean SetSuspendState(boolean hibernate, boolean forceCritical, boolean disableWakeEvent);
static {
if (Platform.isWindows())
Native.register("powrprof");
}
}
نسميها من مع WindowsSuspend.SetSuspendState(false, false, false)
.
لا ، ستحتاج إلى تنفيذ ثنائي منفصل عبر Runtime.exec()
.
هذه المقالة وتقترح
rundll32 Powrprof.dll,SetSuspendState
لكنني لم أجربها.