teil 2
'werte für devmode.dmFields
<Flags()> _
Enum DM As Integer
Orientation = &H1
PaperSize = &H2
PaperLength = &H4
PaperWidth = &H8
Scale = &H10
Position = &H20I
NUP = &H40
DisplayOrientation = &H80
Copies = &H100
DefaultSource = &H200
PrintQuality = &H400
Color = &H800
Duplex = &H1000
YResolution = &H2000
TTOption = &H4000
Collate = &H8000
FormName = &H10000
LogPixels = &H20000
BitsPerPixel = &H40000
PelsWidth = &H80000
PelsHeight = &H100000
DisplayFlags = &H200000
DisplayFrequency = &H400000
ICMMethod = &H800000
ICMIntent = &H1000000
MediaType = &H2000000
DitherType = &H4000000
PanningWidth = &H8000000
PanningHeight = &H10000000
DisplayFixedOutput = &H20000000
End Enum
'rückgabewert der Funktion ChangeDisplaySettingsEx
Enum DISP_CHANGE As Integer
Successful = 0
Restart = 1
Failed = -1
BadMode = -2
NotUpdated = -3
BadFlags = -4
BadParam = -5
BadDualView = -1
End Enum
'wird noch nicht genutzt vlt später mal
'für das struct DISPLAY_DEVICE und somit für die Funktion EnumDisplayDevices
<Flags()> _
Enum DisplayDeviceStateFlags As Integer
AttachedToDesktop = &H1
MultiDriver = &H2
PrimaryDevice = &H4
MirroringDriver = &H8
VGACompatible = &H16
Removable = &H20
ModesPruned = &H8000000
Remote = &H4000000
Disconnect = &H2000000
End Enum
'für die Funktion EnumDisplayDevices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
Public Structure DISPLAY_DEVICE
<MarshalAs(UnmanagedType.U4)> _
Public cb As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
Public DeviceName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)> _
Public DeviceString As String
<MarshalAs(UnmanagedType.U4)> _
Public StateFlags As DisplayDeviceStateFlags
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)> _
Public DeviceID As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)> _
Public DeviceKey As String
End Structure
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Dim par = Environment.GetCommandLineArgs()
'RichTextBox1.Text = par
Dim returnval As Long
Dim dev, dev1 As DEVMODE
Dim i, monitore As Long
Dim d As DISPLAY_DEVICE
dev.dmSize = Len(dev)
dev.dmFields = DM_BITSPERPEL Or DM_PELSWIDTH Or DM_PELSHEIGHT Or _
DM_DISPLAYFREQUENCY Or DM_DISPLAYFLAGS Or DM.Position Or _
DM.DisplayFlags
'wie viele monitore?
d.cb = Marshal.SizeOf(d)
Do While EnumDisplayDevices(Nothing, i, d, 0) << 0
RichTextBox1.Text = RichTextBox1.Text & d.DeviceName & " | " & _
d.StateFlags & " | " & vbCrLf
i = i + 1
Loop
'wie viele monitore keine virtuellen
i = 1
Do While EnumDisplaySettings("\\.\DISPlAY" & i, 0, dev) << 0
monitore = CStr(i)
i = i + 1
Loop
EnumDisplaySettings("\\.\DISPlAY2", 0, dev)
dev.dmPelsWidth = 1600
dev.dmPelsHeight = 1200
dev.dmDisplayFrequency = 60
dev.dmBitsPerPel = 32
'dev.dmDisplayFlags = 32
'dev.dmDisplayFlags = 0
dev.dmPositionX = 0
dev.dmPositionY = Screen.PrimaryScreen.Bounds.Bottom
dev.dmPosition.x = 0
dev.dmPosition.y = Screen.PrimaryScreen.Bounds.Bottom
Dim lResult As Integer
lResult = ChangeDisplaySettingsEx("\\.\DISPLAY2", dev, IntPtr.Zero, _
CDS_TEST, IntPtr.Zero)
If lResult = 0 Then ChangeDisplaySettingsEx("\\.\DISPLAY2", dev, _
IntPtr.Zero, CDS_RESET, IntPtr.Zero) 'MsgBox("juhuuu")
End Sub |