import sun.print.Win32PrintServiceLookup;

import java.lang.reflect.Method;
import java.util.Arrays;

public class PrinterTest {

    public static void main(String[] args) throws Exception {
        Win32PrintServiceLookup lookup =
Win32PrintServiceLookup.getWin32PrintLUS();

        Method getAllPrinterNames =
Win32PrintServiceLookup.class.getDeclaredMethod("getAllPrinterNames");
        getAllPrinterNames.setAccessible(true);

        String[] printerNames = null;

        while (true) {
            Object names = getAllPrinterNames.invoke(lookup);
            if (names instanceof String[]) {
                if (!Arrays.equals(printerNames, (String[]) names)) {
                    System.out.println("printerNames = " +
Arrays.toString((String[]) names));
                }
                printerNames = (String[]) names;
            }
        }
    }
}