سؤال

هل هناك أمر لاستخدامه على 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 

لكنني لم أجربها.

قد ترغب في إلقاء نظرة على دعم OnNow/ACPI هنا.

هناك أيضًا منشور قديم يتحدث عن ذلك هنا.ربما عكس ما تريد. قد يعطيك بعض القرائن رغم ذلك.

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