5
Come trovare tutte le applicazioni in esecuzione nel desktop di Windows sono in stato ridotto al minimo usando java?Come trovare le applicazioni in esecuzione sono in stato ridotto al minimo usando java?
Come trovare tutte le applicazioni in esecuzione nel desktop di Windows sono in stato ridotto al minimo usando java?Come trovare le applicazioni in esecuzione sono in stato ridotto al minimo usando java?
È necessario prima downloadjna.jar e platform.jar e aggiungerli al classpath. Puoi capire le chiamate di sistema di Windows da fare guardando lo MSDN documentation.
Ecco il codice per enumerare su tutte le finestre ridotte a icona:
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinUser.WINDOWINFO;
import com.sun.jna.platform.win32.WinUser.WNDENUMPROC;
public class Minimized {
private static final int MAX_TITLE_LENGTH = 1024;
private static final int WS_ICONIC = 0x20000000;
public static void main(String[] args) throws Exception {
User32.EnumWindows(new WNDENUMPROC() {
@Override
public boolean callback(HWND arg0, Pointer arg1) {
WINDOWINFO info = new WINDOWINFO();
User32.GetWindowInfo(arg0, info);
// print out the title of minimized (WS_ICONIC) windows
if ((info.dwStyle & WS_ICONIC) == WS_ICONIC) {
byte[] buffer = new byte[MAX_TITLE_LENGTH];
User32.GetWindowTextA(arg0, buffer, buffer.length);
String title = Native.toString(buffer);
System.out.println("Minimized window = " + title);
}
return true;
}
}, 0);
}
static class User32 {
static { Native.register("user32"); }
static native boolean EnumWindows(WNDENUMPROC wndenumproc, int lParam);
static native void GetWindowTextA(HWND hWnd, byte[] buffer, int buflen);
static native boolean GetWindowInfo(HWND hWnd, WINDOWINFO lpwndpl);
}
}