1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
const DISPLAY_DEVICE_ACTIVE = DWORD($00000001); DISPLAY_DEVICE_MIRRORING_DRIVER = DWORD($00000008); DISPLAY_DEVICE_MODESPRUNED = DWORD($08000000); DISPLAY_DEVICE_PRIMARY_DEVICE = DWORD($00000004); DISPLAY_DEVICE_REMOVABLE = DWORD($00000020); DISPLAY_DEVICE_VGA_COMPATIBLE = DWORD($00000010);
type TDispFlag = record Bits: DWORD; Name: String; end;
TDisplayDevice = packed record cb: DWORD; DeviceName: array[0..31] of AnsiChar; DeviceString: array[0..127] of AnsiChar; StateFlags: DWORD; DeviceID: array[0..127] of AnsiChar; DeviceKey: array[0..127] of AnsiChar; end;
TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure ListBox1DblClick(Sender: TObject); private public end;
const DispFlags: array[0..5] of TDispFlag = ( (Bits: DISPLAY_DEVICE_ACTIVE; Name: 'DISPLAY_DEVICE_ACTIVE'), (Bits: DISPLAY_DEVICE_MIRRORING_DRIVER; Name: 'DISPLAY_DEVICE_MIRRORING_DRIVER'), (Bits: DISPLAY_DEVICE_MODESPRUNED; Name: 'DISPLAY_DEVICE_MODESPRUNED'), (Bits: DISPLAY_DEVICE_PRIMARY_DEVICE; Name: 'DISPLAY_DEVICE_PRIMARY_DEVICE'), (Bits: DISPLAY_DEVICE_REMOVABLE; Name: 'DISPLAY_DEVICE_REMOVABLE'), (Bits: DISPLAY_DEVICE_VGA_COMPATIBLE; Name: 'DISPLAY_DEVICE_VGA_COMPATIBLE') );
function EnumDisplayDevices(Unused: Pointer; iDevNum: DWORD; var lpDisplayDevice: TDisplayDevice; dwFlags: DWORD): BOOL; stdcall;
var Form1: TForm1;
implementation
{$R *.dfm}
function EnumDisplayDevices; external user32 name 'EnumDisplayDevicesA';
procedure TForm1.Button1Click(Sender: TObject); var DisplayDevice: TDisplayDevice; iDevNum: DWORD; begin DisplayDevice.cb := SizeOf(DisplayDevice); iDevNum:= 0; while EnumDisplayDevices(NIL, iDevNum, DisplayDevice, 0) do begin ListBox1.Items.Add(DisplayDevice.DeviceString); Inc(iDevNum); end; end;
procedure TForm1.ListBox1DblClick(Sender: TObject); var i: Integer; DisplayDevice: TDisplayDevice; tmp: String; begin DisplayDevice.cb := SizeOf(DisplayDevice); i := ListBox1.ItemIndex; if (i >= 0) then begin if EnumDisplayDevices(NIL, i, DisplayDevice, 0) then begin Memo1.Clear; Memo1.Lines.Add('DeviceName: '+DisplayDevice.DeviceName); Memo1.Lines.Add('DeviceString: '+DisplayDevice.DeviceString); Memo1.Lines.Add('StateFlags: '+IntToHex(DisplayDevice.StateFlags,8)); tmp := ''; for i := 0 to High(DispFlags) do if (DisplayDevice.StateFlags and DispFlags[i].Bits) <> 0 then tmp := tmp +DispFlags[i].Name +','; Memo1.Lines.Add('StateFlags: '+tmp); Memo1.Lines.Add('DeviceID: '+DisplayDevice.DeviceID); Memo1.Lines.Add('DeviceKey: '+DisplayDevice.DeviceKey); end else ShowMessage('Fehler bei EnumDisplayDevices('+IntToStr(i)+')!'); end; end;
end. |