/* class DisplaySettingsApplet for IE browsers uses J/Direct to enumerate all display modes of default display device. M. Gallant 11/14/2001 */ import java.awt.*; import com.ms.security.*; import com.ms.dll.DllLib; import com.ms.win32.*; public class DisplaySettingsApplet extends java.applet.Applet { StringBuffer strb = new StringBuffer(8192) ; // 8 Kbyte buffer TextArea ta = new TextArea(25, 80) ; public void init() { add(ta) ; try { if (Class.forName("com.ms.security.PolicyEngine") != null) // get permissions PolicyEngine.assertPermission(PermissionID.SYSTEM); doDisplayEnum() ; } catch (Throwable cnfe) { } } private void doDisplayEnum() { String devicename = ""; DEVMODE devmode = new DEVMODE() ; devmode.dmSize =(short) DllLib.sizeOf(DEVMODE.class); devmode.dmDriverExtra = 0; int mode=0; ta.setText("---------------- Modes of Display Adapter --------------------------\n\n") ; ta.append("Current Settings: \n") ; EnumDisplaySettings(null, win.ENUM_CURRENT_SETTINGS, devmode) ; // get current display settings for default device devicename = devmode.dmDeviceName; ta.append("Device Name: " + devicename + "\n") ; ta.append( " Width: " + devmode.dmPelsWidth + " " + "Height: " + devmode.dmPelsHeight + " " + "Bits/pixel: " + devmode.dmBitsPerPel + " " + "Frequency: " + devmode.dmDisplayFrequency + "\n\n") ; ta.append("------------ Available Settings --------------------\n") ; while (EnumDisplaySettings(null, mode, devmode)) { if(! devmode.dmDeviceName.equals(devicename)) { devicename = devmode.dmDeviceName ; ta.append("\nDevice Name: " + devicename + "\n") ; } ta.append(mode + " Width: " + devmode.dmPelsWidth + " " + "Height: " + devmode.dmPelsHeight + " " + "Bits/pixel: " + devmode.dmBitsPerPel + " " + "Frequency: " + devmode.dmDisplayFrequency + "\n") ; mode++; } } public void paint(Graphics g) { // black border around applet panel g.setColor(Color.black) ; g.drawRect(0,0,this.getSize().width-1, this.getSize().height-1) ; } /** @dll.import("USER32") */ private static native boolean EnumDisplaySettings(String lpszDeviceName, int iModeNum, DEVMODE lpDevMode) ; } /** @dll.struct() */ class DEVMODE { /** @dll.structmap([type=TCHAR[32]]) */ public String dmDeviceName; public short dmSpecVersion; public short dmDriverVersion; public short dmSize; public short dmDriverExtra; public int dmFields; public short dmOrientation; public short dmPaperSize; public short dmPaperLength; public short dmPaperWidth; public short dmScale; public short dmCopies; public short dmDefaultSource; public short dmPrintQuality; public short dmColor; public short dmDuplex; public short dmYResolution; public short dmTTOption; public short dmCollate; /** @dll.structmap([type=TCHAR[32]]) */ public String dmFormName; public short dmLogPixels; public int dmBitsPerPel; public int dmPelsWidth; public int dmPelsHeight; public int dmDisplayFlags; public int dmDisplayFrequency; public int dmICMMethod; public int dmICMIntent; public int dmMediaType; public int dmDitherType; public int dmICCManufacturer; public int dmICCModel; public int dmPanningWidth; public int dmPanningHeight; }