gpt4 book ai didi

Java 检测 Windows 上的非 Activity 状态

转载 作者:行者123 更新时间:2023-12-04 04:41:14 24 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




我找到了以下代码来检测不活动;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.sun.jna.*;
import com.sun.jna.win32.*;
import java.util.List;

/**
* Utility method to retrieve the idle time on Windows and sample code to test it.
* JNA shall be present in your classpath for this to work (and compile).
* @author ochafik
*/
public class Win32IdleTime {

public interface Kernel32 extends StdCallLibrary {
Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);

/**
* Retrieves the number of milliseconds that have elapsed since the system was started.
* @see http://msdn2.microsoft.com/en-us/library/ms724408.aspx
* @return number of milliseconds that have elapsed since the system was started.
*/
public int GetTickCount();
};

public interface User32 extends StdCallLibrary {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);

/**
* Contains the time of the last input.
* @see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputstructures/lastinputinfo.asp
*/
public static class LASTINPUTINFO extends Structure {
public int cbSize = 8;

/// Tick count of when the last input event was received.
public int dwTime;

@
Override
protected List getFieldOrder() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}

/**
* Retrieves the time of the last input event.
* @see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/getlastinputinfo.asp
* @return time of the last input event, in milliseconds
*/
public boolean GetLastInputInfo(LASTINPUTINFO result);
};

/**
* Get the amount of milliseconds that have elapsed since the last input event
* (mouse or keyboard)
* @return idle time in milliseconds
*/
public static int getIdleTimeMillisWin32() {
User32.LASTINPUTINFO lastInputInfo = new User32.LASTINPUTINFO();
User32.INSTANCE.GetLastInputInfo(lastInputInfo);
return Kernel32.INSTANCE.GetTickCount() - lastInputInfo.dwTime;
}

enum State {
UNKNOWN, ONLINE, IDLE, AWAY
};

public static void main(String[] args) {
if (!System.getProperty("os.name").contains("Windows")) {
System.err.println("ERROR: Only implemented on Windows");
System.exit(1);
}
State state = State.UNKNOWN;
DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");

for (;;) {
int idleSec = getIdleTimeMillisWin32() / 1000;

State newState =
idleSec < 30 ? State.ONLINE :
idleSec > 5 * 60 ? State.AWAY : State.IDLE;

if (newState != state) {
state = newState;
System.out.println(dateFormat.format(new Date()) + " # " + state);
}
try {
Thread.sleep(1000);
} catch (Exception ex) {}
}
}
}

但由于某种原因,我收到以下错误:
java.lang.UnsupportedOperationException: Not supported yet.

有什么想法可以解决这个问题吗?

最佳答案

你有一个名为 LASTINPUTINFO 的类它扩展了抽象类 com.sun.jna.Structure .正如 Stewart 和 Jim Garrison 所评论的,您对 getFieldOrder 的实现方法是抛出 UnsupportedOperationException异常(exception)。此方法实现可能是由您的 IDE 自动生成的。
当调用此方法以按正确顺序获取结构的字段名称时,将引发异常。

/**
* Contains the time of the last input.
* @see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputstructures/lastinputinfo.asp
*/
public static class LASTINPUTINFO extends Structure {
public int cbSize = 8;

/// Tick count of when the last input event was received.
public int dwTime;

@
Override
protected List getFieldOrder() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}

您可以通过正确实现 getFieldOrder 来解决此问题。方法。

关于Java 检测 Windows 上的非 Activity 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18859887/

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