Linux で Java JFrame アプリケーションを実行しており、画面の状態 (つまり、スクリーン セーバーがアクティブになっているかどうか) を確認する必要があります。System や Toolkit などの Java 組み込み関数を使用して画面のプロパティを確認し、スクリーンセーバーがアクティブになっているかどうかを確認する方法はありますか?
質問する
209 次
1 に答える
0
Java はシステム タスクを直接処理できません。これを行うには、JNI (Java Native Interface) または JNA (Java Native Access) を使用する必要があります。JNAライブラリを使用して、次のようにSystemParametersInfoシステム コールを呼び出してみてください。
次の例では、JNA が提供するwin32 の例のコードを使用しています。
public class JNATest {
public static void main(String[] args) {
W32API.UINT_PTR uiAction = new W32API.UINT_PTR(User32.SPI_GETSCREENSAVERRUNNING);
W32API.UINT_PTR uiParam = new W32API.UINT_PTR(0);
W32API.UINT_PTR fWinIni = new W32API.UINT_PTR(0);
PointerByReference pointer = new PointerByReference();
User32.INSTANCE.SystemParametersInfo(uiAction, uiParam, pointer, fWinIni);
//Is false if 0, is true if 1.
boolean running = pointer.getPointer().getByte(0) == 1;
System.out.println("Screen saver running: "+running);
}
}
public interface User32 extends W32API {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class, DEFAULT_OPTIONS);
long SPI_GETSCREENSAVERRUNNING = 0x0072;
boolean SystemParametersInfo(
UINT_PTR uiAction,
UINT_PTR uiParam,
PointerByReference pvParam,
UINT_PTR fWinIni
);
}
于 2013-06-25T14:44:21.970 に答える