gpt4 book ai didi

java - JNA - 如何调用系统函数? (旋转,屏幕关闭)

转载 作者:行者123 更新时间:2023-12-02 06:23:48 25 4
gpt4 key购买 nike

我对 JNA 接口(interface)(?库?)完全陌生 - 但我发现一些系统功能只能通过 JNA 在 Java 中访问。我想做一些显示的东西,即旋转和关闭显示器。对于这两个功能,我必须调用一些系统功能 - 对于关闭监视器,我找到了 link以及旋转 link 。但说实话,我不知道如何从其中一个开始。

有人可以给出如何开始响应的想法吗?如何实现?

最佳答案

好吧,我必须尝试打开和关闭显示器,它成功了!太酷了!

import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinDef.LPARAM;
import com.sun.jna.platform.win32.WinDef.LRESULT;
import com.sun.jna.platform.win32.WinDef.WPARAM;
import com.sun.jna.platform.win32.WinUser;
import com.sun.jna.win32.StdCallLibrary;

public class TurnOffMonitor {
public interface User32 extends StdCallLibrary {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);
int SC_MONITORPOWER = 0xF170;
int SC_MONITOR_OFF = 2;
int SC_MONITOR_ON = -1;

LRESULT SendMessageA(HWND paramHWND, int paramInt, WPARAM paramWPARAM,
LPARAM paramLPARAM);

LRESULT SendMessageA(HWND paramHWND, int paramInt, int paramInt2,
LPARAM paramLPARAM);
}

private static final long SLEEP_TIME = 4 * 1000; // 4 seconds

public static void main(String[] args) {
final User32 user32 = User32.INSTANCE;
System.out.println("Foo");

user32.SendMessageA(WinUser.HWND_BROADCAST, WinUser.WM_SYSCOMMAND,
User32.SC_MONITORPOWER, new LPARAM(User32.SC_MONITOR_OFF));

try {
Thread.sleep(SLEEP_TIME);
} catch (InterruptedException e) {}

user32.SendMessageA(WinUser.HWND_BROADCAST, WinUser.WM_SYSCOMMAND,
User32.SC_MONITORPOWER, new LPARAM(User32.SC_MONITOR_ON));

}
}

关于java - JNA - 如何调用系统函数? (旋转,屏幕关闭),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20775652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com