2012-07-04 33 views

回答

4

您需要首先downloadjna.jarplatform.jar並將它們添加到您的類路徑中。您可以通過查看MSDN documentation來計算出Windows系統調用。

下面是列舉了所有最小化的窗口代碼:

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); 
    } 
} 
相關問題